Re: Regression in 'git branch -m'?
- From
Jeff King <peff@peff.net>
- Date
- Oct 6, 2017, 14:37 UTC
- Message-ID
- <20171006143745.w6q2yfgy6nvd2m2a@sigill.intra.peff.net>
- In-Reply-To
- <20171005172552.GA11497@inner.h.apk.li>
On Thu, Oct 05, 2017 at 07:25:52PM +0200, Andreas Krey wrote:
Show 23 quoted lines
> 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 > 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 2.11.0.356.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(-)
-Peff