︙ | | | ︙ | |
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# If implemented, enables the log feature when comparing revisions.
# View log between displayed versions
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 ""} {
|
>
|
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
# If implemented, enables the log feature when comparing revisions.
# View log between displayed versions
namespace eval eskil::rev::CVS {}
namespace eval eskil::rev::RCS {}
namespace eval eskil::rev::CT {}
namespace eval eskil::rev::GIT {}
namespace eval eskil::rev::FOSSIL {}
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 ""} {
|
︙ | | | ︙ | |
171
172
173
174
175
176
177
178
179
180
181
182
183
184
|
# Git, detect two steps down. Could be improved. FIXA
if {[file isdirectory [file join $dir .git]] ||
[file isdirectory [file join $dir .. .git]] ||
[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 }
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
|
# Git, detect two steps down. Could be improved. FIXA
if {[file isdirectory [file join $dir .git]] ||
[file isdirectory [file join $dir .. .git]] ||
[file isdirectory [file join $dir .. .. .git]]} {
if {[auto_execok git] ne ""} {
return 1
}
}
return 0
}
proc eskil::rev::FOSSIL::detect {file} {
if {$file eq ""} {
set dir [pwd]
} else {
set dir [file dirname $file]
}
# Fossil, detect three steps down. Could be improved. FIXA
if {[file exists [file join $dir _FOSSIL_]] ||
[file exists [file join $dir .. _FOSSIL_]] ||
[file exists [file join $dir .. .. _FOSSIL_]] ||
[file exists [file join $dir .. .. .. _FOSSIL_]]} {
if {[auto_execok fossil] 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 }
|
︙ | | | ︙ | |
415
416
417
418
419
420
421
422
423
424
425
426
427
428
|
if {[catch {eval $cmd} res]} {
tk_messageBox -icon error -title "GIT error" -message $res
return ""
}
return $res
}
# Get a ClearCase revision
proc eskil::rev::CT::get {filename outfile rev} {
set filerev [file nativename $filename@@$rev]
if {[catch {exec cleartool get -to $outfile $filerev} msg]} {
tk_messageBox -icon error -title "Cleartool error" -message $msg
return
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
|
if {[catch {eval $cmd} res]} {
tk_messageBox -icon error -title "GIT error" -message $res
return ""
}
return $res
}
# Get a FOSSIL revision
# No support for revisions yet
proc eskil::rev::FOSSIL::get {filename outfile rev} {
set old [pwd]
set dir [file dirname $filename]
set tail [file tail $filename]
# Locate the top directory
while {![file exists $dir/_FOSSIL_]} {
set thisdir [file tail $dir]
set dir [file dirname $dir]
set tail [file join $thisdir $tail]
}
cd $dir
if {$rev eq "HEAD"} {
catch {exec fossil finfo -p $tail > $outfile}
} else {
catch {exec fossil finfo -p $tail -r $rev > $outfile}
}
cd $old
}
# Get a FOSSIL patch
proc eskil::rev::FOSSIL::getPatch {revs} {
set cmd [list exec fossil diff]
# No rev support yet
if {[catch {eval $cmd} res]} {
tk_messageBox -icon error -title "FOSSIL error" -message $res
return ""
}
return $res
}
# Get a ClearCase revision
proc eskil::rev::CT::get {filename outfile rev} {
set filerev [file nativename $filename@@$rev]
if {[catch {exec cleartool get -to $outfile $filerev} msg]} {
tk_messageBox -icon error -title "Cleartool error" -message $msg
return
|
︙ | | | ︙ | |
536
537
538
539
540
541
542
543
544
545
546
547
548
549
|
set result ""
foreach rev $revs {
switch -glob -- $rev {
HEAD - master - * { # Let anything through for now
lappend result $rev
}
}
}
if {[llength $result] == 0} {
set result [list HEAD]
}
return $result
}
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
|
set result ""
foreach rev $revs {
switch -glob -- $rev {
HEAD - master - * { # Let anything through for now
lappend result $rev
}
}
}
if {[llength $result] == 0} {
set result [list HEAD]
}
return $result
}
# Figure out FOSSIL revision from arguments
proc eskil::rev::FOSSIL::ParseRevs {filename revs} {
set result ""
foreach rev $revs {
switch -glob -- $rev {
HEAD - master - * { # Let anything through for now FIXA
lappend result $rev
}
}
}
if {[llength $result] == 0} {
set result [list HEAD]
}
return $result
}
|
︙ | | | ︙ | |
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
|
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
|
|
|
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
|
if {![file exists $file]} { return "" }
if {[info exists cache($file)]} {
return $cache($file)
}
}
set searchlist [list $preference GIT FOSSIL 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
|
︙ | | | ︙ | |