"Johannes Schindelin via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > @@ -538,7 +538,8 @@ static void copy_or_rename_branch(const char *oldname, const char *newname, int > strbuf_addf(&logmsg, "Branch: renamed %s to %s", > oldref.buf, newref.buf); > > - if (!copy && rename_ref(oldref.buf, newref.buf, logmsg.buf)) > + if (!copy && (oldname != head || !is_null_oid(&head_oid)) && It always makes readers uneasy to see pointer comparison of two strings. Does this mean, after "git -c init.defaultbranch=master init", git branch -m master main would not work while git branch -m main would? It would be easy to see with the attached patch to the test, I guess. > + rename_ref(oldref.buf, newref.buf, logmsg.buf)) > die(_("Branch rename failed")); > if (copy && copy_existing_ref(oldref.buf, newref.buf, logmsg.buf)) > die(_("Branch copy failed")); > diff --git a/t/t0001-init.sh b/t/t0001-init.sh > index 69a320489f..69c5ad179c 100755 > --- a/t/t0001-init.sh > +++ b/t/t0001-init.sh > @@ -571,4 +571,10 @@ test_expect_success 'invalid default branch name' ' > test_i18ngrep "invalid branch name" err > ' > > +test_expect_success 'branch -m with the initial branch' ' > + git init rename-initial-branch && > + git -C rename-initial-branch branch -m renamed && > + test renamed = $(git -C rename-initial-branch symbolic-ref --short HEAD) > +' > + > test_done Thanks. t/t0001-init.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git c/t/t0001-init.sh w/t/t0001-init.sh index 69c5ad179c..07c34431d9 100755 --- c/t/t0001-init.sh +++ w/t/t0001-init.sh @@ -577,4 +577,10 @@ test_expect_success 'branch -m with the initial branch' ' test renamed = $(git -C rename-initial-branch symbolic-ref --short HEAD) ' +test_expect_success 'branch -m with the initial branch' ' + git -c init.defaultBranch=initial init rename-unborn-branch && + git -C rename-unborn-branch branch -m initial renamed && + test renamed = $(git -C rename-unborn-branch symbolic-ref --short HEAD) +' + test_done