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

Reply via email to