diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-12-28 11:32:33 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-12-28 11:32:33 -0800 |
commit | 79587741cbed7704d2e7213c999cf2841af3000d (patch) | |
tree | ac065e7bd784619dbc5cc47e543860b57f71adb3 /builtin/branch.c | |
parent | e39888ba21b68888e1db2d989155f23ea78fc842 (diff) | |
parent | 39bd6f726109942c6f77f59638f6763c9f00706c (diff) | |
download | git-79587741cbed7704d2e7213c999cf2841af3000d.tar.gz git-79587741cbed7704d2e7213c999cf2841af3000d.tar.xz |
Merge branch 'jn/branch-move-to-self' into maint
* jn/branch-move-to-self:
Allow checkout -B <current-branch> to update the current branch
branch: allow a no-op "branch -M <current-branch> HEAD"
Diffstat (limited to 'builtin/branch.c')
-rw-r--r-- | builtin/branch.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/builtin/branch.c b/builtin/branch.c index 55cad766c..df908ed8f 100644 --- a/builtin/branch.c +++ b/builtin/branch.c @@ -568,6 +568,7 @@ static void rename_branch(const char *oldname, const char *newname, int force) unsigned char sha1[20]; struct strbuf oldsection = STRBUF_INIT, newsection = STRBUF_INIT; int recovery = 0; + int clobber_head_ok; if (!oldname) die(_("cannot rename the current branch while not on any.")); @@ -583,7 +584,13 @@ static void rename_branch(const char *oldname, const char *newname, int force) die(_("Invalid branch name: '%s'"), oldname); } - validate_new_branchname(newname, &newref, force, 0); + /* + * A command like "git branch -M currentbranch currentbranch" cannot + * cause the worktree to become inconsistent with HEAD, so allow it. + */ + clobber_head_ok = !strcmp(oldname, newname); + + validate_new_branchname(newname, &newref, force, clobber_head_ok); strbuf_addf(&logmsg, "Branch: renamed %s to %s", oldref.buf, newref.buf); @@ -730,7 +737,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix) if (kinds != REF_LOCAL_BRANCH) die(_("-a and -r options to 'git branch' do not make sense with a branch name")); create_branch(head, argv[0], (argc == 2) ? argv[1] : head, - force_create, reflog, track); + force_create, reflog, 0, track); } else usage_with_options(builtin_branch_usage, options); |