git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] rebase: save autostash entry into stash reflog on --quit

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 28, 2020, 19:35 UTC
Message-ID
<xmqqv9lj1k0c.fsf@gitster.c.googlers.com>
In-Reply-To
<353a67567a90aea8a90bce1de05d005c61b3b670.1588066252.git.liu.denton@gmail.com>
Denton Liu <liu.denton@gmail.com> writes:
Show 10 quoted lines
> In a03b55530a (merge: teach --autostash option, 2020-04-07), the
> --autostash option was introduced for `git merge`. Notably, when
> `git merge --quit` is run with an autostash entry present, it is saved
> into the stash reflog. This is contrasted with the current behaviour of
> `git rebase --quit` where the autostash entry is simply just dropped out
> of existence.
>
> Adopt the behaviour of `git merge --quit` in `git rebase --quit` and
> save the autostash entry into the stash reflog instead of just deleting
> it.

The goal is wrothy, I would think, but I do not think we would explain it in terms of "stash reflog". It is true that what "stash list" shows, the list of stasn entries, happens to be implemented as reflog entries of a single ref, but the end users would not view them as reflog entries, I suspect. Do you know anybody who would do "git reflog stash@{now}"?

It is less bad to explain with "reflog of stash ref" in the log message, meant to be read by our future developers, but ...

Show 11 quoted lines
> diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt
> index f7a6033607..7d0c89a184 100644
> --- a/Documentation/git-rebase.txt
> +++ b/Documentation/git-rebase.txt
> @@ -256,7 +256,8 @@ See also INCOMPATIBLE OPTIONS below.
>  --quit::
>  	Abort the rebase operation but HEAD is not reset back to the
>  	original branch. The index and working tree are also left
> -	unchanged as a result.
> +	unchanged as a result. If a temporary stash entry was created
> +	using --autostash, it will be saved to the stash reflog.

... let's not do so for end-user facing documentation. "..., it will be stashed away". Or we may not even want to say anything; any "--autostash" user would expect that the changes that were stashed before "rebase" started would not be discarded, and this change may just be a bugfix.

Show 11 quoted lines
> diff --git a/builtin/rebase.c b/builtin/rebase.c
> index bc4fc69906..71aec532b1 100644
> --- a/builtin/rebase.c
> +++ b/builtin/rebase.c
> @@ -1556,6 +1556,7 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
>  		goto cleanup;
>  	}
>  	case ACTION_QUIT: {
> +		save_autostash(state_dir_path("autostash", &options));
>  		if (options.type == REBASE_MERGE) {
>  			struct replay_opts replay = REPLAY_OPTS_INIT;
Nice to see a fix as simple a this one ;-)
Previous: Denton LiuNext: Denton Liu
Message 2 of 5 in “rebase: save autostash entry into stash reflog on --quit”
  1. rebase: save autostash entry into stash reflog on --quitDenton Liu, Apr 28, 2020
  2. Junio C HamanoApr 28, 2020
  3. Denton LiuApr 29, 2020
  4. Phillip WoodApr 30, 2020
  5. Phillip WoodApr 30, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.