Search code examples
vmwaredarcs

Darcs push fails for no apparent reason between Windows and Linux using VMware


I have a strange Darcs issue here.

I'm running a VM with a Linux guest OS and a Windows host OS. I've set up /mnt as a "shared folder"; any files placed here are actually stored in a folder on the host OS. Among other things, this causes all files to have their permissions set to 666 root,root. (Naturally, Windows doesn't support Unix-style file modes.)

Here's what happened:

  • cd /mnt/some-random-folder
  • darcs init
  • cd ~/some-random-folder
  • darcs pull /mnt/some-random-folder
  • Create a few files
  • darcs add the files
  • darcs record

So far, everything works fine. But now...

user1:~/some-random-folder> darcs push
Pushing to "/mnt/some-random-folder"...
Sun Jan 20 12:11:50 GMT 2013  User1
* Update dependencies.
Shall I push this patch? (1/1)  [ynW...], or ? for more options: y
darcs: ./_darcs/tentative_pristine-0: rename: permission denied (Permission denied)
Apply failed!

Erm... what the heck just happened??

(And, more to the point, how do I make it stop happening and actually work?)

I tried using cp to synchronise the repos, thinking maybe the problem was that I started with a totally empty repo with no patches. That changes the error message (now it can't open _darcs\index - permission denied), but it still doesn't actually work.

Edit: Darcs 2.8.1 release.


Solution

  • Having played with this further, it appears that accessing files on the host OS from the guest OS does all sorts of strange things. Stuff like, I delete a file, ls tells me the file is gone, but when I try to write to that file, it says it can't because it already exists. Unmount and remount the filesystem and the problem goes away.

    In short, I think this is probably nothing to do with Darcs at all, and is just the VMware drives being strange / buggy.