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>,
Harald Nordgren <haraldnordgren@gmail.com>
Subject: [PATCH v9 0/4] checkout: 'autostash' for branch switching
Date: Fri, 10 Apr 2026 21:01:09 +0000 [thread overview]
Message-ID: <pull.2234.v9.git.git.1775854874.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.2234.v8.git.git.1775762235.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 | 138 ++++++++++------------
builtin/stash.c | 32 ++++--
sequencer.c | 67 ++++++++---
sequencer.h | 4 +
t/t3420-rebase-autostash.sh | 24 +++-
t/t3903-stash.sh | 29 +++++
t/t7201-co.sh | 195 ++++++++++++++++++++++++++++++++
t/t7600-merge.sh | 2 +-
xdiff-interface.c | 12 ++
xdiff-interface.h | 1 +
xdiff/xmerge.c | 6 +-
14 files changed, 455 insertions(+), 157 deletions(-)
base-commit: cd412a49627774a14b3e49237109a77bd3ea70c0
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2234%2FHaraldNordgren%2Fcheckout_autostash-v9
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2234/HaraldNordgren/checkout_autostash-v9
Pull-Request: https://github.com/git/git/pull/2234
Range-diff vs v8:
1: 8fcf377820 ! 1: 5d5dc1f60e stash: add --ours-label, --theirs-label, --base-label for apply
@@ Metadata
Author: Harald Nordgren <haraldnordgren@gmail.com>
## Commit message ##
- stash: add --ours-label, --theirs-label, --base-label for apply
+ stash: add --label-ours, --label-theirs, --label-base for apply
Allow callers of "git stash apply" to pass custom labels for conflict
markers instead of the default "Updated upstream" and "Stashed changes".
@@ Documentation/git-stash.adoc: git stash list [<log-options>]
git stash drop [-q | --quiet] [<stash>]
git stash pop [--index] [-q | --quiet] [<stash>]
-git stash apply [--index] [-q | --quiet] [<stash>]
-+git stash apply [--index] [-q | --quiet] [--ours-label=<label>] [--theirs-label=<label>] [--base-label=<label>] [<stash>]
++git stash apply [--index] [-q | --quiet] [--label-ours=<label>] [--label-theirs=<label>] [--label-base=<label>] [<stash>]
git stash branch <branchname> [<stash>]
git stash [push] [-p | --patch] [-S | --staged] [-k | --[no-]keep-index] [-q | --quiet]
[-u | --include-untracked] [-a | --all] [(-m | --message) <message>]
@@ Documentation/git-stash.adoc: the index's ones. However, this can fail, when you
(which are stored in the index, where you therefore can no longer
apply the changes as they were originally).
-+`--ours-label=<label>`::
-+`--theirs-label=<label>`::
-+`--base-label=<label>`::
++`--label-ours=<label>`::
++`--label-theirs=<label>`::
++`--label-base=<label>`::
+ These options are only valid for the `apply` command.
++
+Use the given labels in conflict markers instead of the default
+"Updated upstream", "Stashed changes", and "Stash base".
-+`--base-label` only has an effect with merge.conflictStyle=diff3.
++`--label-base` only has an effect with merge.conflictStyle=diff3.
+
`-k`::
`--keep-index`::
@@ builtin/stash.c
N_("git stash pop [--index] [-q | --quiet] [<stash>]")
#define BUILTIN_STASH_APPLY_USAGE \
- N_("git stash apply [--index] [-q | --quiet] [<stash>]")
-+ N_("git stash apply [--index] [-q | --quiet] [--ours-label=<label>] [--theirs-label=<label>] [--base-label=<label>] [<stash>]")
++ N_("git stash apply [--index] [-q | --quiet] [--label-ours=<label>] [--label-theirs=<label>] [--label-base=<label>] [<stash>]")
#define BUILTIN_STASH_BRANCH_USAGE \
N_("git stash branch <branchname> [<stash>]")
#define BUILTIN_STASH_STORE_USAGE \
+@@ builtin/stash.c: static void unstage_changes_unless_new(struct object_id *orig_tree)
+ die(_("could not write index"));
+ }
+
+-static int do_apply_stash(const char *prefix, struct stash_info *info,
+- int index, int quiet)
++static int do_apply_stash_with_labels(const char *prefix,
++ struct stash_info *info,
++ int index, int quiet,
++ const char *label_ours, const char *label_theirs,
++ const char *label_base)
+ {
+ int clean, ret;
+ int has_index = index;
+@@ builtin/stash.c: static int do_apply_stash(const char *prefix, struct stash_info *info,
+
+ init_ui_merge_options(&o, the_repository);
+
+- o.branch1 = "Updated upstream";
+- o.branch2 = "Stashed changes";
+- o.ancestor = "Stash base";
++ o.branch1 = label_ours ? label_ours : "Updated upstream";
++ o.branch2 = label_theirs ? label_theirs : "Stashed changes";
++ o.ancestor = label_base ? label_base : "Stash base";
+
+ if (oideq(&info->b_tree, &c_tree))
+ o.branch1 = "Version stash was based on";
+@@ builtin/stash.c: restore_untracked:
+ return ret;
+ }
+
++static int do_apply_stash(const char *prefix, struct stash_info *info,
++ int index, int quiet)
++{
++ return do_apply_stash_with_labels(prefix, info, index, quiet,
++ NULL, NULL, NULL);
++}
++
+ static int apply_stash(int argc, const char **argv, const char *prefix,
+ struct repository *repo UNUSED)
+ {
+ int ret = -1;
+ int quiet = 0;
+ int index = use_index;
++ const char *label_ours = NULL, *label_theirs = NULL, *label_base = NULL;
+ struct stash_info info = STASH_INFO_INIT;
+ struct option options[] = {
+ OPT__QUIET(&quiet, N_("be quiet, only report errors")),
+ OPT_BOOL(0, "index", &index,
+ N_("attempt to recreate the index")),
++ OPT_STRING(0, "label-ours", &label_ours, N_("label"),
++ N_("label for the upstream side in conflict markers")),
++ OPT_STRING(0, "label-theirs", &label_theirs, N_("label"),
++ N_("label for the stashed side in conflict markers")),
++ OPT_STRING(0, "label-base", &label_base, N_("label"),
++ N_("label for the base in diff3 conflict markers")),
+ OPT_END()
+ };
+
+@@ builtin/stash.c: static int apply_stash(int argc, const char **argv, const char *prefix,
+ if (get_stash_info(&info, argc, argv))
+ goto cleanup;
+
+- ret = do_apply_stash(prefix, &info, index, quiet);
++ ret = do_apply_stash_with_labels(prefix, &info, index, quiet,
++ label_ours, label_theirs, label_base);
+ cleanup:
+ free_stash_info(&info);
+ return ret;
## t/t3903-stash.sh ##
@@ t/t3903-stash.sh: test_expect_success 'restore untracked files even when we hit conflicts' '
@@ t/t3903-stash.sh: test_expect_success 'restore untracked files even when we hit
+ git init conflict_labels &&
+ (
+ cd conflict_labels &&
-+ echo base >file &&
-+ git add file &&
-+ git commit -m base &&
++ test_commit base file &&
+ echo stashed >file &&
+ git stash push -m "stashed" &&
-+ echo upstream >file &&
-+ git add file &&
-+ git commit -m upstream &&
-+ test_must_fail git -c merge.conflictStyle=diff3 stash apply --ours-label=UP --theirs-label=STASH &&
++ test_commit upstream file &&
++ test_must_fail git -c merge.conflictStyle=diff3 stash apply --label-ours=UP --label-theirs=STASH &&
+ test_grep "^<<<<<<< UP" file &&
+ test_grep "^||||||| Stash base" file &&
+ test_grep "^>>>>>>> STASH" file
@@ t/t3903-stash.sh: test_expect_success 'restore untracked files even when we hit
+ git init empty_labels &&
+ (
+ cd empty_labels &&
-+ echo base >file &&
-+ git add file &&
-+ git commit -m base &&
++ test_commit base file &&
+ echo stashed >file &&
+ git stash push -m "stashed" &&
-+ echo upstream >file &&
-+ git add file &&
-+ git commit -m upstream &&
-+ test_must_fail git stash apply --ours-label= --theirs-label= &&
++ test_commit upstream file &&
++ test_must_fail git stash apply --label-ours= --label-theirs= &&
+ test_grep "^<<<<<<<$" file &&
+ test_grep "^>>>>>>>$" file
+ )
2: 86cf68d024 ! 2: a1fa04a965 sequencer: allow create_autostash to run silently
@@ Commit message
Add a silent parameter to create_autostash_internal and introduce
create_autostash_ref_silent so that callers can create an autostash
- without printing the "Created autostash" message. Use stderr for
- the message when not silent.
+ without printing the "Created autostash" message.
Signed-off-by: Harald Nordgren <haraldnordgren@gmail.com>
@@ sequencer.c: static enum todo_command peek_command(struct todo_list *todo_list,
const char *path,
- const char *refname)
+ const char *refname,
-+ int silent)
++ bool silent)
{
struct strbuf buf = STRBUF_INIT;
struct lock_file lock_file = LOCK_INIT;
@@ sequencer.c: static void create_autostash_internal(struct repository *r,
- printf(_("Created autostash: %s\n"), buf.buf);
+ if (!silent)
-+ fprintf(stderr, _("Created autostash: %s\n"), buf.buf);
++ printf(_("Created autostash: %s\n"), buf.buf);
if (reset_head(r, &ropts) < 0)
die(_("could not reset --hard"));
discard_index(r->index);
@@ 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, 0);
++ create_autostash_internal(r, path, NULL, false);
}
void create_autostash_ref(struct repository *r, const char *refname)
{
- create_autostash_internal(r, NULL, refname);
-+ create_autostash_internal(r, NULL, refname, 0);
++ create_autostash_internal(r, NULL, refname, false);
+}
+
+void create_autostash_ref_silent(struct repository *r, const char *refname)
+{
-+ create_autostash_internal(r, NULL, refname, 1);
++ create_autostash_internal(r, NULL, refname, true);
}
static int apply_save_autostash_oid(const char *stash_oid, int attempt_apply)
3: 78300e0e9a ! 3: 87216a633b sequencer: teach autostash apply to take optional conflict marker labels
@@ Metadata
## Commit message ##
sequencer: teach autostash apply to take optional conflict marker labels
- Add label1, label2, and label_ancestor parameters to the autostash
+ Add label_ours, label_theirs, and label_base parameters to the autostash
apply machinery so callers can pass custom conflict marker labels
- through to "git stash apply --ours-label/--theirs-label/--base-label".
+ through to "git stash apply --label-ours/--label-theirs/--label-base".
Introduce apply_autostash_ref_with_labels() for callers that want
to pass labels.
@@ Commit message
## sequencer.c ##
@@ sequencer.c: void create_autostash_ref_silent(struct repository *r, const char *refname)
- create_autostash_internal(r, NULL, refname, 1);
+ create_autostash_internal(r, NULL, refname, true);
}
-static int apply_save_autostash_oid(const char *stash_oid, int attempt_apply)
@@ sequencer.c: static int apply_save_autostash_oid(const char *stash_oid, int atte
strvec_push(&child.args, "stash");
strvec_push(&child.args, "apply");
+ if (label_ours)
-+ strvec_pushf(&child.args, "--ours-label=%s", label_ours);
++ strvec_pushf(&child.args, "--label-ours=%s", label_ours);
+ if (label_theirs)
-+ strvec_pushf(&child.args, "--theirs-label=%s", label_theirs);
++ strvec_pushf(&child.args, "--label-theirs=%s", label_theirs);
+ if (label_base)
-+ strvec_pushf(&child.args, "--base-label=%s", label_base);
++ strvec_pushf(&child.args, "--label-base=%s", label_base);
strvec_push(&child.args, stash_oid);
ret = run_command(&child);
}
4: aa18313362 ! 4: 00e0b3196c checkout: -m (--merge) uses autostash when switching branches
@@ builtin/checkout.c: static int switch_branches(const struct checkout_opts *opts,
int do_merge = 1;
+ int created_autostash = 0;
+ struct strbuf old_commit_shortname = STRBUF_INIT;
-+ const char *stash_label_ancestor = NULL;
++ const char *stash_label_base = NULL;
trace2_cmd_mode("branch");
@@ builtin/checkout.c: static int switch_branches(const struct checkout_opts *opts,
}
+ if (old_branch_info.name)
-+ stash_label_ancestor = old_branch_info.name;
++ stash_label_base = old_branch_info.name;
+ else if (old_branch_info.commit) {
+ strbuf_add_unique_abbrev(&old_commit_shortname,
+ &old_branch_info.commit->object.oid,
+ DEFAULT_ABBREV);
-+ stash_label_ancestor = old_commit_shortname.buf;
++ stash_label_base = old_commit_shortname.buf;
+ }
+
if (do_merge) {
@@ builtin/checkout.c: static int switch_branches(const struct checkout_opts *opts,
+ "CHECKOUT_AUTOSTASH",
+ new_branch_info->name,
+ "local",
-+ stash_label_ancestor);
++ stash_label_base);
branch_info_release(&old_branch_info);
+ strbuf_release(&old_commit_shortname);
return ret;
@@ builtin/checkout.c: static int switch_branches(const struct checkout_opts *opts,
+ }
+ apply_autostash_ref_with_labels(the_repository, "CHECKOUT_AUTOSTASH",
+ new_branch_info->name, "local",
-+ stash_label_ancestor);
++ stash_label_base);
+
+ discard_index(the_repository->index);
+ if (repo_read_index(the_repository) < 0)
@@ builtin/checkout.c: static int switch_branches(const struct checkout_opts *opts,
return ret || writeout_error;
}
- ## builtin/stash.c ##
-@@ builtin/stash.c: static void unstage_changes_unless_new(struct object_id *orig_tree)
- die(_("could not write index"));
- }
-
--static int do_apply_stash(const char *prefix, struct stash_info *info,
-- int index, int quiet)
-+static int do_apply_stash_with_labels(const char *prefix,
-+ struct stash_info *info,
-+ int index, int quiet,
-+ const char *label1, const char *label2,
-+ const char *label_ancestor)
- {
- int clean, ret;
- int has_index = index;
-@@ builtin/stash.c: static int do_apply_stash(const char *prefix, struct stash_info *info,
-
- init_ui_merge_options(&o, the_repository);
-
-- o.branch1 = "Updated upstream";
-- o.branch2 = "Stashed changes";
-- o.ancestor = "Stash base";
-+ o.branch1 = label1 ? label1 : "Updated upstream";
-+ o.branch2 = label2 ? label2 : "Stashed changes";
-+ o.ancestor = label_ancestor ? label_ancestor : "Stash base";
-
- if (oideq(&info->b_tree, &c_tree))
- o.branch1 = "Version stash was based on";
-@@ builtin/stash.c: restore_untracked:
- return ret;
- }
-
-+static int do_apply_stash(const char *prefix, struct stash_info *info,
-+ int index, int quiet)
-+{
-+ return do_apply_stash_with_labels(prefix, info, index, quiet,
-+ NULL, NULL, NULL);
-+}
-+
- static int apply_stash(int argc, const char **argv, const char *prefix,
- struct repository *repo UNUSED)
- {
- int ret = -1;
- int quiet = 0;
- int index = use_index;
-+ const char *label1 = NULL, *label2 = NULL, *label_ancestor = NULL;
- struct stash_info info = STASH_INFO_INIT;
- struct option options[] = {
- OPT__QUIET(&quiet, N_("be quiet, only report errors")),
- OPT_BOOL(0, "index", &index,
- N_("attempt to recreate the index")),
-+ OPT_STRING(0, "ours-label", &label1, N_("label"),
-+ N_("label for the upstream side in conflict markers")),
-+ OPT_STRING(0, "theirs-label", &label2, N_("label"),
-+ N_("label for the stashed side in conflict markers")),
-+ OPT_STRING(0, "base-label", &label_ancestor, N_("label"),
-+ N_("label for the base in diff3 conflict markers")),
- OPT_END()
- };
-
-@@ builtin/stash.c: static int apply_stash(int argc, const char **argv, const char *prefix,
- if (get_stash_info(&info, argc, argv))
- goto cleanup;
-
-- ret = do_apply_stash(prefix, &info, index, quiet);
-+ ret = do_apply_stash_with_labels(prefix, &info, index, quiet,
-+ label1, label2, label_ancestor);
- cleanup:
- free_stash_info(&info);
- return ret;
-
## sequencer.c ##
@@ sequencer.c: static int apply_save_autostash_oid(const char *stash_oid, int attempt_apply,
strvec_push(&store.args, stash_oid);
--
gitgitgadget
next prev parent reply other threads:[~2026-04-10 21:01 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 ` Harald Nordgren via GitGitGadget [this message]
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 ` [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.v9.git.git.1775854874.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=chris.torek@gmail.com \
--cc=git@vger.kernel.org \
--cc=haraldnordgren@gmail.com \
--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