On Feb 21, 2006, at 1:30 PM, Bernhard Schmalhofer wrote:

Chris Dolan (via RT) schrieb:

# New Ticket Created by Chris Dolan # Please include the string: [perl #38604] # in the subject line of all future correspondence about this issue. # <URL: https://rt.perl.org/rt3/Ticket/Display.html?id=38604 >


While doing an "svn update" from a Mac OS X box today, I got this error:

svn: Failed to add file 'languages/m4/lib/Parrot/Test/M4.pm': object of the same name already exists

This is funny. I think that I have renamed m4.pm to M4.pm around revision 11350.
So it should be OK for fresh checkouts.
The funny thing is that I can do a 'svn mv' under Unix, which causes troubles on
case-insensitive filesystems.

Aha. Indeed, the last time I updated was prior to 11350, I believe. I agree that fresh checkouts should be OK. In this case, my successful workaround was simply "rm languages/m4/lib/Parrot/Test/ m4.pm ; svn update"

IIRC, "svn mv" is really just "svn cp" followed by "svn rm" behind the scenes. So, there is a moment during update when both files need to exist. A possible (untested) workaround for committers might be:

  svn mv m4.pm m4-temp.pm
  svn commit
  svn mv m4-temp.pm M4.pm
  svn commit


To prevent a repeat of this problem in the future, one solution is to use the check-case-insensitive.pl pre-commit hook script that is in the contrib directory of the subversion source.

This FAQ has more info:
  http://subversion.tigris.org/faq.html#case-change


Somebody who can administrate the SVN server could take a look at this script. The FAQ does not really tell what it does. Mandating all lower case filenames is no solution.

The script looks at the incoming files and compares to existing files to see if any names differ only in case. If there are such files, the commit fails.

Chris

Reply via email to