Git development
 help / color / mirror / Atom feed
From: "Harald Nordgren via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: Phillip Wood <phillip.wood123@gmail.com>,
	Chris Torek <chris.torek@gmail.com>, Jeff King <peff@peff.net>,
	Harald Nordgren <haraldnordgren@gmail.com>
Subject: [PATCH v16 0/5] checkout: 'autostash' for branch switching
Date: Tue, 28 Apr 2026 18:39:07 +0000	[thread overview]
Message-ID: <pull.2234.v16.git.git.1777401552.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.2234.v15.git.git.1777065012.gitgitgadget@gmail.com>

 * Updated the git checkout and git switch docs to show the actual output
   when using -m to carry local changes across a branch switch, and changed
   "would carry" to "will carry".
 * Rewrote the merge-conflict example in both docs to match the new, more
   concise message printed on autostash conflicts.
 * Replaced the show_unpack_errors flag and old_commit parameter in
   merge_working_tree()/init_topts() with a plain quiet boolean, so the
   caller decides directly whether to suppress unpack errors.
 * Tightened the 'checkout -m with dirty tree' test by replacing a printf
   with a heredoc.
 * Made the 'checkout -m creates a recoverable stash on conflict' test also
   assert the reflog subject of the new stash entry.
 * Replaced two test_grep calls in the 'checkout -m which would overwrite
   untracked file' test with a single test_cmp, which also catches a
   regression where the "would be overwritten" message could end up printed
   twice.

Harald Nordgren (5):
  stash: add --label-ours, --label-theirs, --label-base for apply
  sequencer: allow create_autostash to run silently
  sequencer: teach autostash apply to take optional conflict marker
    labels
  checkout: rollback lock on early returns in merge_working_tree
  checkout -m: autostash when switching branches

 Documentation/git-checkout.adoc |  55 +++++------
 Documentation/git-stash.adoc    |  11 ++-
 Documentation/git-switch.adoc   |  36 ++++---
 builtin/checkout.c              | 166 +++++++++++++++-----------------
 builtin/commit.c                |   3 +-
 builtin/merge.c                 |  15 ++-
 builtin/stash.c                 |  28 ++++--
 sequencer.c                     |  69 +++++++++----
 sequencer.h                     |   7 +-
 t/t3420-rebase-autostash.sh     |  16 +--
 t/t3903-stash.sh                |  24 +++++
 t/t7201-co.sh                   |  71 +++++++++++++-
 t/t7600-merge.sh                |   3 +-
 xdiff-interface.c               |  12 +++
 xdiff-interface.h               |   1 +
 xdiff/xmerge.c                  |   6 +-
 16 files changed, 343 insertions(+), 180 deletions(-)


base-commit: 94f057755b7941b321fd11fec1b2e3ca5313a4e0
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2234%2FHaraldNordgren%2Fcheckout_autostash-v16
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2234/HaraldNordgren/checkout_autostash-v16
Pull-Request: https://github.com/git/git/pull/2234

