diff options
Diffstat (limited to 'branch.c')
| -rw-r--r-- | branch.c | 33 |
1 files changed, 20 insertions, 13 deletions
@@ -5,6 +5,7 @@ #include "refs.h" #include "refspec.h" #include "remote.h" +#include "sequencer.h" #include "commit.h" #include "worktree.h" @@ -242,7 +243,8 @@ N_("\n" "will track its remote counterpart, you may want to use\n" "\"git push -u\" to set the upstream config as you push."); -void create_branch(const char *name, const char *start_name, +void create_branch(struct repository *r, + const char *name, const char *start_name, int force, int clobber_head_ok, int reflog, int quiet, enum branch_track track) { @@ -267,7 +269,7 @@ void create_branch(const char *name, const char *start_name, } real_ref = NULL; - if (get_oid(start_name, &oid)) { + if (get_oid_mb(start_name, &oid)) { if (explicit_tracking) { if (advice_set_upstream_failure) { error(_(upstream_missing), start_name); @@ -279,7 +281,7 @@ void create_branch(const char *name, const char *start_name, die(_("Not a valid object name: '%s'."), start_name); } - switch (dwim_ref(start_name, strlen(start_name), &oid, &real_ref)) { + switch (dwim_ref(start_name, strlen(start_name), &oid, &real_ref, 0)) { case 0: /* Not branching from any existing branch */ if (explicit_tracking) @@ -300,7 +302,7 @@ void create_branch(const char *name, const char *start_name, break; } - if ((commit = lookup_commit_reference(the_repository, &oid)) == NULL) + if ((commit = lookup_commit_reference(r, &oid)) == NULL) die(_("Not a valid branch point: '%s'."), start_name); oidcpy(&oid, &commit->object.oid); @@ -336,15 +338,20 @@ void create_branch(const char *name, const char *start_name, free(real_ref); } -void remove_branch_state(void) +void remove_merge_branch_state(struct repository *r) { - unlink(git_path_cherry_pick_head(the_repository)); - unlink(git_path_revert_head(the_repository)); - unlink(git_path_merge_head(the_repository)); - unlink(git_path_merge_rr(the_repository)); - unlink(git_path_merge_msg(the_repository)); - unlink(git_path_merge_mode(the_repository)); - unlink(git_path_squash_msg(the_repository)); + unlink(git_path_merge_head(r)); + unlink(git_path_merge_rr(r)); + unlink(git_path_merge_msg(r)); + unlink(git_path_merge_mode(r)); + save_autostash(git_path_merge_autostash(r)); +} + +void remove_branch_state(struct repository *r, int verbose) +{ + sequencer_post_commit_cleanup(r, verbose); + unlink(git_path_squash_msg(r)); + remove_merge_branch_state(r); } void die_if_checked_out(const char *branch, int ignore_current_worktree) @@ -363,7 +370,7 @@ int replace_each_worktree_head_symref(const char *oldref, const char *newref, const char *logmsg) { int ret = 0; - struct worktree **worktrees = get_worktrees(0); + struct worktree **worktrees = get_worktrees(); int i; for (i = 0; worktrees[i]; i++) { |
