On Wed, Jul 13, 2005 at 01:05:02PM -0700, Linus Torvalds wrote: > This is really complicated, for no good reason.
What should I be doing? > The _object_ directories should be linked, but it's really wrong to link > the "refs/" directories and expect them to have COW behaviour. I'm confused. This function in only used to update various files, one of which is .git/HEAD The complexity I added was to deal with a situation where we have tree1/ .git/HEAD -> refs/head/master and I do "cp -Rl tree1 tree2" giving me: tree2/ .git/HEAD -> refs/head/master and .git/refs/head/master is hardlinked between both trees. Cogito will do "echo <foo> > .git/HEAD" which update *both* tree1 and tree2 which is not what I want. So the idea is to readlink and do the update using echo + rename to get the CoW semantics I desire. Yes, weird things happen if you have out-of-treel links but I suspect if you do that with cogito you've probably lost anyhow. > I've tried to make most of the git tools write the refs objects > "safely" too, ie things like "git-receive-pack" (the receiving end > of a "git-send-pack") will write the new ref to a lock-file and then > do a "rename()" to set it. Yes, git is probably fine. Cogito isn't. > That is COW-safe, but the thing is, it's incredibly painful for many > other operations, and I won't guarantee that git in general is > always going to be COW-safe wrt all the git files. What operations is this painful for? - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html