On Sat, 12 Sep 2009, Brandon S. Allbery KF8NH wrote:
On Sep 12, 2009, at 11:22 , Trent W. Buck wrote:
Jason Dagit <da...@codersbase.com> writes:
which ensures that when the operating system is not WIN32, that
renaming of files will be performed by the OS shell.
I'm also puzzled as to why this works -- surely mv(1) assumes POSIX
semantics, too? I would be interested in seeing the exact error
transcript, preferably as an issue on bugs.d.n. I'm not sure the
problem has been diagnosed correctly.
In order to handle the case where you're moving across filesystems, mv(1)
gracefully degrades to cp + rm. rename(2) does not. This also happens to
work around compatibility issues with native CIFS (and possibly older HP/UX,
not that anyone likely cares).
I don't think that darcs is ever likely to want to do a move across
filesystems - unless someone has actually put a mount point in the middle
of their darcs repo (and perhaps not even then for the metadata operations
such as the one that was failing here, as I think those are all inside a
single directory).
Darcs already has a WIN32-specific workaround for renaming going wrong
when the new file exists, and my initial guess was that was what was going
wrong here. The workaround just tries to remove the new file and retries
the rename. The original poster doesn't make clear whether he tried my
suggested fix enabling that workaround unconditionally before resorting to
shelling out.
Cheers,
Ganesh
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe