Thread: [Codestriker-commits] CVS update: codestriker/lib/Codestriker/Repository Vss.pm
Brought to you by:
sits
From: <si...@us...> - 2004-11-03 21:49:55
|
User: sits Date: 04/11/03 13:49:47 Modified: lib/Codestriker/Repository Vss.pm Log: Test commit Index: Vss.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Repository/Vss.pm,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- Vss.pm 3 Nov 2004 21:46:37 -0000 1.13 +++ Vss.pm 3 Nov 2004 21:49:46 -0000 1.14 @@ -14,8 +14,7 @@ use File::Temp qw/ tmpnam tempdir /; use IO::Handle; -# Switch for emitting debug information, which will output what VSS commands -# have executed. +# Switch for emitting debug information. my $_DEBUG = 1; # Constructor, which takes the username and password as parameters. |
From: <si...@us...> - 2004-11-03 21:56:16
|
User: sits Date: 04/11/03 13:56:04 Modified: lib/Codestriker/Repository Vss.pm Log: Test VSS commit Index: Vss.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Repository/Vss.pm,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- Vss.pm 3 Nov 2004 21:49:46 -0000 1.14 +++ Vss.pm 3 Nov 2004 21:56:03 -0000 1.15 @@ -14,7 +14,8 @@ use File::Temp qw/ tmpnam tempdir /; use IO::Handle; -# Switch for emitting debug information. +# Switch for emitting debug information, which will output what VSS commands +# have executed. my $_DEBUG = 1; # Constructor, which takes the username and password as parameters. |
From: <si...@us...> - 2004-11-03 22:00:26
|
User: sits Date: 04/11/03 14:00:14 Modified: lib/Codestriker/Repository Vss.pm Log: Test VSS commit Index: Vss.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Repository/Vss.pm,v retrieving revision 1.15 retrieving revision 1.16 diff -u -r1.15 -r1.16 --- Vss.pm 3 Nov 2004 21:56:03 -0000 1.15 +++ Vss.pm 3 Nov 2004 22:00:13 -0000 1.16 @@ -14,8 +14,7 @@ use File::Temp qw/ tmpnam tempdir /; use IO::Handle; -# Switch for emitting debug information, which will output what VSS commands -# have executed. +# Switch for emitting debug information. my $_DEBUG = 1; # Constructor, which takes the username and password as parameters. |
From: <si...@us...> - 2004-11-08 22:38:17
|
Created Codestriker topic at: http://codestriker.sourceforge.net/cgi-bin/codestriker.pl?topic=5504246&action=view&brmode=1&fview=-1 User: sits Date: 04/11/08 14:37:54 Modified: lib/Codestriker/Repository Vss.pm Log: Swtich to creating a temporary batch file (so that the SSDIR environment variable can be set) and executing it for all ss.exe commands. Index: Vss.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Repository/Vss.pm,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- Vss.pm 3 Nov 2004 22:00:13 -0000 1.16 +++ Vss.pm 8 Nov 2004 22:37:52 -0000 1.17 @@ -33,27 +33,19 @@ # the correct VSS repository. We can't do this with $ENV since # apache2 doesn't allow us to do this. We assume perl is in the # PATH. -sub _wrap_vss_command { - my ($self, $cmd) = @_; +sub _write_vss_command { + my ($self, $cmd, $tmpfile) = @_; my $ssdir = $self->{ssdir}; - if (defined $ssdir) { - my $perl_cmd = $cmd; - $perl_cmd =~ s/\"/\\\"/g; - $perl_cmd = "perl -e \"" . - (defined $ssdir ? "\$ENV{SSDIR}='$ssdir' ; " : "") . - "system('$perl_cmd')\""; - print STDERR "Executing $perl_cmd\n" if $_DEBUG; - flush STDERR if $_DEBUG; - return $perl_cmd; - } - else { - # No need to change the command, as SSDIR does not need to be set. - print STDERR "Executing $cmd\n" if $_DEBUG; - flush STDERR if $_DEBUG; - return $cmd; - } + open (TMPFILE, ">$tmpfile") || die "Can't open $tmpfile: $!"; + print TMPFILE "\@echo off\n"; + print STDERR "\@echo off\n" if $_DEBUG; + print TMPFILE "set SSDIR=$ssdir\n" if defined $ssdir; + print STDERR "set SSDIR=$ssdir\n" if defined $ssdir && $_DEBUG; + print TMPFILE "$cmd\n"; + print STDERR "$cmd\n" if $_DEBUG; + close TMPFILE; } # Retrieve the data corresponding to $filename and $revision. Store each line @@ -61,6 +53,10 @@ sub retrieve ($$$\$) { my ($self, $filename, $revision, $content_array_ref) = @_; + # VSS command to use. + my $vss = $Codestriker::vss; + $vss =~ s/\//\\/g; + # Create a temporary directory where all of the temporary files # will be written to. my $tempdir; @@ -71,15 +67,19 @@ $tempdir = tempdir(CLEANUP => 1); } + # Temporary Batch file for executing VSS commands. + my $tmp_batch_file = "$tempdir/tmp.bat"; + # Retrieve a read-only copy of the file into a temporary # directory. Make sure the command output is put into # a temporary file, rather than stdout/stderr. my $varg = ($revision =~ /^\d+$/) ? "-V$revision" : "\"-VL$revision\""; my $command_output = "$tempdir\\___output.txt"; - my $cmd = "\"$Codestriker::vss\" get \"$filename\"" . + my $cmd = "\"$vss\" get \"$filename\"" . " -y" . $self->{username} . "," . $self->{password} . " $varg -I-Y -O\"$command_output\" -GWR -GL\"$tempdir\""; - system($self->_wrap_vss_command($cmd)); + $self->_write_vss_command($cmd, $tmp_batch_file); + system($tmp_batch_file); $filename =~ /\/([^\/]+)$/o; my $basefilename = $1; @@ -92,8 +92,10 @@ unlink "$tempdir/$basefilename"; } - # Remove the temporary directory. - rmdir $tempdir; + # Remove the temporary directory and batch file. + print STDERR "Dir is $tempdir\n"; + #unlink $tmp_batch_file; + #rmdir $tempdir; } # Retrieve the "root" of this repository. @@ -121,6 +123,10 @@ sub getDiff ($$$$$) { my ($self, $start_tag, $end_tag, $module_name, $fh, $error_fh) = @_; + # VSS command to use. + my $vss = $Codestriker::vss; + $vss =~ s/\//\\/g; + # Currently we only support either start_tag or end_tag being set. my $tag = ''; $tag = $start_tag if $start_tag ne '' && $end_tag eq ''; @@ -138,16 +144,20 @@ $tempdir = tempdir(CLEANUP => 1); } + # Temporary Batch file for executing VSS commands. + my $tmp_batch_file = "$tempdir/tmp.bat"; + # Execute the VSS command to retrieve all of the entries in this label. # Note we can't set SSDIR in the environment, so we need to do that in # the command below. my $ssdir = $self->{ssdir}; - my $cmd = "\"$Codestriker::vss\" dir \"$module_name\"" . + my $cmd = "\"$vss\" dir \"$module_name\"" . " -y" . $self->{username} . "," . $self->{password} . " -R \"-VL${tag}\" -I-Y"; + $self->_write_vss_command($cmd, $tmp_batch_file); - open(VSS, $self->_wrap_vss_command($cmd) . " |") + open(VSS, "$tmp_batch_file |") || die "Can't open connection to VSS repository: $!"; # Collect the list of filename and revision numbers into a list. @@ -177,10 +187,11 @@ # files. for (my $i = 0; $i <= $#files; $i++) { # Determine if the file is a text file, and if not, skip it. - $cmd = "\"$Codestriker::vss\" properties \"$files[$i]\"" . + $cmd = "\"$vss\" properties \"$files[$i]\"" . " -y" . $self->{username} . "," . $self->{password} . " -I-Y"; - open(VSS, $self->_wrap_vss_command($cmd) . " |") + $self->_write_vss_command($cmd, $tmp_batch_file); + open(VSS, "$tmp_batch_file |") || die "Unable to run ss properties on $files[$i]\n"; my $text_type = 0; while (<VSS>) { @@ -194,11 +205,12 @@ my $command_output = "$tempdir\\___output.txt"; if ($start_tag ne '' && $end_tag ne '') { - $cmd = "\"$Codestriker::vss\" diff \"$files[$i]\"" . + $cmd = "\"$vss\" diff \"$files[$i]\"" . " -y" . $self->{username} . "," . $self->{password} . " -I-Y -DU3000X5 \"-VL${start_tag}~L${end_tag}\"" . " -O\"$command_output\""; - system($self->_wrap_vss_command($cmd)); + $self->_write_vss_command($cmd, $tmp_batch_file); + system($tmp_batch_file); if (open(VSS, $command_output)) { while (<VSS>) { print $fh $_; @@ -209,10 +221,11 @@ # Retrieve a read-only copy of the file into a temporary # directory. Make sure the command output is put into # a temporary file, rather than stdout/stderr. - $cmd = "\"$Codestriker::vss\" get \"$files[$i]\"" . + $cmd = "\"$vss\" get \"$files[$i]\"" . " -y" . $self->{username} . "," . $self->{password} . " \"-VL${tag}\" -I-Y -O\"$command_output\" -GWR -GL\"$tempdir\""; - system($self->_wrap_vss_command($cmd)); + $self->_write_vss_command($cmd, $tmp_batch_file); + system($tmp_batch_file); $files[$i] =~ /\/([^\/]+)$/o; my $basefilename = $1; @@ -238,7 +251,8 @@ print $fh "\n"; } - # Remove the temporary directory. + # Remove the temporary directory and temporary batch file. + unlink $tmp_batch_file; rmdir $tempdir; return $Codestriker::OK; |
From: <si...@us...> - 2004-11-08 22:40:40
|
Created Codestriker topic at: http://codestriker.sourceforge.net/cgi-bin/codestriker.pl?topic=7583258&action=view&brmode=1&fview=-1 User: sits Date: 04/11/08 14:40:27 Modified: lib/Codestriker/Repository Vss.pm Log: Removed debugging Index: Vss.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Repository/Vss.pm,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- Vss.pm 8 Nov 2004 22:37:52 -0000 1.17 +++ Vss.pm 8 Nov 2004 22:40:26 -0000 1.18 @@ -93,9 +93,8 @@ } # Remove the temporary directory and batch file. - print STDERR "Dir is $tempdir\n"; - #unlink $tmp_batch_file; - #rmdir $tempdir; + unlink $tmp_batch_file; + rmdir $tempdir; } # Retrieve the "root" of this repository. |
From: <si...@us...> - 2004-11-09 22:18:59
|
Created Codestriker topic at: http://codestriker.sourceforge.net/cgi-bin/codestriker.pl?topic=1919759&action=view&brmode=1&fview=-1 User: sits Date: 04/11/09 14:18:45 Modified: lib/Codestriker/Repository Vss.pm Log: VSS diff generation can now handle a file for the module field. Index: Vss.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Repository/Vss.pm,v retrieving revision 1.18 retrieving revision 1.19 diff -u -r1.18 -r1.19 --- Vss.pm 8 Nov 2004 22:40:26 -0000 1.18 +++ Vss.pm 9 Nov 2004 22:18:41 -0000 1.19 @@ -15,7 +15,7 @@ use IO::Handle; # Switch for emitting debug information. -my $_DEBUG = 1; +my $_DEBUG = 0; # Constructor, which takes the username and password as parameters. sub new { @@ -162,7 +162,13 @@ # Collect the list of filename and revision numbers into a list. my @files = (); my @versions = (); + + # Initialise this in case module just refers to a single file. my $current_dir = ''; + if ($module_name =~ /^(.*)\/[^\/]+$/o) { + $current_dir = $1; + } + while (<VSS>) { if (/^(\$\/.*):$/o) { # Entering a new top-level directory. |
From: <si...@us...> - 2004-11-23 22:41:17
|
Created Codestriker topic at: http://codestriker.sourceforge.net/cgi-bin/codestriker.pl?topic=5198892&action=view&brmode=1&fview=-1 User: sits Date: 04/11/23 14:40:53 Modified: lib/Codestriker/Repository Vss.pm Log: Make VSS work with temporary directories with spaces in them. Index: Vss.pm =================================================================== RCS file: /cvsroot/codestriker/codestriker/lib/Codestriker/Repository/Vss.pm,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- Vss.pm 9 Nov 2004 22:18:41 -0000 1.19 +++ Vss.pm 23 Nov 2004 22:40:46 -0000 1.20 @@ -65,6 +65,11 @@ } else { $tempdir = tempdir(CLEANUP => 1); + + # Hack alert for windows - temporary directory needs to start + # with a letter, or commands below will fail. Most people will + # set the temporary directory explicitly in the conf file. + $tempdir = 'C:' . $tempdir if $tempdir =~ /^[\\\/]/o; } # Temporary Batch file for executing VSS commands. @@ -79,7 +84,7 @@ " -y" . $self->{username} . "," . $self->{password} . " $varg -I-Y -O\"$command_output\" -GWR -GL\"$tempdir\""; $self->_write_vss_command($cmd, $tmp_batch_file); - system($tmp_batch_file); + system("\"$tmp_batch_file\""); $filename =~ /\/([^\/]+)$/o; my $basefilename = $1; @@ -141,6 +146,11 @@ } else { $tempdir = tempdir(CLEANUP => 1); + + # Hack alert for windows - temporary directory needs to start + # with a letter, or commands below will fail. Most people will + # set the temporary directory explicitly in the conf file. + $tempdir = 'C:' . $tempdir if $tempdir =~ /^[\\\/]/o; } # Temporary Batch file for executing VSS commands. @@ -156,7 +166,7 @@ " -R \"-VL${tag}\" -I-Y"; $self->_write_vss_command($cmd, $tmp_batch_file); - open(VSS, "$tmp_batch_file |") + open(VSS, "\"$tmp_batch_file\" |") || die "Can't open connection to VSS repository: $!"; # Collect the list of filename and revision numbers into a list. @@ -196,7 +206,7 @@ " -y" . $self->{username} . "," . $self->{password} . " -I-Y"; $self->_write_vss_command($cmd, $tmp_batch_file); - open(VSS, "$tmp_batch_file |") + open(VSS, "\"$tmp_batch_file\" |") || die "Unable to run ss properties on $files[$i]\n"; my $text_type = 0; while (<VSS>) { @@ -215,7 +225,7 @@ " -I-Y -DU3000X5 \"-VL${start_tag}~L${end_tag}\"" . " -O\"$command_output\""; $self->_write_vss_command($cmd, $tmp_batch_file); - system($tmp_batch_file); + system("\"$tmp_batch_file\""); if (open(VSS, $command_output)) { while (<VSS>) { print $fh $_; @@ -230,7 +240,7 @@ " -y" . $self->{username} . "," . $self->{password} . " \"-VL${tag}\" -I-Y -O\"$command_output\" -GWR -GL\"$tempdir\""; $self->_write_vss_command($cmd, $tmp_batch_file); - system($tmp_batch_file); + system("\"$tmp_batch_file\""); $files[$i] =~ /\/([^\/]+)$/o; my $basefilename = $1; |