︙ | | | ︙ | |
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
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 {}
proc eskil::rev::CVS::detect {file} {
set dir [file dirname $file]
if {[file isdirectory [file join $dir CVS]]} {
if {[auto_execok cvs] ne ""} {
return 1
}
}
return 0
}
proc eskil::rev::SVN::detect {file} {
set dir [file dirname $file]
if {[file isdirectory [file join $dir .svn]]} {
if {[auto_execok svn] ne ""} {
return 1
}
}
return 0
}
proc eskil::rev::RCS::detect {file} {
set dir [file dirname $file]
if {[file isdirectory [file join $dir RCS]] || [file exists $file,v]} {
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
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 {}
proc eskil::rev::CVS::detect {file} {
set dir [file dirname $file]
if {[file isdirectory [file join $dir CVS]]} {
if {[auto_execok cvs] ne ""} {
return 1
}
}
return 0
}
proc eskil::rev::SVN::detect {file} {
set dir [file dirname $file]
if {[file isdirectory [file join $dir .svn]]} {
if {[auto_execok svn] ne ""} {
return 1
}
}
return 0
}
proc eskil::rev::HG::detect {file} {
set dir [file dirname $file]
# HG, detect two steps down. Could be improved. FIXA
if {[file isdirectory [file join $dir .hg]] ||
[file isdirectory [file join $dir .. .hg]] ||
[file isdirectory [file join $dir .. .. .hg]]} {
if {[auto_execok hg] ne ""} {
return 1
}
}
return 0
}
proc eskil::rev::RCS::detect {file} {
set dir [file dirname $file]
if {[file isdirectory [file join $dir RCS]] || [file exists $file,v]} {
|
︙ | | | ︙ | |
152
153
154
155
156
157
158
159
160
161
162
163
164
165
|
}
lappend cmd [file nativename $filename] > $outfile
if {[catch {eval $cmd} res]} {
if {![string match "*Checking out*" $res]} {
tk_messageBox -icon error -title "SVN error" -message $res
}
}
if {$old != ""} {
cd $old
}
}
# Get an RCS revision
|
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
|
166
167
168
169
170
171
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
204
205
206
|
}
lappend cmd [file nativename $filename] > $outfile
if {[catch {eval $cmd} res]} {
if {![string match "*Checking out*" $res]} {
tk_messageBox -icon error -title "SVN error" -message $res
}
}
if {$old != ""} {
cd $old
}
}
# Get a HG revision
proc eskil::rev::HG::get {filename outfile rev} {
set old ""
set dir [file dirname $filename]
if {$dir != "."} {
set old [pwd]
set outfile [file join [pwd] $outfile]
cd $dir
set filename [file tail $filename]
}
set cmd [list exec hg cat]
if {$rev != ""} {
lappend cmd -r $rev
}
lappend cmd [file nativename $filename] > $outfile
if {[catch {eval $cmd} res]} {
if {$res ne ""} {
tk_messageBox -icon error -title "HG error" -message $res
}
}
if {$old != ""} {
cd $old
}
}
# Get an RCS revision
|
︙ | | | ︙ | |
263
264
265
266
267
268
269
270
271
272
273
274
275
276
|
}
}
if {[llength $result] == 0} {
set result [list HEAD]
}
return $result
}
# Figure out CVS revision from arguments
proc eskil::rev::CVS::ParseRevs {filename revs} {
set result {}
foreach rev $revs {
# An integer rev is a relative rev
if {[string is integer -strict $rev]} {
|
>
>
>
>
>
>
>
>
>
>
|
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
|
}
}
if {[llength $result] == 0} {
set result [list HEAD]
}
return $result
}
# Figure out HG revision from arguments
proc eskil::rev::HG::ParseRevs {filename revs} {
set result ""
foreach rev $revs {
# No parsing yet...
lappend result $rev
}
return $result
}
# Figure out CVS revision from arguments
proc eskil::rev::CVS::ParseRevs {filename revs} {
set result {}
foreach rev $revs {
# An integer rev is a relative rev
if {[string is integer -strict $rev]} {
|
︙ | | | ︙ | |
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
|
if {![file exists $file]} { return "" }
if {[info exists cache($file)]} {
return $cache($file)
}
set searchlist [list $preference]
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
|
|
|
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
|
if {![file exists $file]} { return "" }
if {[info exists cache($file)]} {
return $cache($file)
}
set searchlist [list $preference GIT HG]
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
|
︙ | | | ︙ | |