On Mon, Oct 14, 2019 at 8:07 PM Junio C Hamano <gitster@xxxxxxxxx> wrote: > > Wink Saville <wink@xxxxxxxxxxx> writes: > > > When --prefix-tags is passed to `git remote add` the tagopt is set to > > --prefix-tags and a second fetch line is added so tags are placed in > > a separate hierarchy per remote. > > > In the olden days, there was no refs/remotes/$remoteName/ hiearchy, > and until we made it the default at around Git 1.5.0, such a modern > layout for the branches were called the "separate remote" layout, > and can be opted into with "clone --use-separate-remote" by early > adopters. > > I doubt that use of refs/tags/$remoteName/ is a good design if we > want to achieve similar isolation between local tags and and tags > obtained from each remote. > > An obvious alternative, refs/remotes/$remoteName/tags/, is not a > good design for exactly the same reason. You cannot tell between a > local tag foo/bar and a tag bar obtained from remote foo when you > see refs/tags/foo/bar, and you cannot tell between a branch tag/bar > obtained from remote foo and a tag bar obtained from remote foo when > you see refs/remotes/foo/tags/bar. In the past, people suggested to > use refs/remoteTags/$remoteName/ for proper isolation, and it might > be a better middle-ground than either of the two, at least in the > shorter term, but not ideal. > > In short, if you truly want to see "separate hierarchy per remote", > you should consider how you can reliably implement an equivalent of > "git branch --list --remote"; a design that does not allow it is a > failure. > > A better solution with longer lifetime would probably be to use > > refs/remotes/$remoteName/{heads,tags,...}/ > > when core.useTotallySeparateRemote configuration exists (and > eventually at Git 3.0 make the layout the default). It would > involve changes in the refname look-up rules, but it would not have > to pollute refs/ namespace like the refs/remoteTags/ half-ground > design, which would require us to add refs/remoteNotes/ and friends, > who knows how many more we would end up having to support if we go > that route. > > Thanks. > Something like this makes sense and I've thought about the problem for a long time. Unfortunately it's quite a bit trickier to do this. It would solve the problem more generally though, and definitely seems like the right approach.. but at least for me, every time I looked at trying this I got lost. I haven't had time to investigate it recently :( Thanks, Jake