Hi Phillip, On Thu, 18 May 2017, Phillip Wood wrote: > The shell version prints it's own error message if there's an error, the > C version does this as well > > Shell version: > apply_autostash () { > if test -f "$state_dir/autostash" > then > stash_sha1=$(cat "$state_dir/autostash") > if git stash apply $stash_sha1 2>&1 >/dev/null > then > echo "$(gettext 'Applied autostash.')" > else > git stash store -m "autostash" -q $stash_sha1 || > die "$(eval_gettext "Cannot store \$stash_sha1")" > gettext 'Applying autostash resulted in conflicts. > Your changes are safe in the stash. > You can run "git stash pop" or "git stash drop" at any time. > ' > fi > fi > } > > C version: > static int apply_autostash(struct replay_opts *opts) > { > struct strbuf stash_sha1 = STRBUF_INIT; > struct child_process child = CHILD_PROCESS_INIT; > int ret = 0; > > if (!read_oneliner(&stash_sha1, rebase_path_autostash(), 1)) { > strbuf_release(&stash_sha1); > return 0; > } > strbuf_trim(&stash_sha1); > > child.git_cmd = 1; > child.no_stdout = 1; > child.no_stderr = 1; > argv_array_push(&child.args, "stash"); > argv_array_push(&child.args, "apply"); > argv_array_push(&child.args, stash_sha1.buf); > if (!run_command(&child)) > printf(_("Applied autostash.\n")); > else { > struct child_process store = CHILD_PROCESS_INIT; > > store.git_cmd = 1; > argv_array_push(&store.args, "stash"); > argv_array_push(&store.args, "store"); > argv_array_push(&store.args, "-m"); > argv_array_push(&store.args, "autostash"); > argv_array_push(&store.args, "-q"); > argv_array_push(&store.args, stash_sha1.buf); > if (run_command(&store)) > ret = error(_("cannot store %s"), stash_sha1.buf); > else > printf(_("Applying autostash resulted in conflicts.\n" > "Your changes are safe in the stash.\n" > "You can run \"git stash pop\" or" > " \"git stash drop\" at any time.\n")); > } > > strbuf_release(&stash_sha1); > return ret; > } Oh, you're right, I misremembered. Thank you for being so thorough. This patch is Acked-by: me, then. Thanks, Johannes