Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Perforce support |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
5202d19e40a30c2d09471c1ec660a4fd |
User & Date: | peter 2009-02-12 19:32:13.000 |
Context
2009-10-16
| ||
22:19 | Return in rev field does a redo diff. [FR 4649] Allow zero lines of context to only show diffs. check-in: 9bb4874b85 user: peter tags: trunk | |
2009-02-12
| ||
19:32 | Perforce support check-in: 5202d19e40 user: peter tags: trunk | |
19:11 | More 8.5 features used: lassign instead of foreach. lrepeat+lreverse Math commands for some expressions. check-in: ace521ad0a user: peter tags: trunk | |
Changes
Changes to Changes.
1 2 3 4 5 6 7 8 9 | 2009-02-12 Allow stepping down in directory diff. 2009-01-23 Don't save unchanged preferences to prefs file. Better documentation for plugins. Added plugin dump. Release 2.4 | > > | 1 2 3 4 5 6 7 8 9 10 11 | 2009-02-12 Allow stepping down in directory diff. Require 8.5. Misc cleanup to use that fact. Perforce support. (Elliot) 2009-01-23 Don't save unchanged preferences to prefs file. Better documentation for plugins. Added plugin dump. Release 2.4 |
︙ | ︙ |
Changes to src/rev.tcl.
︙ | ︙ | |||
66 67 68 69 70 71 72 73 74 75 76 77 78 79 | namespace eval eskil::rev::CVS {} namespace eval eskil::rev::RCS {} namespace eval eskil::rev::CT {} namespace eval eskil::rev::GIT {} namespace eval eskil::rev::SVN {} namespace eval eskil::rev::HG {} namespace eval eskil::rev::BZR {} proc eskil::rev::CVS::detect {file} { if {$file eq ""} { set dir [pwd] } else { set dir [file dirname $file] } | > | 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | namespace eval eskil::rev::CVS {} namespace eval eskil::rev::RCS {} namespace eval eskil::rev::CT {} namespace eval eskil::rev::GIT {} namespace eval eskil::rev::SVN {} namespace eval eskil::rev::HG {} namespace eval eskil::rev::BZR {} namespace eval eskil::rev::P4 {} proc eskil::rev::CVS::detect {file} { if {$file eq ""} { set dir [pwd] } else { set dir [file dirname $file] } |
︙ | ︙ | |||
173 174 175 176 177 178 179 180 181 182 183 184 185 186 | [file isdirectory [file join $dir .. .. .git]]} { if {[auto_execok git] ne ""} { return 1 } } return 0 } # Get a CVS revision proc eskil::rev::CVS::get {filename outfile rev} { set old "" set dir [file dirname $filename] if {$dir != "."} { set old [pwd] | > > > > > > > > | 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 | [file isdirectory [file join $dir .. .. .git]]} { if {[auto_execok git] ne ""} { return 1 } } return 0 } proc eskil::rev::P4::detect {file} { if {[auto_execok icmp4] != ""} { if {[catch {exec csh -c "icmp4 have $file"} p4have]} { return 0 } if {[lindex $p4have 1] eq "-"} { return 1 } } return 0 } # Get a CVS revision proc eskil::rev::CVS::get {filename outfile rev} { set old "" set dir [file dirname $filename] if {$dir != "."} { set old [pwd] |
︙ | ︙ | |||
405 406 407 408 409 410 411 412 413 414 415 416 417 418 | } # Get a CT patch proc eskil::rev::CT::getPatch {revs} { # Not supported yet return "" } # Return current revision of a CVS file proc eskil::rev::CVS::GetCurrent {filename} { set old "" set dir [file dirname $filename] if {$dir != "."} { set old [pwd] | > > > > > > > > > | 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 | } # Get a CT patch proc eskil::rev::CT::getPatch {revs} { # Not supported yet return "" } # Get a P4 revision proc eskil::rev::P4::get {filename outfile rev} { set dir [file dirname $filename] if {[catch {exec csh -c "icmp4 print -q $filename\\#$rev" > $outfile} msg]} { tk_messageBox -icon error -title "P4 error" -message $msg return } } # Return current revision of a CVS file proc eskil::rev::CVS::GetCurrent {filename} { set old "" set dir [file dirname $filename] if {$dir != "."} { set old [pwd] |
︙ | ︙ | |||
585 586 587 588 589 590 591 | # Figure out ClearCase revision from arguments proc eskil::rev::CT::ParseRevs {filename revs} { if {$filename eq ""} { # CT does not support tree versions return {} } | | < > > > | 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 | # Figure out ClearCase revision from arguments proc eskil::rev::CT::ParseRevs {filename revs} { if {$filename eq ""} { # CT does not support tree versions return {} } lassign [eskil::rev::CT::current $filename] stream latest if {[llength $revs] == 0} { return [list [file join $stream $latest]] } set result {} foreach rev $revs { # A negative version number is offset from latest. set offset 0 set tail [file tail $rev] if {[string is integer -strict $tail] && $tail < 0} { set offset $tail if {$offset == -1} { # Predecessor return [exec cleartool describe -fmt %PSn $filename] } set rev [file dirname $rev] } # If the argument is of the form "name/rev", look for a fitting one if {![string is integer $rev] && [regexp {^[^/.]+(/\d+)?$} $rev]} { if {[catch {exec cleartool lshistory -short $filename} allrevs]} {# tk_messageBox -icon error -title "Cleartool error" \ -message $allrevs |
︙ | ︙ | |||
639 640 641 642 643 644 645 646 647 648 649 650 651 652 | if {[string is integer -strict $tail] && $offset < 0} { set path [file dirname $rev] set tail [expr {$tail + $offset}] if {$tail < 0} {set tail 0} set rev [file join $path $tail] } lappend result $rev } return $result } # Check in CVS controlled file proc eskil::rev::CVS::commitFile {top filename} { set logmsg [LogDialog $top $filename] | > > > > > > > > > > > > > > > > > > > | 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 | if {[string is integer -strict $tail] && $offset < 0} { set path [file dirname $rev] set tail [expr {$tail + $offset}] if {$tail < 0} {set tail 0} set rev [file join $path $tail] } lappend result $rev } return $result } proc eskil::rev::P4::ParseRevs {filename revs} { if {$revs == ""} { set revs -1 } foreach rev $revs { if {[string is digit $rev]} { lappend result $rev } else { if {[catch {exec csh -c "icmp4 files $filename"} res]} { tk_messageBox -icon error \ -message "Failed p4 files filename: $thisrev" exit } regexp {\#(\d+)} [file tail $res] -> res if {$rev != ""} { incr res $rev } lappend result $res } } return $result } # Check in CVS controlled file proc eskil::rev::CVS::commitFile {top filename} { set logmsg [LogDialog $top $filename] |
︙ | ︙ | |||
721 722 723 724 725 726 727 | if {![file exists $file]} { return "" } if {[info exists cache($file)]} { return $cache($file) } } | | | 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 | if {![file exists $file]} { return "" } if {[info exists cache($file)]} { return $cache($file) } } set searchlist [list $preference GIT HG BZR P4] foreach ns [namespace children eskil::rev] { lappend searchlist [namespace tail $ns] } foreach rev $searchlist { set result [eskil::rev::${rev}::detect $file] if {$result} { set cache($file) $rev |
︙ | ︙ |