I mixed that with the Fast Search Modified, so now it can recurse down the
directory tree...
----- Original Message -----
From: "Hans Schmid" <[EMAIL PROTECTED]>
To: "Lars-Christian Schulze" <[EMAIL PROTECTED]>
Cc: "Info-Cvs" <[EMAIL PROTECTED]>
Sent: Wednesday, June 21, 2000 7:54 PM
Subject: RE: Please help: WinCVS: Tcl script looking for locked files
> Thanks very much, Lars-Christian !!
>
> I managed to get your script to work with WinCVS.
>
> There seems to be a bug in the internal WinCVS command used in the
original
> script.
>
> So here for all of you the WinCVS version (which i enhanced for
> multiselected files):
>
>
> #!CVSGUI1.0 --selection --name "Locked Files"
>
> proc report_locks {name} {
> global cvs
> global cvscfg
> global cwd
> upvar linenum linenum
>
> set linenum 1
>
> set commandline "cvs -l log $name"
> catch {eval "exec $commandline"} view_this
>
> set filelist ""
> set found "f"
> set view_lines [split $view_this "\n"]
>
> foreach line $view_lines {
> if {[string match "Working file: *" $line]} {
> regsub "Working file: " $line "" filename
> lappend filelist $filename
> set locklist($filename) ""
> }
> if {[string match "*locked by*" $line]} {
> lappend locklist($filename) $line
> set found "t"
> }
> }
>
> incr linenum 2
>
> if { $found == "t" } {
> foreach filename $filelist {
> if { [llength $locklist($filename)] > 0 } {
> cvsout [format "\n %s:\n" $filename]
> incr linenum
> foreach rev $locklist($filename) {
> cvsout [format " %s\n" $rev]
> incr linenum
> }
> }
> }
> } else {
> incr linenum 2
> }
>
>
> }
>
> set selList [cvsbrowser get]
> set selSize [llength $selList]
>
> cvsout "\nLocked files:\n"
> cvsout "--------------------\n"
> for {set i 0} {$i < $selSize} {incr i} {
> set file [lindex $selList $i]
> report_locks $file
> }
> cvsout "\n--------------------\n"
> cvsout "Checking for locks finished\n\n"
>
>
>
>
>
> Cheers, Hans
>
>
>
>
> -----Original Message-----
> From: Lars-Christian Schulze [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, June 21, 2000 1:03 PM
> To: Hans Schmid
> Cc: Info-Cvs
> Subject: Re: Please help: WinCVS: Tcl script looking for locked files
>
>
> On Wed, 21 Jun 2000, Hans Schmid wrote:
>
> > Hi all,
> >
> > I am looking for a Tcl script to check, if files are locked by somebody
> > (using strict locking)
> > I modified the SelectionTest.tcl script coming with WinCVS 1.1b14 to
show
> > the $fileInfo(locked) files
> >
> > Unfortunately the following statement seems always to return 1 (file
> locked)
> > even on unlocked files
> >
> > cvsout "--> Locked : " $fileInfo(locked) "\n" --> always 1, even
> > for not locked files
> >
> > Is this a known bug or do I miss something obvious.
> >
> > Here the script I am using:
> >
> > [ script deleted ...]
>
> Dear Hans,
>
> I don't use WinCVS and therefore I do not understand all details of
> your script I do not know the interface between WinCVS and the Tcl
> scripts. I assume that the informations about files an directories are
> provided by WinCVS via 'browsit'. Therefore I could only guess that the
> misbehaviour might be a WinCVS bug.
>
> But I wrote a similar script for TkCVS a few weeks ago, which I appended
> below. It calls the 'cvs log' command directly and catches the output in
> 'view_this'.
>
> Then the output is scanned in two steps. First all filenames are stored in
> 'filelist'. The corresponding locked revisions are stored in the array
> 'locklist(...)'.
>
> In the second step the result is formated for output. In TkCVS the result
> is displayed using a special "viewer" which opens its own window for
> displaying text. I think this could be replaced by 'cvsout' command to
> make the result appear in the WinCVS console window. The script will
> also show if several revisions of a file are locked and by whom.
>
> Maybe this helps you.
>
> Lars
>
> -------------------------------------------------------------------
> aerodata Flugmesstechnik GmbH Email [EMAIL PROTECTED]
> Lars-Christian Schulze WWW www.aerodata.de
> Hermann-Blenk-Str. 36 Voice +49 531 2359-188
> D-38108 Braunschweig Fax +49 531 2359-158
>
>
> ---------- Extract from cvs.tcl, part of TkCVS, version 6.3 ------
>
> proc report_locks {} {
> global cvs
> global cvscfg
> global cwd
> upvar linenum linenum
>
> gen_log:log T "ENTER"
>
> if {! [winfo exists .viewer]} {
> viewer_setup
> } else {
> .viewer.text configure -state normal
> .viewer.text delete 1.0 end
> }
> set linenum 1
>
> set commandline "$cvs -d $cvscfg(cvsroot) -l log"
> gen_log:log C "$commandline"
> catch {eval "exec $commandline"} view_this
>
> set filelist ""
> set found "f"
> set view_lines [split $view_this "\n"]
>
> foreach line $view_lines {
> if {[string match "Working file: *" $line]} {
> regsub "Working file: " $line "" filename
> lappend filelist $filename
> set locklist($filename) ""
> }
> if {[string match "*locked by*" $line]} {
> lappend locklist($filename) $line
> set found "t"
> }
> }
>
> .viewer.text insert end "\nLocked files:\n"
> .viewer.text insert end "--------------------\n"
> incr linenum 2
>
> if { $found == "t" } {
> foreach filename $filelist {
> if { [llength $locklist($filename)] > 0 } {
> .viewer.text insert end [format "\n %s:\n" $filename]
> incr linenum
> foreach rev $locklist($filename) {
> .viewer.text insert end [format " %s\n" $rev]
> incr linenum
> }
> }
> }
> } else {
> .viewer.text insert end "\n $cwd:"
> .viewer.text insert end "\n No files locked in and under THIS
> directory."
> incr linenum 2
> }
>
> .viewer.text configure -state disabled
> wm deiconify .viewer
> raise .viewer
>
> gen_log:log T "LEAVE"
> }
>
> ---------------------- End of
Extract -------------------------------------
>
>
SearchLocked.zip