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 v12 0/4] checkout: 'autostash' for branch switching
Date: Tue, 14 Apr 2026 12:59:41 +0000 [thread overview]
Message-ID: <pull.2234.v12.git.git.1776171585.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.2234.v11.git.git.1776163819.gitgitgadget@gmail.com>
Harald Nordgren (4):
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: -m (--merge) uses autostash when switching branches
Documentation/git-checkout.adoc | 58 ++++-----
Documentation/git-stash.adoc | 11 +-
Documentation/git-switch.adoc | 33 ++---
builtin/checkout.c | 147 ++++++++++------------
builtin/stash.c | 32 +++--
sequencer.c | 81 ++++++++++---
sequencer.h | 6 +
t/t3420-rebase-autostash.sh | 24 +++-
t/t3903-stash.sh | 29 +++++
t/t7201-co.sh | 208 ++++++++++++++++++++++++++++++++
t/t7600-merge.sh | 2 +-
xdiff-interface.c | 12 ++
xdiff-interface.h | 1 +
xdiff/xmerge.c | 6 +-
14 files changed, 491 insertions(+), 159 deletions(-)
base-commit: 9e8f4e9c04e3efa494e78b710e0c5f6cc77a0a5e
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2234%2FHaraldNordgren%2Fcheckout_autostash-v12
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2234/HaraldNordgren/checkout_autostash-v12
Pull-Request: https://github.com/git/git/pull/2234
Range-diff vs v11:
1: 9ab5431b47 = 1: 9ab5431b47 stash: add --label-ours, --label-theirs, --label-base for apply
2: e7f8328e3c ! 2: e11a622bdf sequencer: allow create_autostash to run silently
@@ sequencer.c: static enum todo_command peek_command(struct todo_list *todo_list,
const char *path,
- const char *refname)
+ const char *refname,
++ const char *message,
+ bool silent)
{
struct strbuf buf = STRBUF_INIT;
struct lock_file lock_file = LOCK_INIT;
+@@ sequencer.c: static void create_autostash_internal(struct repository *r,
+ struct object_id oid;
+
+ strvec_pushl(&stash.args,
+- "stash", "create", "autostash", NULL);
++ "stash", "create",
++ message ? message : "autostash", NULL);
+ stash.git_cmd = 1;
+ stash.no_stdin = 1;
+ strbuf_reset(&buf);
@@ sequencer.c: static void create_autostash_internal(struct repository *r,
&oid, null_oid(the_hash_algo), 0, UPDATE_REFS_DIE_ON_ERR);
}
@@ sequencer.c: static void create_autostash_internal(struct repository *r,
void create_autostash(struct repository *r, const char *path)
{
- create_autostash_internal(r, path, NULL);
-+ create_autostash_internal(r, path, NULL, false);
++ create_autostash_internal(r, path, NULL, NULL, false);
}
void create_autostash_ref(struct repository *r, const char *refname)
{
- create_autostash_internal(r, NULL, refname);
-+ create_autostash_internal(r, NULL, refname, false);
++ create_autostash_internal(r, NULL, refname, NULL, false);
+}
+
-+void create_autostash_ref_silent(struct repository *r, const char *refname)
++void create_autostash_ref_with_msg_silent(struct repository *r, const char *refname,
++ const char *message)
+{
-+ create_autostash_internal(r, NULL, refname, true);
++ create_autostash_internal(r, NULL, refname, message, true);
}
static int apply_save_autostash_oid(const char *stash_oid, int attempt_apply)
@@ sequencer.h: void commit_post_rewrite(struct repository *r,
void create_autostash(struct repository *r, const char *path);
void create_autostash_ref(struct repository *r, const char *refname);
-+void create_autostash_ref_silent(struct repository *r, const char *refname);
++void create_autostash_ref_with_msg_silent(struct repository *r, const char *refname,
++ const char *message);
int save_autostash(const char *path);
int save_autostash_ref(struct repository *r, const char *refname);
int apply_autostash(const char *path);
3: 3242fd3261 ! 3: 4593745e90 sequencer: teach autostash apply to take optional conflict marker labels
@@ Commit message
Signed-off-by: Harald Nordgren <haraldnordgren@gmail.com>
## sequencer.c ##
-@@ sequencer.c: void create_autostash_ref_silent(struct repository *r, const char *refname)
- create_autostash_internal(r, NULL, refname, true);
+@@ sequencer.c: void create_autostash_ref_with_msg_silent(struct repository *r, const char *refn
+ create_autostash_internal(r, NULL, refname, message, true);
}
-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 *label_base,
++ const char *stash_msg)
{
struct child_process child = CHILD_PROCESS_INIT;
int ret = 0;
@@ sequencer.c: static int apply_save_autostash_oid(const char *stash_oid, int atte
strvec_push(&child.args, stash_oid);
ret = run_command(&child);
}
+@@ sequencer.c: static int apply_save_autostash_oid(const char *stash_oid, int attempt_apply)
+ 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))
@@ sequencer.c: static int apply_save_autostash(const char *path, int attempt_apply)
}
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, NULL, NULL, NULL);
unlink(path);
strbuf_release(&stash_oid);
@@ sequencer.c: int apply_autostash(const char *path)
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);
++ 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 *label_base,
++ const char *stash_msg)
{
struct object_id stash_oid;
char stash_oid_hex[GIT_MAX_HEXSZ + 1];
@@ sequencer.c: static int apply_save_autostash_ref(struct repository *r, const cha
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);
++ label_ours, label_theirs, label_base,
++ stash_msg);
refs_delete_ref(get_main_ref_store(r), "", refname,
&stash_oid, REF_NO_DEREF);
@@ sequencer.c: static int apply_save_autostash_ref(struct repository *r, const cha
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);
++ return apply_save_autostash_ref(r, refname, 0,
++ NULL, NULL, NULL, NULL);
}
int apply_autostash_ref(struct repository *r, const char *refname)
{
- return apply_save_autostash_ref(r, refname, 1);
-+ return apply_save_autostash_ref(r, refname, 1, NULL, NULL, NULL);
++ return apply_save_autostash_ref(r, refname, 1,
++ NULL, NULL, NULL, NULL);
+}
+
+int apply_autostash_ref_with_labels(struct repository *r, const char *refname,
+ const char *label_ours, const char *label_theirs,
-+ const char *label_base)
++ const char *label_base,
++ const char *stash_msg)
+{
+ return apply_save_autostash_ref(r, refname, 1,
-+ label_ours, label_theirs, label_base);
++ label_ours, label_theirs, label_base,
++ stash_msg);
}
static int checkout_onto(struct repository *r, struct replay_opts *opts,
@@ sequencer.h: int save_autostash_ref(struct repository *r, const char *refname);
int apply_autostash_ref(struct repository *r, const char *refname);
+int apply_autostash_ref_with_labels(struct repository *r, const char *refname,
+ const char *label_ours, const char *label_theirs,
-+ const char *label_base);
++ const char *label_base,
++ const char *stash_msg);
#define SUMMARY_INITIAL_COMMIT (1 << 0)
#define SUMMARY_SHOW_AUTHOR_DATE (1 << 1)
4: 97a5d87c81 ! 4: 911e520431 checkout: -m (--merge) uses autostash when switching branches
@@ builtin/checkout.c: static int switch_branches(const struct checkout_opts *opts,
+ strbuf_addf(&autostash_msg,
+ "autostash while switching to '%s'",
+ new_branch_info->name);
-+ create_autostash_ref_silent_with_msg(the_repository,
-+ "CHECKOUT_AUTOSTASH_HEAD",
-+ autostash_msg.buf);
++ create_autostash_ref_with_msg_silent(the_repository,
++ "CHECKOUT_AUTOSTASH_HEAD",
++ autostash_msg.buf);
+ created_autostash = 1;
+ ret = merge_working_tree(opts, &old_branch_info, new_branch_info, &writeout_error);
+ }
@@ builtin/checkout.c: static int switch_branches(const struct checkout_opts *opts,
}
## sequencer.c ##
-@@ sequencer.c: static enum todo_command peek_command(struct todo_list *todo_list, int offset)
- static void create_autostash_internal(struct repository *r,
- const char *path,
- const char *refname,
-+ const char *message,
- bool silent)
- {
- struct strbuf buf = STRBUF_INIT;
-@@ sequencer.c: static void create_autostash_internal(struct repository *r,
- struct object_id oid;
-
- strvec_pushl(&stash.args,
-- "stash", "create", "autostash", NULL);
-+ "stash", "create",
-+ message ? message : "autostash", NULL);
- stash.git_cmd = 1;
- stash.no_stdin = 1;
- strbuf_reset(&buf);
-@@ sequencer.c: static void create_autostash_internal(struct repository *r,
-
- void create_autostash(struct repository *r, const char *path)
- {
-- create_autostash_internal(r, path, NULL, false);
-+ create_autostash_internal(r, path, NULL, NULL, false);
- }
-
- void create_autostash_ref(struct repository *r, const char *refname)
- {
-- create_autostash_internal(r, NULL, refname, false);
-+ create_autostash_internal(r, NULL, refname, NULL, false);
- }
-
- void create_autostash_ref_silent(struct repository *r, const char *refname)
- {
-- create_autostash_internal(r, NULL, refname, true);
-+ create_autostash_internal(r, NULL, refname, NULL, true);
-+}
-+
-+void create_autostash_ref_silent_with_msg(struct repository *r,
-+ const char *refname,
-+ const char *message)
-+{
-+ create_autostash_internal(r, NULL, refname, message, true);
- }
-
- 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 *label_base,
-+ const char *stash_msg)
- {
- struct child_process child = CHILD_PROCESS_INIT;
- int ret = 0;
@@ sequencer.c: static int apply_save_autostash_oid(const char *stash_oid, int attempt_apply,
- 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))
ret = error(_("cannot store %s"), stash_oid);
@@ sequencer.c: static int apply_save_autostash_oid(const char *stash_oid, int atte
}
return ret;
-@@ sequencer.c: static int apply_save_autostash(const char *path, int attempt_apply)
- strbuf_trim(&stash_oid);
-
- ret = apply_save_autostash_oid(stash_oid.buf, attempt_apply,
-- NULL, NULL, NULL);
-+ NULL, NULL, NULL, NULL);
-
- unlink(path);
- strbuf_release(&stash_oid);
-@@ sequencer.c: int apply_autostash(const char *path)
-
- int apply_autostash_oid(const char *stash_oid)
- {
-- return apply_save_autostash_oid(stash_oid, 1, NULL, NULL, NULL);
-+ 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,
- const char *label_ours, const char *label_theirs,
-- const char *label_base)
-+ const char *label_base,
-+ const char *stash_msg)
- {
- struct object_id stash_oid;
- char stash_oid_hex[GIT_MAX_HEXSZ + 1];
-@@ sequencer.c: static int apply_save_autostash_ref(struct repository *r, const char *refname,
-
- oid_to_hex_r(stash_oid_hex, &stash_oid);
- ret = apply_save_autostash_oid(stash_oid_hex, attempt_apply,
-- label_ours, label_theirs, label_base);
-+ label_ours, label_theirs, label_base,
-+ stash_msg);
-
- refs_delete_ref(get_main_ref_store(r), "", refname,
- &stash_oid, REF_NO_DEREF);
-@@ sequencer.c: static int apply_save_autostash_ref(struct repository *r, const char *refname,
-
- int save_autostash_ref(struct repository *r, const char *refname)
- {
-- return apply_save_autostash_ref(r, refname, 0, NULL, NULL, NULL);
-+ return apply_save_autostash_ref(r, refname, 0,
-+ NULL, NULL, NULL, NULL);
- }
-
- int apply_autostash_ref(struct repository *r, const char *refname)
- {
-- return apply_save_autostash_ref(r, refname, 1, NULL, NULL, NULL);
-+ return apply_save_autostash_ref(r, refname, 1,
-+ NULL, NULL, NULL, NULL);
- }
-
- int apply_autostash_ref_with_labels(struct repository *r, const char *refname,
- const char *label_ours, const char *label_theirs,
-- const char *label_base)
-+ const char *label_base,
-+ const char *stash_msg)
- {
- return apply_save_autostash_ref(r, refname, 1,
-- label_ours, label_theirs, label_base);
-+ label_ours, label_theirs, label_base,
-+ stash_msg);
- }
-
- static int checkout_onto(struct repository *r, struct replay_opts *opts,
-
- ## sequencer.h ##
-@@ sequencer.h: void commit_post_rewrite(struct repository *r,
- void create_autostash(struct repository *r, const char *path);
- void create_autostash_ref(struct repository *r, const char *refname);
- void create_autostash_ref_silent(struct repository *r, const char *refname);
-+void create_autostash_ref_silent_with_msg(struct repository *r,
-+ const char *refname,
-+ const char *message);
- int save_autostash(const char *path);
- int save_autostash_ref(struct repository *r, const char *refname);
- int apply_autostash(const char *path);
-@@ sequencer.h: int apply_autostash_oid(const char *stash_oid);
- int apply_autostash_ref(struct repository *r, const char *refname);
- int apply_autostash_ref_with_labels(struct repository *r, const char *refname,
- const char *label_ours, const char *label_theirs,
-- const char *label_base);
-+ const char *label_base,
-+ const char *stash_msg);
-
- #define SUMMARY_INITIAL_COMMIT (1 << 0)
- #define SUMMARY_SHOW_AUTHOR_DATE (1 << 1)
## t/t3420-rebase-autostash.sh ##
@@ t/t3420-rebase-autostash.sh: create_expected_failure_apply () {
--
gitgitgadget
next prev parent reply other threads:[~2026-04-14 12:59 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 ` Harald Nordgren via GitGitGadget [this message]
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 ` [PATCH v16 " Harald Nordgren via GitGitGadget
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.v12.git.git.1776171585.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