From e54cd1ad3fc7f4557b8aa3dafec61180323dde66 Mon Sep 17 00:00:00 2001 From: zimoch <zimoch> Date: Tue, 3 Aug 2010 08:41:28 +0000 Subject: [PATCH] fixed: problem when current dir was not in CVS --- App/tools/getVersion.tcl | 37 +++++++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/App/tools/getVersion.tcl b/App/tools/getVersion.tcl index 78a8eea3..aa7f906c 100755 --- a/App/tools/getVersion.tcl +++ b/App/tools/getVersion.tcl @@ -6,6 +6,16 @@ set global_context [scancontext create] set file_context [scancontext create] set skip_context [scancontext create] +scanmatch $global_context {no such directory `(.*)'} { + puts stderr "checking directory $matchInfo(submatch0): so such directory => version test" + return +} + +scanmatch $global_context {there is no version here} { + puts stderr "checking current directory: not in cvs => version test" + return +} + scanmatch $global_context {^File: .*Up-to-date} { set file [lindex $matchInfo(line) 1] puts -nonewline stderr "checking $file: " @@ -88,21 +98,24 @@ scanmatch $file_context {=================} { return } -#cvs bug: calling cvs status for files in other directories spoils status information for local files. -#fix: make localfiles non-local: x -> ../dir/x -set dir ../[file tail [pwd]] -set files $dir +# cvs bug: calling cvs status for files in other directories spoils status +# information for local files. +# fix: check local and non local files separately + +set cvsstatus [open "|cvs status -l -v 2>@ stdout"] +scanfile $global_context $cvsstatus +if [catch {close $cvsstatus}] {set version test} + +set files {} foreach file $argv { - if {[file tail $file] == $file} { - lappend files $dir/$file - } else { + if {[file tail $file] != $file} { lappend files $file } } - -set cvsstatus [open "|cvs status -l -v $files 2>/dev/null"] -scanfile $global_context $cvsstatus -close $cvsstatus - +if [llength $files] { + set cvsstatus [open "|cvs status -l -v $files 2>@ stdout"] + scanfile $global_context $cvsstatus + if [catch {close $cvsstatus}] {set version test} +} if {![info exists version]} {set version test} puts $version -- GitLab