[PATCH] Check for case collisions within transactions
From: Michael Brouwer <michael_at_tlaloc.net>
Date: 2005-07-14 20:19:11 CEST
As a long time dev list lurker here is my first modest attempt at a
Michael
---- [[[ Fix a bug in the pre-commit hook script that is prevents case collisions, which would allow a transaction to add 2 files which collide within a single transaction. * contrib/hook-scripts/check-case-insensitive.pl (%newtree): New hash which tracks the case folded adds within the transaction. ($lcnewfile): New scalar to cache case folded version of the current file. (global scope): Add a check to see if the case folded current file is already in the transaction. ]]] Index: contrib/hook-scripts/check-case-insensitive.pl =================================================================== --- contrib/hook-scripts/check-case-insensitive.pl (revision 15336) +++ contrib/hook-scripts/check-case-insensitive.pl (working copy) @@ -237,14 +237,20 @@ close SVNLOOK; my $failmsg; +my %newtree; foreach my $newfile (@added) { print STDERR "Checking \$tree{lc($newfile)}\n" if ($debug > 1); # Without the following line it gets the lc() wrong. my $junk = "x$newfile"; - if (exists($tree{lc($newfile)})) { + my $lcnewfile = lc($newfile); + if (exists($tree{$lcnewfile})) { $failmsg .= "\n $newfile already exists as " . $tree{lc ($newfile)}; } + elsif (exists($newtree{$lcnewfile})) { + $failmsg .= "\n $newfile also added as " . $newtree{lc($newfile)}; + } + $newtree{$lcnewfile} = $newfile; } if (defined($failmsg)) { print STDERR "\nFile name case conflict found:\n" . $failmsg . "\n"; --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org For additional commands, e-mail: dev-help@subversion.tigris.orgReceived on Thu Jul 14 20:19:57 2005 |
This is an archived mail posted to the Subversion Dev mailing list.
This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.