Re: PEBKAC or bug: unable to create path-like branch names
- From
Jacob Helwig <jacob.helwig@gmail.com>
- Date
- Nov 15, 2009, 07:55 UTC
- Message-ID
- <8c9a060911142355i1e722f50uf21446524fe9cb9c@mail.gmail.com>
- In-Reply-To
- <20091115073628.GE5934@penguin.codegnome.org>
On Sat, Nov 14, 2009 at 23:36, Todd A. Jacobs <nospam@codegnome.org> wrote:
Show 27 quoted lines
> On Sat, Nov 14, 2009 at 09:36:47PM -0800, Jacob Helwig wrote: > >> What version of git are you using? git checkout -b foo/bar/baz works > > I'm using 1.6.5.2 as well. Okay, try this in a temp directory, and > you'll see what I mean: > > git init > echo foo > foo > git add foo > git commit -m testing foo > git checkout -b dev > git checkout -b dev/feature/foobar > > The first branch works fine, but after attempting the nested branch the > message reappears: > > error: unable to resolve reference refs/heads/dev/feature/foobar: Not a directory > fatal: Failed to lock ref for update: Not a directory > > I can recreate this behavior at any time; it isn't just a problem with > an existing repository. > > -- > "Oh, look: rocks!" > -- Doctor Who, "Destiny of the Daleks" >
The problem is that you have a branch dev. You can't have both a file, and a directory with the same name.
You're trying to get git to do basically this:
% cd .git/refs/heads % ls -l total 0 -rw-rw-r-- 1 jhe jhe 41 2009-11-14 23:51 dev -rw-rw-r-- 1 jhe jhe 41 2009-11-14 23:51 master % mkdir dev mkdir: cannot create directory `dev': File exists
You're getting the equivalent of the "cannot create directory" error. When you have a branch with slashes in it, it gets stored as a directory hierarchy under .git/refs/heads.
-Jacob