[BUG?] remote prune origin interacts badly with clone --mirror and multiple remotes
- From
Dennis Kaarsemaker <dennis@kaarsemaker.net>
- Date
- Jun 20, 2013, 21:23 UTC
- Message-ID
- <1371763424.17896.32.camel@localhost>
[git version: next as of yesterday afternoon]
If I clone a repo with git clone --mirror, and add other remotes later, 'git remote prune origin' deletes all branches and tags of the other remotes.
Easily repeatable example:
[core] repositoryformatversion = 0 filemode = true bare = true logallrefupdates = false [remote "origin"] url = git://github.com/git/git.git fetch = +refs/*:refs/* mirror = true [remote "peff"] url = git://github.com/peff/git.git fetch = +refs/heads/*:refs/remotes/peff/*
'git remote prune origin' will delete all peff's branches in this case. I'm guessing the wildcards refs/* and refs/remotes/peff/* interact badly in some place, and I'm trying to understand builtin/remote.c to see if I can fix it, but haven't gotten very far yet.
git fetch --prune origin and git remote update --prune also show this behaviour.
git remote prune peff does not delete non-peff branches in this scenario, further strengthening my belief that the refs/* and refs/remotes/peff/* wildcards interact badly with prune.
Or is this considered normal behaviour and is what I'm trying to do simply unsupported? In that case a warning would be welcome when adding remotes to a --mirror'ed repository.
-- Dennis Kaarsemaker www.kaarsemaker.net