Re: Regression in 'git branch -m'?
- Date: Fri, 6 Oct 2017 10:37:45 -0400
- From: Jeff King <peff@xxxxxxxx>
- Subject: Re: Regression in 'git branch -m'?
On Thu, Oct 05, 2017 at 07:25:52PM +0200, Andreas Krey wrote:
> I got something that looks like a regression somewhere since 2.11.
> This script
> set -xe
> rm -rf repo
> git init repo
> cd repo
> git commit -m nix --allow-empty
> git branch -m master/master
> git rev-parse HEAD
> git branch
> git status
> causes .git/HEAD to still contain 'ref: refs/heads/master' and to fail
> in the rev-parse step with
> + git rev-parse HEAD
> fatal: ambiguous argument 'HEAD': unknown revision or path not in the working tree.
> Use '--' to separate paths from revisions, like this:
> 'git <command> [<revision>...] -- [<file>...]'
> This is with 2.15.0.rc0; with 2.11.0 (and 22.214.171.1246.gffac48d09) it still works.
So this turned out to be quite an interesting bug to explore. I think
the solution I ended up with in the second patch is the right thing. I'm
adding Michael to the cc for wisdom on the ref code, though I think the
bug I'm fixing actually goes back to the early days of Git.
Earlier I blamed Duy's 31824d180d. And that is the start of the
regression in v2.15, but only because it fixed another bug which was
papering over the one I'm fixing here. :)
[v1 1/2]: t3308: create a real ref directory/file conflict
[v1 2/2]: refs_resolve_ref_unsafe: handle d/f conflicts for writes
refs.c | 15 ++++++++++++++-
t/t1401-symbolic-ref.sh | 26 +++++++++++++++++++++++++-
t/t3200-branch.sh | 10 ++++++++++
t/t3308-notes-merge.sh | 2 +-
4 files changed, 50 insertions(+), 3 deletions(-)