* I want to report a bug/anomaly in Git
@ 2011-01-11 22:22 Tony Sales
2011-01-12 18:35 ` Jeff King
0 siblings, 1 reply; 2+ messages in thread
From: Tony Sales @ 2011-01-11 22:22 UTC (permalink / raw)
To: git
Hi, how do I report a bug/anomaly in git? I have looked on the git
website and tried to ask on the git irc on freenode but couldn't post,
even after requesting a 'voice'. The bug is that if you happen to
create a new remote branch which shares it's name with an existing
directory in the top level of the git repository, git then seems to
get confused and the: git checkout <branch> - command doesn't switch
to that branch or turn tracking on (and seems to think it was created
from origin/<branch> rather than from refs/remotes/origin/<branch>),
which it does if the branch doesn't share a name with an existing top
level directory. This can be rectified by running: git checkout
--track -b debian origin/debian - but this confused me for several
hours and it was only because I had another repository with the same
branch names, but different top level directories where the command
worked that it finally dawned on me what the problem was. I then
deleted the branch and created a new one with a differnt name and
everything worked as expected.
--
drbongo
Dig that crazy beat on the drums: <http://vinux.org.uk> The best is
getting better!
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: I want to report a bug/anomaly in Git
2011-01-11 22:22 I want to report a bug/anomaly in Git Tony Sales
@ 2011-01-12 18:35 ` Jeff King
0 siblings, 0 replies; 2+ messages in thread
From: Jeff King @ 2011-01-12 18:35 UTC (permalink / raw)
To: Tony Sales; +Cc: git
On Tue, Jan 11, 2011 at 10:22:29PM +0000, Tony Sales wrote:
> The bug is that if you happen to create a new remote branch which
> shares it's name with an existing directory in the top level of the
> git repository, git then seems to get confused and the: git checkout
> <branch> - command doesn't switch to that branch or turn tracking on
> (and seems to think it was created from origin/<branch> rather than
> from refs/remotes/origin/<branch>), which it does if the branch
> doesn't share a name with an existing top level directory. This can be
> rectified by running: git checkout --track -b debian origin/debian
I don't think this is a bug so much as a confusing application of too
much DWIMmery in git-checkout. "git checkout foo" can mean several
things:
1. If it's a branch name, then switch to that branch.
2. Otherwise, if it's a tag name, switch to a detached HEAD at that
tag.
3. Otherwise, if it's a file known to git, then checkout its content
in the index into the working tree.
4. Otherwise, if there is a remote branch that matches
refs/remotes/*/foo, create a new branch "foo" that tracks it.
So the problem is that you expect behavior (4), but behavior (3) is
getting in the way.
I assume it was written this way because (4) came much later, and
therefore came last so as not to break existing behavior for the other
cases. Conceptually, though, I think it makes more sense for it to come
(3) (i.e., to keep all of the "checking out a ref" behavior together).
And one can disambiguate the path-mode already by doing:
git checkout -- debian
-Peff
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2011-01-12 18:36 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-01-11 22:22 I want to report a bug/anomaly in Git Tony Sales
2011-01-12 18:35 ` Jeff King
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).