home of the madduck/ blog/
Copy on write branches

Erich, I don't see copy on write branches working conveniently for you in the use-case you describe. Think about it: let's say `/etc/services` is unchanged across all machines, so when you add `12345/tcp myport` to the master, you would expect the physical file in the checkout on the other machines to just change automatically, without a checkout. What you want is for `/etc/services` to be a cross-network-symlink to the master file, until you write to it, at which point is should become a regular file under version control. I don't know of any way to support this.

In your situation, you have two solutions to look at:

  1. configure the machines to run a regular replay/merge/whatever with cron. you would need some sort of additional intelligence to deal with conflicts (e.g. reverse the merge and send mail) and handle restarting of daemons.

  2. configure the master archive with hooks that push any changes to the other machines. This requires you to keep track of all machines from the master archive, and it sucks because of all the other reasons that push approaches suck.

I hope I am making sense, and sorry for the "it's not possible". I'd love to be shown wrong.