run_hooks_l(the_repository, "post-merge", squash ? "1" : "0", NULL);
if (new_head)
- apply_autostash_ref(the_repository, "MERGE_AUTOSTASH");
+ apply_autostash_ref(the_repository, "MERGE_AUTOSTASH",
+ NULL, NULL, NULL, NULL);
strbuf_release(&reflog_message);
}
&head_commit->object.oid,
&commit->object.oid,
overwrite_ignore)) {
- apply_autostash_ref(the_repository, "MERGE_AUTOSTASH");
+ apply_autostash_ref(the_repository, "MERGE_AUTOSTASH",
+ NULL, NULL, NULL, NULL);
ret = 1;
goto done;
}
else
fprintf(stderr, _("Merge with strategy %s failed.\n"),
use_strategies[0]->name);
- apply_autostash_ref(the_repository, "MERGE_AUTOSTASH");
+ apply_autostash_ref(the_repository, "MERGE_AUTOSTASH",
+ NULL, NULL, NULL, NULL);
ret = 2;
goto done;
} else if (best_strategy == wt_strategy)
create_autostash_internal(r, NULL, refname, message, silent);
}
-static int apply_save_autostash_oid(const char *stash_oid, int attempt_apply)
+static int apply_save_autostash_oid(const char *stash_oid, int attempt_apply,
+ const char *label_ours, const char *label_theirs,
+ const char *label_base,
+ const char *stash_msg)
{
struct child_process child = CHILD_PROCESS_INIT;
int ret = 0;
child.no_stderr = 1;
strvec_push(&child.args, "stash");
strvec_push(&child.args, "apply");
+ if (label_ours)
+ strvec_pushf(&child.args, "--label-ours=%s", label_ours);
+ if (label_theirs)
+ strvec_pushf(&child.args, "--label-theirs=%s", label_theirs);
+ if (label_base)
+ strvec_pushf(&child.args, "--label-base=%s", label_base);
strvec_push(&child.args, stash_oid);
ret = run_command(&child);
}
strvec_push(&store.args, "stash");
strvec_push(&store.args, "store");
strvec_push(&store.args, "-m");
- strvec_push(&store.args, "autostash");
+ strvec_push(&store.args, stash_msg ? stash_msg : "autostash");
strvec_push(&store.args, "-q");
strvec_push(&store.args, stash_oid);
if (run_command(&store))
}
strbuf_trim(&stash_oid);
- ret = apply_save_autostash_oid(stash_oid.buf, attempt_apply);
+ ret = apply_save_autostash_oid(stash_oid.buf, attempt_apply,
+ NULL, NULL, NULL, NULL);
unlink(path);
strbuf_release(&stash_oid);
int apply_autostash_oid(const char *stash_oid)
{
- return apply_save_autostash_oid(stash_oid, 1);
+ return apply_save_autostash_oid(stash_oid, 1, NULL, NULL, NULL, NULL);
}
static int apply_save_autostash_ref(struct repository *r, const char *refname,
- int attempt_apply)
+ int attempt_apply,
+ const char *label_ours, const char *label_theirs,
+ const char *label_base,
+ const char *stash_msg)
{
struct object_id stash_oid;
char stash_oid_hex[GIT_MAX_HEXSZ + 1];
return error(_("autostash reference is a symref"));
oid_to_hex_r(stash_oid_hex, &stash_oid);
- ret = apply_save_autostash_oid(stash_oid_hex, attempt_apply);
+ ret = apply_save_autostash_oid(stash_oid_hex, attempt_apply,
+ label_ours, label_theirs, label_base,
+ stash_msg);
refs_delete_ref(get_main_ref_store(r), "", refname,
&stash_oid, REF_NO_DEREF);
int save_autostash_ref(struct repository *r, const char *refname)
{
- return apply_save_autostash_ref(r, refname, 0);
+ return apply_save_autostash_ref(r, refname, 0,
+ NULL, NULL, NULL, NULL);
}
-int apply_autostash_ref(struct repository *r, const char *refname)
+int apply_autostash_ref(struct repository *r, const char *refname,
+ const char *label_ours, const char *label_theirs,
+ const char *label_base, const char *stash_msg)
{
- return apply_save_autostash_ref(r, refname, 1);
+ return apply_save_autostash_ref(r, refname, 1,
+ label_ours, label_theirs, label_base,
+ stash_msg);
}
static int checkout_onto(struct repository *r, struct replay_opts *opts,