From: Johannes Schindelin <johannes.schindelin@xxxxxx> When renaming the main branch (as possibly identified by the `core.mainBranch` setting), we will want to record that the main branch now has a different name. Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> --- builtin/branch.c | 9 +++++++++ t/t3200-branch.sh | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/builtin/branch.c b/builtin/branch.c index accb61b1aae..62f8db5fb05 100644 --- a/builtin/branch.c +++ b/builtin/branch.c @@ -556,6 +556,15 @@ static void copy_or_rename_branch(const char *oldname, const char *newname, int replace_each_worktree_head_symref(oldref.buf, newref.buf, logmsg.buf)) die(_("Branch renamed to %s, but HEAD is not updated!"), newname); + if (!copy) { + char *main_branch = git_main_branch_name(0); + + if (!strcmp(interpreted_oldname, main_branch)) + git_config_set("core.mainbranch", interpreted_newname); + + free(main_branch); + } + strbuf_release(&logmsg); strbuf_addf(&oldsection, "branch.%s", interpreted_oldname); diff --git a/t/t3200-branch.sh b/t/t3200-branch.sh index 411a70b0ce9..328544f2736 100755 --- a/t/t3200-branch.sh +++ b/t/t3200-branch.sh @@ -467,6 +467,15 @@ EOF test_cmp expect actual ' +test_expect_success 'renaming the main branch modifies core.mainBranch' ' + git init rename-main && + test_commit -C rename-main initial && + git -C rename-main branch -m trunk && + git -C rename-main config core.mainBranch >actual && + echo trunk >expect && + test_cmp expect actual +' + test_expect_success 'git branch -c dumps usage' ' test_expect_code 128 git branch -c 2>err && test_i18ngrep "branch name required" err -- gitgitgadget