diff options
author | Javier Fernandez-Sanguino Peña <jfs> | 2010-10-15 22:42:17 +0000 |
---|---|---|
committer | Javier Fernandez-Sanguino Peña <jfs> | 2010-10-15 22:42:17 +0000 |
commit | c712588222b619a83c4495b812cbf160e2718387 (patch) | |
tree | 3a9ac19c2301f0d804f43d8a9ea0dc33bc50fb19 | |
parent | 7db5af31c9cf77283dd7b1f76133cead33277b73 (diff) |
Code rewrite to clarify what the code does and the different situations, avoid nested ifs as this seems to confuse people
CVS version numbers
copypage.pl: 1.34 -> 1.35
-rwxr-xr-x | copypage.pl | 92 |
1 files changed, 50 insertions, 42 deletions
diff --git a/copypage.pl b/copypage.pl index af6c28174b9..291f27c9d19 100755 --- a/copypage.pl +++ b/copypage.pl @@ -338,53 +338,61 @@ sub find_files_attic # to look for files in the Attic system "LC_ALL=C cvs status '$file' >$tmpfile 2>&1"; + if ( $? != 0 ) { + # CVS returns an error, then cleanup and return + # Do not complain because this might happen just because we + # have no network access, just cleanup the temporary file + unlink $tmpfile; + return 0; + } + # If CVS does not return an error then there is a file in CVS # even if $dstfile is not in the filesystem # There could be two reasons for this: # - The user has removed it but somebody else put it in CVS # - It resides in the Attic - if ( $? == 0 ) { - my $deleted_version = "<latest_version>"; - my $previous_version = "<version_before_deletion>"; - my $cvs_location = ""; - - # Parse the result of cvs status - open(TF, $tmpfile) || die ("Cannot open temporary file: $?"); - while ($line = <TF>) { - chomp $line; - if ( $line =~ /Repository revision:\s+(\d+)\.(\d+)\s+(.*)$/ ) { - $cvs_location = $3; - $deleted_version = $1.".".$2 ; - $previous_version = $1.".".($2-1); - } + my $deleted_version = "<latest_version>"; + my $previous_version = "<version_before_deletion>"; + my $cvs_location = ""; + + # Parse the result of cvs status + open(TF, $tmpfile) || die ("Cannot open temporary file: $?"); + while ($line = <TF>) { + chomp $line; + if ( $line =~ /Repository revision:\s+(\d+)\.(\d+)\s+(.*)$/ ) { + $cvs_location = $3; + $deleted_version = $1.".".$2 ; + $previous_version = $1.".".($2-1); } - close TF; - unlink $tmpfile; - - # Now determine in which situation we are in - if ( $cvs_location ne "" ) { - # We need CVS information to continue here - if ( $cvs_location =~ /Attic\// ) { - # Situation 1 - There is a translation in the Attic - # Give information on how to restore - print STDERR "ERROR: An old translation exists in the Attic, you should restore it using:\n"; - print STDERR "\tcvs update -j $deleted_version -j $previous_version $dstfile\n"; - print STDERR "\t[Edit and update the file]\n"; - print STDERR "\tcvs ci $dstfile\n"; - die ("Old translation found\n"); - } else { - # Situation 2 - There is already a file in CVS with this - # name, since it does not exist in the local copy maybe - # the local copy is not up to date - die ("ERROR: A translation already exist in CVS for this file.\nPlease update your CVS copy using 'cvs update'.\n"); - } # of if $cvs_location Attic - } # of if $cvs_location ne "" - } # of if $? -# Nothing to do if cvs returns an error, maybe its because we have -# no network access - -# Cleanup - unlink $tmpfile; - return 0; + } + close TF; + unlink $tmpfile; # File is not used from here on, delete it + + # Now determine in which situation we are in: + + if ( $cvs_location eq "" ) { +# Situation 0 - This happens when the return text is +# "Repository revision: No revision control file" + return 0; # Nothing to do here + + } + + if ( $cvs_location =~ /Attic\// ) { +# Situation 1 - There is a translation in the Attic +# Give information on how to restore + + print STDERR "ERROR: An old translation exists in the Attic, you should restore it using:\n"; + print STDERR "\tcvs update -j $deleted_version -j $previous_version $dstfile\n"; + print STDERR "\t[Edit and update the file]\n"; + print STDERR "\tcvs ci $dstfile\n"; + die ("Old translation found\n"); + } + + # Situation 2 - There is already a file in CVS with this + # name, since it does not exist in the local copy maybe + # the local copy is not up to date + print STDERR "ERROR: A translation already exist in CVS for this file.\n"; + print STDERR "\tPlease update your CVS copy using 'cvs update'.\n"; + die ("Translation already exists\n"); } |