sequencer: implement apply_autostash_oid()
Split apply_save_autostash() into apply_autostash_oid() and apply_save_autostash() where the former operates on an OID string and the latter reads the OID from a file before passing it into apply_save_autostash_oid(). This function is required for a future commmit which will rely on being able to apply an autostash whose OID is stored as a string. Signed-off-by: Denton Liu <liu.denton@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
12b6e1367a
commit
804fe31557
38
sequencer.c
38
sequencer.c
|
@ -3707,26 +3707,18 @@ void create_autostash(struct repository *r, const char *path,
|
||||||
strbuf_release(&buf);
|
strbuf_release(&buf);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int apply_save_autostash(const char *path, int attempt_apply)
|
static int apply_save_autostash_oid(const char *stash_oid, int attempt_apply)
|
||||||
{
|
{
|
||||||
struct strbuf stash_oid = STRBUF_INIT;
|
|
||||||
struct child_process child = CHILD_PROCESS_INIT;
|
struct child_process child = CHILD_PROCESS_INIT;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (!read_oneliner(&stash_oid, path,
|
|
||||||
READ_ONELINER_SKIP_IF_EMPTY)) {
|
|
||||||
strbuf_release(&stash_oid);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
strbuf_trim(&stash_oid);
|
|
||||||
|
|
||||||
if (attempt_apply) {
|
if (attempt_apply) {
|
||||||
child.git_cmd = 1;
|
child.git_cmd = 1;
|
||||||
child.no_stdout = 1;
|
child.no_stdout = 1;
|
||||||
child.no_stderr = 1;
|
child.no_stderr = 1;
|
||||||
argv_array_push(&child.args, "stash");
|
argv_array_push(&child.args, "stash");
|
||||||
argv_array_push(&child.args, "apply");
|
argv_array_push(&child.args, "apply");
|
||||||
argv_array_push(&child.args, stash_oid.buf);
|
argv_array_push(&child.args, stash_oid);
|
||||||
ret = run_command(&child);
|
ret = run_command(&child);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3741,9 +3733,9 @@ static int apply_save_autostash(const char *path, int attempt_apply)
|
||||||
argv_array_push(&store.args, "-m");
|
argv_array_push(&store.args, "-m");
|
||||||
argv_array_push(&store.args, "autostash");
|
argv_array_push(&store.args, "autostash");
|
||||||
argv_array_push(&store.args, "-q");
|
argv_array_push(&store.args, "-q");
|
||||||
argv_array_push(&store.args, stash_oid.buf);
|
argv_array_push(&store.args, stash_oid);
|
||||||
if (run_command(&store))
|
if (run_command(&store))
|
||||||
ret = error(_("cannot store %s"), stash_oid.buf);
|
ret = error(_("cannot store %s"), stash_oid);
|
||||||
else
|
else
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
_("%s\n"
|
_("%s\n"
|
||||||
|
@ -3755,6 +3747,23 @@ static int apply_save_autostash(const char *path, int attempt_apply)
|
||||||
_("Autostash exists; creating a new stash entry."));
|
_("Autostash exists; creating a new stash entry."));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int apply_save_autostash(const char *path, int attempt_apply)
|
||||||
|
{
|
||||||
|
struct strbuf stash_oid = STRBUF_INIT;
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
if (!read_oneliner(&stash_oid, path,
|
||||||
|
READ_ONELINER_SKIP_IF_EMPTY)) {
|
||||||
|
strbuf_release(&stash_oid);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
strbuf_trim(&stash_oid);
|
||||||
|
|
||||||
|
ret = apply_save_autostash_oid(stash_oid.buf, attempt_apply);
|
||||||
|
|
||||||
unlink(path);
|
unlink(path);
|
||||||
strbuf_release(&stash_oid);
|
strbuf_release(&stash_oid);
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -3770,6 +3779,11 @@ int apply_autostash(const char *path)
|
||||||
return apply_save_autostash(path, 1);
|
return apply_save_autostash(path, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int apply_autostash_oid(const char *stash_oid)
|
||||||
|
{
|
||||||
|
return apply_save_autostash_oid(stash_oid, 1);
|
||||||
|
}
|
||||||
|
|
||||||
static const char *reflog_message(struct replay_opts *opts,
|
static const char *reflog_message(struct replay_opts *opts,
|
||||||
const char *sub_action, const char *fmt, ...)
|
const char *sub_action, const char *fmt, ...)
|
||||||
{
|
{
|
||||||
|
|
|
@ -195,6 +195,7 @@ void create_autostash(struct repository *r, const char *path,
|
||||||
const char *default_reflog_action);
|
const char *default_reflog_action);
|
||||||
int save_autostash(const char *path);
|
int save_autostash(const char *path);
|
||||||
int apply_autostash(const char *path);
|
int apply_autostash(const char *path);
|
||||||
|
int apply_autostash_oid(const char *stash_oid);
|
||||||
|
|
||||||
#define SUMMARY_INITIAL_COMMIT (1 << 0)
|
#define SUMMARY_INITIAL_COMMIT (1 << 0)
|
||||||
#define SUMMARY_SHOW_AUTHOR_DATE (1 << 1)
|
#define SUMMARY_SHOW_AUTHOR_DATE (1 << 1)
|
||||||
|
|
Loading…
Reference in New Issue