659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
|
# Return revision list of a GIT file
proc eskil::rev::GIT::GetRevList {filename} {
set old ""
set cmd [list exec git log --first-parent --oneline -n 50]
if {$filename eq ""} {
# Nothing
} else {
set old [pwd]
cd [file dirname $filename]
lappend cmd [file nativename [file tail $filename]]
}
if {[catch {eval $cmd} res]} {
# What to do here?
set revs [list HEAD]
} else {
set lines [split $res \n]
set revs {}
foreach line $lines {
if {[regexp {^(\w+)} $line -> rev]} {
lappend revs $rev
|
>
>
>
>
|
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
|
# Return revision list of a GIT file
proc eskil::rev::GIT::GetRevList {filename} {
set old ""
set cmd [list exec git log --first-parent --oneline -n 50]
if {$filename eq ""} {
# Nothing
} elseif {[file isdirectory $filename]} {
set old [pwd]
cd $filename
} else {
set old [pwd]
cd [file dirname $filename]
lappend cmd [file nativename [file tail $filename]]
}
if {[catch {eval $cmd} res]} {
# What to do here?
puts "ERROR for '$filename' $res"
set revs [list HEAD]
} else {
set lines [split $res \n]
set revs {}
foreach line $lines {
if {[regexp {^(\w+)} $line -> rev]} {
lappend revs $rev
|
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
|
foreach rev $revs {
# Special cases that shortcuts to GIT special names
if {$rev eq "_" || $rev eq "0"} {set rev HEAD}
if {[string is integer -strict $rev] && $rev < 0} {
# A negative integer rev is a relative rev
set revList [eskil::rev::GIT::GetRevList $filename]
set rev [lindex $revList [- $rev]]
if {$rev eq ""} {
set rev [lindex $revs end]
}
}
# Let anything else through
lappend result $rev
|
|
|
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
|
foreach rev $revs {
# Special cases that shortcuts to GIT special names
if {$rev eq "_" || $rev eq "0"} {set rev HEAD}
if {[string is integer -strict $rev] && $rev < 0} {
# A negative integer rev is a relative rev
set revList [eskil::rev::GIT::GetRevList $filename]
set rev [lindex $revList [- $rev]]
if {$rev eq ""} {
set rev [lindex $revs end]
}
}
# Let anything else through
lappend result $rev
|