Range-diff vs v15:

 1:  aba8e6a9dc = 1:  aba8e6a9dc stash: add --label-ours, --label-theirs, --label-base for apply
 2:  89e0bfa803 = 2:  89e0bfa803 sequencer: allow create_autostash to run silently
 3:  a428ce7328 = 3:  a428ce7328 sequencer: teach autostash apply to take optional conflict marker labels
 4:  f358424085 = 4:  f358424085 checkout: rollback lock on early returns in merge_working_tree
 5:  96b14db827 ! 5:  07d25fda91 checkout -m: autostash when switching branches
     @@ Documentation/git-checkout.adoc: $ git checkout mytopic
       
      -You can give the `-m` flag to the command, which would try a
      -three-way merge:
     -+You can give the `-m` flag to the command, which would carry your local
     ++You can give the `-m` flag to the command, which will carry your local
      +changes to the new branch:
       
       ------------
       $ git checkout -m mytopic
      -Auto-merging frotz
     ++Applied autostash.
      +Switched to branch 'mytopic'
     ++The following paths have local changes:
     ++M	frotz
       ------------
       
      -After this three-way merge, the local modifications are _not_
     @@ Documentation/git-checkout.adoc: $ git checkout mytopic
       
      -When a merge conflict happens during switching branches with
      -the `-m` option, you would see something like this:
     -+When the `--merge` (`-m`) option is in effect and the locally
     -+modified files overlap with files that need to be updated by the
     -+branch switch, the changes are stashed and reapplied after the
     -+switch.  If this process results in conflicts, a stash entry is saved
     -+and made available in `git stash list`:
     ++When the `--merge` (`-m`) option is given and the local changes
     ++overlap with the changes in the branch we're switching to, the
     ++changes are stashed and reapplied after the switch.  If this
     ++process results in conflicts, the stash entry is saved and a
     ++message is printed:
       
       ------------
       $ git checkout -m mytopic
     @@ Documentation/git-checkout.adoc: $ git checkout mytopic
      -ERROR: Merge conflict in frotz
      -fatal: merge program failed
      -------------
     -+Your local changes are stashed, however, applying it to carry
     -+forward your local changes resulted in conflicts:
     - 
     +-
      -At this point, `git diff` shows the changes cleanly merged as in
      -the previous example, as well as the changes in the conflicted
      -files.  Edit and resolve the conflict and mark it resolved with
      -`git add` as usual:
     -+ - You can try resolving them now.  If you resolved them
     -+   successfully, discard the stash entry with "git stash drop".
     - 
     -+ - Alternatively you can "git reset --hard" if you do not want
     -+   to deal with them right now, and later "git stash pop" to
     -+   recover your local changes.
     - ------------
     +-
     +-------------
      -$ edit frotz
      -$ git add frotz
     --------------
     -+
     -+You can try resolving the conflicts now.  Edit the conflicting files
     -+and mark them resolved with `git add` as usual, then run `git stash
     -+drop` to discard the stash entry.  Alternatively, you can clear the
     -+working tree with `git reset --hard` and recover your local changes
     -+later with `git stash pop`.
     ++Your local changes are stashed, however applying them
     ++resulted in conflicts.  You can either resolve the conflicts
     ++and then discard the stash with "git stash drop", or, if you
     ++do not want to resolve them now, run "git reset --hard" and
     ++apply the local changes later by running "git stash pop".
     + ------------
       
       CONFIGURATION
     - -------------
      
       ## Documentation/git-switch.adoc ##
      @@ Documentation/git-switch.adoc: variable.
     @@ Documentation/git-switch.adoc: $ git switch mytopic
       
      -You can give the `-m` flag to the command, which would try a three-way
      -merge:
     -+You can give the `-m` flag to the command, which would carry your local
     ++You can give the `-m` flag to the command, which will carry your local
      +changes to the new branch:
       
       ------------
       $ git switch -m mytopic
      -Auto-merging frotz
     ++Applied autostash.
      +Switched to branch 'mytopic'
     ++The following paths have local changes:
     ++M	frotz
       ------------
       
      -After this three-way merge, the local modifications are _not_
     @@ builtin/checkout.c: struct checkout_opts {
       	char *name; /* The short name used */
       	char *path; /* The full name of a real branch */
      @@ builtin/checkout.c: static void setup_branch_path(struct branch_info *branch)
     + 	branch->path = strbuf_detach(&buf, NULL);
     + }
       
     - static void init_topts(struct unpack_trees_options *topts, int merge,
     +-static void init_topts(struct unpack_trees_options *topts, int merge,
     ++static void init_topts(struct unpack_trees_options *topts,
       		       int show_progress, int overwrite_ignore,
      -		       struct commit *old_commit)
     -+		       struct commit *old_commit, bool show_unpack_errors)
     ++		       bool quiet)
       {
       	memset(topts, 0, sizeof(*topts));
       	topts->head_idx = -1;
     @@ builtin/checkout.c: static void init_topts(struct unpack_trees_options *topts, i
       	topts->update = 1;
       	topts->merge = 1;
      -	topts->quiet = merge && old_commit;
     -+	topts->quiet = merge && old_commit && !show_unpack_errors;
     ++	topts->quiet = quiet;
       	topts->verbose_update = show_progress;
       	topts->fn = twoway_merge;
       	topts->preserve_ignored = !overwrite_ignore;
     @@ builtin/checkout.c: static void init_topts(struct unpack_trees_options *topts, i
       static int merge_working_tree(const struct checkout_opts *opts,
       			      struct branch_info *old_branch_info,
       			      struct branch_info *new_branch_info,
     --			      int *writeout_error)
     -+			      int *writeout_error,
     -+			      bool show_unpack_errors)
     ++			      bool quiet,
     + 			      int *writeout_error)
       {
       	int ret;
     - 	struct lock_file lock_file = LOCK_INIT;
      @@ builtin/checkout.c: static int merge_working_tree(const struct checkout_opts *opts,
     + 		}
       
       		/* 2-way merge to the new branch */
     - 		init_topts(&topts, opts->merge, opts->show_progress,
     +-		init_topts(&topts, opts->merge, opts->show_progress,
      -			   opts->overwrite_ignore, old_branch_info->commit);
     -+			   opts->overwrite_ignore, old_branch_info->commit,
     -+			   show_unpack_errors);
     ++		init_topts(&topts, opts->show_progress,
     ++			   opts->overwrite_ignore, quiet);
       		init_checkout_metadata(&topts.meta, new_branch_info->refname,
       				       new_branch_info->commit ?
       				       &new_branch_info->commit->object.oid :
     @@ builtin/checkout.c: static int switch_branches(const struct checkout_opts *opts,
       	if (do_merge) {
      -		ret = merge_working_tree(opts, &old_branch_info, new_branch_info, &writeout_error);
      +		ret = merge_working_tree(opts, &old_branch_info, new_branch_info,
     -+					 &writeout_error, false);
     ++					 opts->merge, &writeout_error);
      +		if (ret == MERGE_WORKING_TREE_UNPACK_FAILED && opts->merge) {
      +			strbuf_addf(&autostash_msg,
      +				    "autostash while switching to '%s'",
     @@ builtin/checkout.c: static int switch_branches(const struct checkout_opts *opts,
      +					     autostash_msg.buf, true);
      +			created_autostash = 1;
      +			ret = merge_working_tree(opts, &old_branch_info, new_branch_info,
     -+						 &writeout_error, true);
     ++						 false, &writeout_error);
      +		}
      +		if (created_autostash) {
      +			if (opts->conflict_style >= 0) {
     @@ t/t7201-co.sh: test_expect_success 'checkout -m with dirty tree' '
       	test "$(git symbolic-ref HEAD)" = "refs/heads/side" &&
       
      -	printf "M\t%s\n" one >expect.messages &&
     -+	printf "The following paths have local changes:\nM\t%s\n" one >expect.messages &&
     ++	cat >expect.messages <<-\EOF &&
     ++	The following paths have local changes:
     ++	M	one
     ++	EOF
       	test_cmp expect.messages messages &&
       
       	fill "M	one" "A	three" "D	two" >expect.main &&
     @@ t/t7201-co.sh: test_expect_success 'checkout --merge --conflict=diff3 <branch>'
      +	test_grep "git stash drop" actual &&
      +	test_grep "git stash pop" actual &&
      +	test_grep "The following paths have local changes" actual &&
     -+	git show --format=%B --diff-merges=1 refs/stash >actual &&
     ++	git log -p -1 --format="%gs%n%B" -g --diff-merges=1 refs/stash >actual &&
      +	sed /^index/d actual >actual.trimmed &&
      +	cat >expect <<-EOF &&
     ++	autostash while switching to ${SQ}side${SQ}
      +	On main: autostash while switching to ${SQ}side${SQ}
      +
      +	diff --git a/one b/one
     @@ t/t7201-co.sh: test_expect_success 'checkout --merge --conflict=diff3 <branch>'
      +	>another-file.t &&
      +	fill 1 2 3 4 5 >one &&
      +	test_must_fail git checkout -m @{-1} 2>err &&
     -+	test_grep "would be overwritten by checkout" err &&
     -+	test_grep "another-file.t" err
     ++	q_to_tab >expect <<-\EOF &&
     ++	error: The following untracked working tree files would be overwritten by checkout:
     ++	Qanother-file.t
     ++	Please move or remove them before you switch branches.
     ++	Aborting
     ++	Applied autostash.
     ++	EOF
     ++	test_cmp expect err
      +'
      +
       test_expect_success 'switch to another branch while carrying a deletion' '

-- 
gitgitgadget

  parent reply	other threads:[~2026-04-28 18:39 UTC|newest]

Thread overview: 164+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-12 13:26 [PATCH] checkout: add --autostash option for branch switching Harald Nordgren via GitGitGadget
2026-03-12 14:40 ` Junio C Hamano
2026-03-12 19:33   ` [PATCH v31 0/2] status: add status.compareBranches config for multiple branch comparisons Harald Nordgren
2026-03-13 14:29   ` [PATCH] checkout: add --autostash option for branch switching Phillip Wood
2026-03-14 17:17     ` Junio C Hamano
2026-03-16 16:36       ` Phillip Wood
2026-03-16 20:04         ` Junio C Hamano
2026-03-17  9:47           ` Harald Nordgren
2026-03-19  8:25             ` Harald Nordgren
2026-03-19 16:48               ` Junio C Hamano
2026-03-31 12:16                 ` Harald Nordgren
2026-04-09 11:50                   ` Harald Nordgren
2026-04-09 12:06                   ` Harald Nordgren
2026-04-09 18:35                     ` Junio C Hamano
2026-04-09 21:29                       ` Harald Nordgren
2026-04-09 12:12                   ` Harald Nordgren
2026-03-12 19:33 ` [PATCH v2] " Harald Nordgren via GitGitGadget
2026-03-12 19:50   ` Junio C Hamano
2026-03-13  9:22     ` [PATCH] " Harald Nordgren
2026-03-13  9:23   ` [PATCH v3] " Harald Nordgren via GitGitGadget
2026-03-13 17:16     ` Junio C Hamano
2026-03-13 19:33       ` [PATCH] " Harald Nordgren
2026-03-13 20:30         ` Junio C Hamano
2026-03-14  9:59     ` [PATCH v4] checkout: -m (--merge) uses autostash when switching branches Harald Nordgren via GitGitGadget
2026-03-15  2:25       ` Junio C Hamano
2026-03-15 11:19       ` [PATCH v5 0/4] checkout: 'autostash' for branch switching Harald Nordgren via GitGitGadget
2026-03-15 11:19         ` [PATCH v5 1/4] stash: add --ours-label, --theirs-label, --base-label for apply Harald Nordgren via GitGitGadget
2026-03-15 11:19         ` [PATCH v5 2/4] sequencer: allow create_autostash to run silently Harald Nordgren via GitGitGadget
2026-03-15 11:19         ` [PATCH v5 3/4] sequencer: teach autostash apply to take optional conflict marker labels Harald Nordgren via GitGitGadget
2026-03-15 11:19         ` [PATCH v5 4/4] checkout: -m (--merge) uses autostash when switching branches Harald Nordgren via GitGitGadget
2026-03-17  9:35         ` [PATCH v6 0/4] checkout: 'autostash' for branch switching Harald Nordgren via GitGitGadget
2026-03-17  9:35           ` [PATCH v6 1/4] stash: add --ours-label, --theirs-label, --base-label for apply Harald Nordgren via GitGitGadget
2026-03-17  9:35           ` [PATCH v6 2/4] sequencer: allow create_autostash to run silently Harald Nordgren via GitGitGadget
2026-03-17  9:35           ` [PATCH v6 3/4] sequencer: teach autostash apply to take optional conflict marker labels Harald Nordgren via GitGitGadget
2026-03-17  9:35           ` [PATCH v6 4/4] checkout: -m (--merge) uses autostash when switching branches Harald Nordgren via GitGitGadget
2026-04-09 13:27           ` [PATCH v7 0/4] checkout: 'autostash' for branch switching Harald Nordgren via GitGitGadget
2026-04-09 13:27             ` [PATCH v7 1/4] stash: add --ours-label, --theirs-label, --base-label for apply Harald Nordgren via GitGitGadget
2026-04-09 17:25               ` Junio C Hamano
2026-04-09 20:31                 ` [PATCH] checkout: add --autostash option for branch switching Harald Nordgren
2026-04-09 13:27             ` [PATCH v7 2/4] sequencer: allow create_autostash to run silently Harald Nordgren via GitGitGadget
2026-04-09 13:27             ` [PATCH v7 3/4] sequencer: teach autostash apply to take optional conflict marker labels Harald Nordgren via GitGitGadget
2026-04-09 17:32               ` Junio C Hamano
2026-04-09 21:20                 ` [PATCH] checkout: add --autostash option for branch switching Harald Nordgren
2026-04-09 13:27             ` [PATCH v7 4/4] checkout: -m (--merge) uses autostash when switching branches Harald Nordgren via GitGitGadget
2026-04-09 17:55               ` Junio C Hamano
2026-04-09 20:32                 ` [PATCH] checkout: add --autostash option for branch switching Harald Nordgren
2026-04-09 17:00             ` [PATCH v7 0/4] checkout: 'autostash' " Junio C Hamano
2026-04-09 21:23               ` [PATCH] checkout: add --autostash option " Harald Nordgren
2026-04-09 19:17             ` [PATCH v8 0/4] checkout: 'autostash' " Harald Nordgren via GitGitGadget
2026-04-09 19:17               ` [PATCH v8 1/4] stash: add --ours-label, --theirs-label, --base-label for apply Harald Nordgren via GitGitGadget
2026-04-10 15:39                 ` Phillip Wood
2026-04-10 16:15                   ` Junio C Hamano
2026-04-10 19:18                   ` [PATCH] checkout: add --autostash option for branch switching Harald Nordgren
2026-04-09 19:17               ` [PATCH v8 2/4] sequencer: allow create_autostash to run silently Harald Nordgren via GitGitGadget
2026-04-10 15:39                 ` Phillip Wood
2026-04-10 16:16                   ` Junio C Hamano
2026-04-10 18:53                   ` [PATCH] checkout: add --autostash option for branch switching Harald Nordgren
2026-04-09 19:17               ` [PATCH v8 3/4] sequencer: teach autostash apply to take optional conflict marker labels Harald Nordgren via GitGitGadget
2026-04-10 15:39                 ` Phillip Wood
2026-04-10 16:34                   ` Junio C Hamano
2026-04-10 18:48                     ` [PATCH] checkout: add --autostash option for branch switching Harald Nordgren
2026-04-09 19:17               ` [PATCH v8 4/4] checkout: -m (--merge) uses autostash when switching branches Harald Nordgren via GitGitGadget
2026-04-09 23:49                 ` Chris Torek
2026-04-10 14:38                   ` [PATCH] checkout: add --autostash option for branch switching Harald Nordgren
2026-04-10 21:01               ` [PATCH v9 0/4] checkout: 'autostash' " Harald Nordgren via GitGitGadget
2026-04-10 21:01                 ` [PATCH v9 1/4] stash: add --label-ours, --label-theirs, --label-base for apply Harald Nordgren via GitGitGadget
2026-04-10 21:01                 ` [PATCH v9 2/4] sequencer: allow create_autostash to run silently Harald Nordgren via GitGitGadget
2026-04-10 21:01                 ` [PATCH v9 3/4] sequencer: teach autostash apply to take optional conflict marker labels Harald Nordgren via GitGitGadget
2026-04-10 21:01                 ` [PATCH v9 4/4] checkout: -m (--merge) uses autostash when switching branches Harald Nordgren via GitGitGadget
2026-04-11 18:38                   ` Jeff King
2026-04-11 18:51                     ` [PATCH] checkout: add --autostash option for branch switching Harald Nordgren
2026-04-11 19:11                       ` Jeff King
2026-04-11 19:07                     ` [PATCH v9 4/4] checkout: -m (--merge) uses autostash when switching branches Jeff King
2026-04-10 21:53                 ` [PATCH v9 0/4] checkout: 'autostash' for branch switching Junio C Hamano
2026-04-12 11:51                 ` [PATCH v10 " Harald Nordgren via GitGitGadget
2026-04-12 11:51                   ` [PATCH v10 1/4] stash: add --label-ours, --label-theirs, --label-base for apply Harald Nordgren via GitGitGadget
2026-04-12 11:51                   ` [PATCH v10 2/4] sequencer: allow create_autostash to run silently Harald Nordgren via GitGitGadget
2026-04-12 11:51                   ` [PATCH v10 3/4] sequencer: teach autostash apply to take optional conflict marker labels Harald Nordgren via GitGitGadget
2026-04-12 11:51                   ` [PATCH v10 4/4] checkout: -m (--merge) uses autostash when switching branches Harald Nordgren via GitGitGadget
2026-04-12 20:01                   ` [PATCH v10 0/4] checkout: 'autostash' for branch switching Jeff King
2026-04-13 22:45                   ` Junio C Hamano
2026-04-14  7:29                     ` [PATCH] checkout: add --autostash option " Harald Nordgren
2026-04-14 13:29                       ` Junio C Hamano
2026-04-14 14:14                         ` Junio C Hamano
2026-04-14 17:42                         ` Junio C Hamano
2026-04-14 10:50                   ` [PATCH v11 0/4] checkout: 'autostash' " Harald Nordgren via GitGitGadget
2026-04-14 10:50                     ` [PATCH v11 1/4] stash: add --label-ours, --label-theirs, --label-base for apply Harald Nordgren via GitGitGadget
2026-04-14 10:50                     ` [PATCH v11 2/4] sequencer: allow create_autostash to run silently Harald Nordgren via GitGitGadget
2026-04-14 10:50                     ` [PATCH v11 3/4] sequencer: teach autostash apply to take optional conflict marker labels Harald Nordgren via GitGitGadget
2026-04-14 10:50                     ` [PATCH v11 4/4] checkout: -m (--merge) uses autostash when switching branches Harald Nordgren via GitGitGadget
2026-04-14 12:59                     ` [PATCH v12 0/4] checkout: 'autostash' for branch switching Harald Nordgren via GitGitGadget
2026-04-14 12:59                       ` [PATCH v12 1/4] stash: add --label-ours, --label-theirs, --label-base for apply Harald Nordgren via GitGitGadget
2026-04-14 14:05                         ` Phillip Wood
2026-04-14 16:23                           ` Junio C Hamano
2026-04-14 18:56                           ` [PATCH] checkout: add --autostash option for branch switching Harald Nordgren
2026-04-14 20:08                           ` Harald Nordgren
2026-04-15  9:34                             ` Phillip Wood
2026-04-15 15:34                               ` Harald Nordgren
2026-04-14 12:59                       ` [PATCH v12 2/4] sequencer: allow create_autostash to run silently Harald Nordgren via GitGitGadget
2026-04-14 14:06                         ` Phillip Wood
2026-04-14 18:35                           ` [PATCH] checkout: add --autostash option for branch switching Harald Nordgren
2026-04-14 12:59                       ` [PATCH v12 3/4] sequencer: teach autostash apply to take optional conflict marker labels Harald Nordgren via GitGitGadget
2026-04-14 14:06                         ` Phillip Wood
2026-04-14 18:44                           ` [PATCH] checkout: add --autostash option for branch switching Harald Nordgren
2026-04-14 12:59                       ` [PATCH v12 4/4] checkout: -m (--merge) uses autostash when switching branches Harald Nordgren via GitGitGadget
2026-04-14 14:07                         ` Phillip Wood
2026-04-14 16:39                           ` Junio C Hamano
2026-04-14 20:06                           ` [PATCH] checkout: add --autostash option for branch switching Harald Nordgren
2026-04-15  9:35                             ` Phillip Wood
2026-04-14 20:13                           ` Harald Nordgren
2026-04-15  8:19                             ` Harald Nordgren
2026-04-15  9:34                               ` Phillip Wood
2026-04-15  8:16                           ` Harald Nordgren
2026-04-15  9:36                             ` Phillip Wood
2026-04-14 15:56                       ` [PATCH v12 0/4] checkout: 'autostash' " Junio C Hamano
2026-04-14 20:16                         ` [PATCH] checkout: add --autostash option " Harald Nordgren
2026-04-14 20:56                           ` Junio C Hamano
2026-04-16 10:05                         ` Harald Nordgren
2026-04-16 14:45                           ` Junio C Hamano
2026-04-16 17:53                             ` Harald Nordgren
2026-04-15 11:11                       ` [PATCH v13 0/5] checkout: 'autostash' " Harald Nordgren via GitGitGadget
2026-04-15 11:11                         ` [PATCH v13 1/5] stash: add --label-ours, --label-theirs, --label-base for apply Harald Nordgren via GitGitGadget
2026-04-15 11:11                         ` [PATCH v13 2/5] sequencer: allow create_autostash to run silently Harald Nordgren via GitGitGadget
2026-04-15 11:11                         ` [PATCH v13 3/5] sequencer: teach autostash apply to take optional conflict marker labels Harald Nordgren via GitGitGadget
2026-04-15 11:11                         ` [PATCH v13 4/5] checkout: rollback lock on early returns in merge_working_tree Harald Nordgren via GitGitGadget
2026-04-15 11:11                         ` [PATCH v13 5/5] checkout -m: autostash when switching branches Harald Nordgren via GitGitGadget
2026-04-15 16:24                         ` [PATCH v14 0/5] checkout: 'autostash' for branch switching Harald Nordgren via GitGitGadget
2026-04-15 16:24                           ` [PATCH v14 1/5] stash: add --label-ours, --label-theirs, --label-base for apply Harald Nordgren via GitGitGadget
2026-04-15 16:24                           ` [PATCH v14 2/5] sequencer: allow create_autostash to run silently Harald Nordgren via GitGitGadget
2026-04-15 16:24                           ` [PATCH v14 3/5] sequencer: teach autostash apply to take optional conflict marker labels Harald Nordgren via GitGitGadget
2026-04-15 16:24                           ` [PATCH v14 4/5] checkout: rollback lock on early returns in merge_working_tree Harald Nordgren via GitGitGadget
2026-04-15 16:24                           ` [PATCH v14 5/5] checkout -m: autostash when switching branches Harald Nordgren via GitGitGadget
2026-04-24 15:47                             ` Phillip Wood
2026-04-24 20:52                               ` Comments on Phillip's review Harald Nordgren
2026-04-21  7:53                           ` [PATCH] checkout: add --autostash option for branch switching Harald Nordgren
2026-04-21  9:34                             ` Phillip Wood
2026-04-22 17:58                               ` Harald Nordgren
2026-04-24 15:52                           ` [PATCH v14 0/5] checkout: 'autostash' " Phillip Wood
2026-04-24 21:10                           ` [PATCH v15 " Harald Nordgren via GitGitGadget
2026-04-24 21:10                             ` [PATCH v15 1/5] stash: add --label-ours, --label-theirs, --label-base for apply Harald Nordgren via GitGitGadget
2026-04-28  9:32                               ` Phillip Wood
2026-04-28 15:16                                 ` [PATCH] checkout: add --autostash option for branch switching Harald Nordgren
2026-04-24 21:10                             ` [PATCH v15 2/5] sequencer: allow create_autostash to run silently Harald Nordgren via GitGitGadget
2026-04-28  9:32                               ` Phillip Wood
2026-04-24 21:10                             ` [PATCH v15 3/5] sequencer: teach autostash apply to take optional conflict marker labels Harald Nordgren via GitGitGadget
2026-04-28  9:33                               ` Phillip Wood
2026-04-28 15:21                                 ` [PATCH] checkout: add --autostash option for branch switching Harald Nordgren
2026-04-24 21:10                             ` [PATCH v15 4/5] checkout: rollback lock on early returns in merge_working_tree Harald Nordgren via GitGitGadget
2026-04-28  9:33                               ` Phillip Wood
2026-04-24 21:10                             ` [PATCH v15 5/5] checkout -m: autostash when switching branches Harald Nordgren via GitGitGadget
2026-04-28  9:35                               ` Phillip Wood
2026-04-28 18:08                                 ` [PATCH] checkout: add --autostash option for branch switching Harald Nordgren
2026-04-28  9:35                             ` [PATCH v15 0/5] checkout: 'autostash' " Phillip Wood
2026-04-28 18:39                             ` Harald Nordgren via GitGitGadget [this message]
2026-04-28 18:39                               ` [PATCH v16 1/5] stash: add --label-ours, --label-theirs, --label-base for apply Harald Nordgren via GitGitGadget
2026-04-28 18:39                               ` [PATCH v16 2/5] sequencer: allow create_autostash to run silently Harald Nordgren via GitGitGadget
2026-04-28 18:39                               ` [PATCH v16 3/5] sequencer: teach autostash apply to take optional conflict marker labels Harald Nordgren via GitGitGadget
2026-04-28 18:39                               ` [PATCH v16 4/5] checkout: rollback lock on early returns in merge_working_tree Harald Nordgren via GitGitGadget
2026-04-28 18:39                               ` [PATCH v16 5/5] checkout -m: autostash when switching branches Harald Nordgren via GitGitGadget
2026-04-29 10:02                                 ` Phillip Wood
2026-04-29 10:02                               ` [PATCH v16 0/5] checkout: 'autostash' for branch switching Phillip Wood
2026-04-29 11:11                                 ` [PATCH] checkout: add --autostash option " Harald Nordgren
2026-05-07 20:11                               ` [PATCH v16 0/5] checkout: 'autostash' " Harald Nordgren
2026-05-08 13:02                                 ` Phillip Wood

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=pull.2234.v16.git.git.1777401552.gitgitgadget@gmail.com \
    --to=gitgitgadget@gmail.com \
    --cc=chris.torek@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=haraldnordgren@gmail.com \
    --cc=peff@peff.net \
    --cc=phillip.wood123@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox