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

Reply via email to