Junio C Hamano <junkio@xxxxxxx> wrote: > Shawn Pearce <spearce@xxxxxxxxxxx> writes: > > Originally I gave Pasky a one-liner on #git: > > > > git fetch --force origin $(git ls-remote origin \ > > | awk '{if(!/\^{}$/){print $2":"$2}}') > > Which sounds a very sane thing to do, especially given git is > designed to be scripted this way. Exactly. So I'm not sure why he was against it. After all he must have some script that's looping over all mirrored repositories and invoking git fetch in them. :-) > > - it has a single remote named origin; > > Do you mean ".git/remotes must have only one file 'origin' and > nothing else", or do you mean "There must be .git/remotes/foobla > for 'git-mirror foobla' to work"? I meant ".git/remotes must have only one file 'origin' and nothing else". Because what does it mean to mirror two different repositories at the same time into the same ref namespace? The most recently fetched would always win. But now that I'm writing this I can see someone wanting multiple remotes so they could store different URLs for the same repository and call fetch on another if the first isn't responding. So I retract this entirely. So there doesn't even need to be remotes file; the URL could just be passed on the command line. A remotes file (like the default "origin" one) is just a handy place to store the URL. > > - HEAD isn't a symlink or a symref (its a normal ref in its > > own right); > > Why? Usually HEAD is a pointer to the active branch. I > consider it is a bug in the upload-pack protocol not to convey > that information (but that is a separate topic). Because we don't want to update HEAD with the SHA1 that's on the remote if that's actually going to update some other ref which doesn't have the same value. :-) I think its simple enough to verify HEAD isn't a symlink or symref (or just doesn't exist) early in the mirror script. If the user really wants to do a mirror and they just did a `git init-db --bare` they could also do a `rm HEAD` before starting `git-mirror`. But I agree with you entirely about HEAD being a SHA1 and not its actual link target in the network protocol. An annoying bug. -- Shawn. - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html