From: Junio C Hamano Date: Wed, 16 May 2007 01:22:29 GMT Subject: Re: pull/push inconsistencies Message-ID: <7v646th8a2.fsf@assigned-by-dhcp.cox.net> In-Reply-To: <46a038f90705151811o2159aa5ai84a13e77e790e376@mail.gmail.com> "Martin Langhoff" writes: > There are 2 things that I see as wrong... > - local .git/refs/remote/origin/foo and refs/heads/foo match - why is > git-push talking about updating them? Ooo... Do you mean if you have refs/remotes/origin/foo locally, and push into a repository that has refs/heads/foo (but not refs/remotes/origin/foo), the push results in refs/heads/foo getting updated? If that is what is happening (without any refspecs to instruct git-push to do so) that sounds quite buggy. I need to look into the code for this one. And I think earlier one I was confused that I thought you were talking about pushing into refs/heads/branch (where branch is checked out). Sorry. > - matching refs should ignore .git/refs/remote > > ... the 'matching refs' thing will > ignore the local .git/refs/remotes directory. AFAICS it's the only > sane thing to do. I think you are probably right in that matching only heads and perhaps tags is a sane thing to do (even tags/ is debatable, as they are supposed to be immutable by convention). As a matter of fact I do not recall which part of refs/ namespace it looks at, but it is a very old part of the system and I would not be surprised if it silently assumed that there are only heads and tags there (and not explicitly matching heads and tags only).