All of lore.kernel.org
 help / color / mirror / Atom feed
From: Phillip Wood <phillip.wood123@gmail.com>
To: Harald Nordgren via GitGitGadget <gitgitgadget@gmail.com>,
	git@vger.kernel.org
Cc: Kristoffer Haugsbakk <kristofferhaugsbakk@fastmail.com>,
	Johannes Sixt <j6t@kdbg.org>,
	Harald Nordgren <haraldnordgren@gmail.com>
Subject: Re: [PATCH v24 0/7] branch: delete-merged
Date: Tue, 4 Aug 2026 16:58:16 +0100	[thread overview]
Message-ID: <0ea7bbec-3381-4bc6-99a9-2c3b5d1bfebd@gmail.com> (raw)
In-Reply-To: <pull.2285.v24.git.git.1785419916.gitgitgadget@gmail.com>

Hi Harald

On 30/07/2026 14:58, Harald Nordgren via GitGitGadget wrote:
> Changes in v24:
> 
>   * Map branches through the configured push and fetch refspecs before
>     deciding whether pushing would update their upstream.
>   * Protect only the direct upstream of surviving work, delete deeper merged
>     bases and clear stale upstream configuration.
>   * Clarify that --delete-merged takes upstream patterns in docs.
> 
> Range-diff vs v23:
> 
>   1:  0c4fe549cb ! 1:  59157142b3 branch: add --forked filter for --list mode
>       @@ t/t3200-branch.sh: test_expect_success 'errors if given a bad branch name' '
>        +'
>        +
>        +test_expect_success '--forked composes with --no-merged' '
>       -+	git -C forked branch --forked "origin/*" --no-merged origin/one \
>       -+		--format="%(refname:short)" >actual &&
>       ++	git -C forked branch --forked "origin/*" --no-merged origin/one --format="%(refname:short)" >actual &&

We wrap our lines at 80 columns. I know I suggested unwrapping some very 
short lines in another patch, but these are far too long.

>        +	echo local-one >expect &&
>        +	test_cmp expect actual
>        +'
>       @@ t/t3200-branch.sh: test_expect_success 'errors if given a bad branch name' '
>        +'
>        +
>        +test_expect_success '--forked narrows a <pattern> argument' '
>       -+	git -C forked branch --forked "origin/*" "local-*" \
>       -+		--format="%(refname:short)" >actual &&
>       ++	git -C forked branch --forked "origin/*" "local-*" --format="%(refname:short)" >actual &&
>        +	cat >expect <<-\EOF &&
>        +	local-one
>        +	local-two
>   2:  2d20015ba9 ! 2:  5d310da9aa branch: convert delete_branches() to a flags argument
>       @@ builtin/branch.c: static int delete_branches(int argc, const char **argv, int fo
>        -		int flags = 0;
>        +		int ref_flags = 0;
>         
>       - 		copy_branchname(&bname, argv[i], allowed_interpret);
>       - 		free(name);
>       + 		copy_branchname(the_repository, &bname,
>       + 				argv[i], allowed_interpret);
>        @@ builtin/branch.c: static int delete_branches(int argc, const char **argv, int force, int kinds,
>         					     RESOLVE_REF_READING
>         					     | RESOLVE_REF_NO_RECURSE
>   3:  34b37aeb43 = 3:  263e90f6ed branch: let delete_branches skip unmerged branches on bulk refusal
>   4:  606ce4082c = 4:  22e31fd35c branch: prepare delete_branches for a bulk caller
>   5:  5fd74f0050 ! 5:  d9f93e66c9 branch: add --delete-merged <branch>
>   [...]

As far as I can see, from here ...

>       @@ builtin/branch.c: static int parse_opt_forked(const struct option *opt, const ch
>        +struct stacked_branch_data {
>        +	struct strset *deletable_branch_names;
>        +	struct strset *protected_branch_names;
>       -+	struct strset *visited_branch_names;
>        +};
>        +
>       -+static int collect_stacked_branch_bases(const struct reference *ref,
>       -+					void *cb_data)
>       ++static int collect_stacked_branch_base(const struct reference *ref,
>       ++				       void *cb_data)
>        +{
>        +	struct stacked_branch_data *data = cb_data;
>        +	const char *branch_name;
>       ++	struct branch *branch;
>       ++	const char *upstream_refname;
>       ++	const char *upstream_branch_name;
>        +
>        +	if (!skip_prefix(ref->name, "refs/heads/", &branch_name))
>        +		BUG("expected local branch ref, got '%s'", ref->name);
>        +	if (strset_contains(data->deletable_branch_names, branch_name))
>        +		return 0;
>        +
>       -+	while (strset_add(data->visited_branch_names, branch_name)) {
>       -+		struct branch *branch = branch_get(branch_name);
>       -+		const char *upstream_refname = branch_get_upstream(branch, NULL);
>       -+		const char *upstream_branch_name;
>       -+
>       -+		if (!upstream_refname ||
>       -+		    !skip_prefix(upstream_refname, "refs/heads/",
>       -+				 &upstream_branch_name) ||
>       -+		    !strset_contains(data->deletable_branch_names,
>       -+				    upstream_branch_name))
>       -+			break;
>       -+
>       -+		strset_add(data->protected_branch_names, upstream_branch_name);
>       -+		branch_name = upstream_branch_name;
>       -+	}
>       ++	branch = branch_get(branch_name);
>       ++	upstream_refname = branch_get_upstream(branch, NULL);
>       ++	if (!upstream_refname ||
>       ++	    !skip_prefix(upstream_refname, "refs/heads/",
>       ++			 &upstream_branch_name) ||
>       ++	    !strset_contains(data->deletable_branch_names,
>       ++			    upstream_branch_name))
>       ++		return 0;
>        +
>       ++	strset_add(data->protected_branch_names, upstream_branch_name);
>        +	return 0;
>        +}
>        +
>        +static void protect_stacked_branch_bases(struct ref_store *refs,
>       -+					 struct strset *deletable_branch_names)
>       ++					 struct strset *deletable_branch_names,
>       ++					 struct strset *protected_branch_names)
>        +{
>       -+	struct strset protected_branch_names = STRSET_INIT;
>       -+	struct strset visited_branch_names = STRSET_INIT;
>        +	struct stacked_branch_data data = {
>        +		.deletable_branch_names = deletable_branch_names,
>       -+		.protected_branch_names = &protected_branch_names,
>       -+		.visited_branch_names = &visited_branch_names,
>       ++		.protected_branch_names = protected_branch_names,
>        +	};
>        +	struct refs_for_each_ref_options opts = {
>        +		.prefix = "refs/heads/",
>       @@ builtin/branch.c: static int parse_opt_forked(const struct option *opt, const ch
>        +	struct hashmap_iter iter;
>        +	struct strmap_entry *entry;
>        +
>       -+	refs_for_each_ref_ext(refs, collect_stacked_branch_bases, &data, &opts);
>       ++	refs_for_each_ref_ext(refs, collect_stacked_branch_base, &data, &opts);
>        +
>       -+	strset_for_each_entry(&protected_branch_names, &iter, entry)
>       ++	strset_for_each_entry(protected_branch_names, &iter, entry)
>        +		strset_remove(deletable_branch_names, entry->key);
>       ++}
>        +
>       -+	strset_clear(&visited_branch_names);
>       -+	strset_clear(&protected_branch_names);
>       ++static void clear_deleted_upstreams(struct strset *protected_branch_names,
>       ++				    struct strset *deletable_branch_names)
>       ++{
>       ++	struct strbuf key = STRBUF_INIT;
>       ++	struct hashmap_iter iter;
>       ++	struct strmap_entry *entry;
>       ++
>       ++	strset_for_each_entry(protected_branch_names, &iter, entry) {
>       ++		struct branch *branch = branch_get(entry->key);
>       ++		const char *upstream_refname = branch_get_upstream(branch, NULL);
>       ++		const char *upstream_branch_name;
>       ++
>       ++		if (!upstream_refname ||
>       ++		    !skip_prefix(upstream_refname, "refs/heads/",
>       ++				 &upstream_branch_name) ||
>       ++		    !strset_contains(deletable_branch_names,
>       ++				    upstream_branch_name))
>       ++			continue;
>       ++
>       ++		strbuf_addf(&key, "branch.%s.merge", branch->name);
>       ++		repo_config_set_gently(the_repository, key.buf, NULL);
>       ++		strbuf_reset(&key);
>       ++		strbuf_addf(&key, "branch.%s.remote", branch->name);
>       ++		repo_config_set_gently(the_repository, key.buf, NULL);
>       ++		strbuf_reset(&key);
>       ++	}
>       ++
>       ++	strbuf_release(&key);
>        +}

... to here pretty much takes us back to V19 with the difference that we 
only prune protected branches from the deleteable set after we've 
visited all the branches - looks good.

>        +static int branch_pushes_to_upstream(struct branch *branch,
>        +				     const char *upstream)
>        +{
>        +	struct remote *remote = remote_get(remote_for_branch(branch, NULL));
>       ++	char *push_refname = NULL;
>        +	char *tracking = NULL;
>        +	int ret = 0;
>        +
>       -+	if (remote)
>       -+		tracking = apply_refspecs(&remote->fetch, branch->refname);
>       ++	if (!remote)
>       ++		return 0;
>       ++	if (remote->push.nr)
>       ++		push_refname = apply_refspecs(&remote->push, branch->refname);
>       ++	else
>       ++		push_refname = xstrdup(branch->refname);
>       ++	if (push_refname)
>       ++		tracking = apply_refspecs(&remote->fetch, push_refname);
>        +	if (tracking && !strcmp(tracking, upstream))
>        +		ret = 1;
>       ++	free(push_refname);>        +	free(tracking);
>        +	return ret;
>        +}

This looks good now - we map the branch name with the push refspec if 
there is one and then with the fetch refspec.

The test changes below look good as well.

Apart from the overlong lines in patch 1 which I'm not sure are worth a 
re-roll on their own, this looks ready to be merged to me

Thanks

Phillip

>       @@ t/t3200-branch.sh: test_expect_success '--forked requires a value' '
>        +create_merged_branch () {
>        +	(
>        +		cd repo &&
>       -+		git checkout -b "$1" origin/next --track &&
>       ++		git checkout -b "$1" --track origin/next &&
>        +		git commit --allow-empty -m "$1 work" &&
>        +		git push origin "$1:next"
>        +	)
>       @@ t/t3200-branch.sh: test_expect_success '--forked requires a value' '
>        +	test_cmp expect actual
>        +}
>        +
>       -+test_expect_success '--delete-merged keeps cloned main without a default push remote' '
>       ++test_expect_success '--delete-merged keeps cloned main without explicit push configuration' '
>        +	setup_repo_for_delete_merged &&
>        +	(
>        +		cd repo &&
>       ++		test_cmp_config origin branch.main.remote &&
>       ++		test_cmp_config refs/heads/main branch.main.merge &&
>        +		git checkout --detach &&
>        +
>        +		git branch --delete-merged */* &&
>       @@ t/t3200-branch.sh: test_expect_success '--forked requires a value' '
>        +	create_merged_branch merged &&
>        +	(
>        +		cd repo &&
>       -+		git checkout -b unmerged origin/next --track &&
>       ++		git checkout -b unmerged --track origin/next &&
>        +		git commit --allow-empty -m "unmerged work" &&
>       -+		git checkout -b tracks-other other/main --track &&
>       ++		git checkout -b tracks-other --track other/main &&
>        +		sha=$(git rev-parse --short merged) &&
>        +
>        +		git branch --delete-merged origin/next merged >actual 2>&1 &&
>       @@ t/t3200-branch.sh: test_expect_success '--forked requires a value' '
>        +	(
>        +		cd repo &&
>        +		git config remote.pushDefault fork &&
>       -+		git checkout -b local-to-delete main --track &&
>       -+		git update-ref refs/remotes/origin/topic refs/remotes/origin/next &&
>       -+		git branch --set-upstream-to=origin/topic upstream-gone &&
>       -+		git update-ref -d refs/remotes/origin/topic &&
>       -+		git checkout -b tracks-other other/main --track &&
>       ++		git checkout -b local-to-delete --track main &&
>       ++		git config branch.upstream-gone.merge refs/heads/topic &&
>       ++		git checkout -b tracks-other --track other/main &&
>        +		git checkout checked-out &&
>        +
>       -+		git branch --delete-merged origin/* \
>       -+			--delete-merged main &&
>       ++		git branch --delete-merged origin/* --delete-merged main &&
>        +
>        +		check_branches <<-\EOF
>        +		checked-out
>       @@ t/t3200-branch.sh: test_expect_success '--forked requires a value' '
>        +	)
>        +'
>        +
>       ++test_expect_success '--delete-merged maps push refspecs to upstreams' '
>       ++	setup_repo_for_delete_merged &&
>       ++	(
>       ++		cd repo &&
>       ++		git checkout -b topic &&
>       ++		git config remote.origin.push "refs/heads/topic:refs/heads/published" &&
>       ++		git push origin &&
>       ++		git branch --set-upstream-to=origin/published topic &&
>       ++		git checkout -b other-topic --track origin/published &&
>       ++		git checkout --detach &&
>       ++
>       ++		git branch --delete-merged origin/published &&
>       ++
>       ++		check_branches <<-\EOF
>       ++		main
>       ++		topic
>       ++		EOF
>       ++	)
>       ++'
>       ++
>        +test_expect_success '--delete-merged keeps the upstream of a surviving branch' '
>        +	setup_repo_for_delete_merged &&
>        +	create_merged_branch feature &&
>        +	(
>        +		cd repo &&
>       -+		git checkout -b topic feature --track &&
>       ++		git checkout -b topic --track feature &&
>        +		git commit --allow-empty -m "topic work" &&
>        +
>        +		git branch --delete-merged origin/next 2>err &&
>       @@ t/t3200-branch.sh: test_expect_success '--forked requires a value' '
>        +	)
>        +'
>        +
>       -+test_expect_success '--delete-merged keeps the upstream chain of a surviving branch' '
>       ++test_expect_success '--delete-merged clears the deleted upstream of a protected branch' '
>        +	setup_repo_for_delete_merged &&
>        +	(
>        +		cd repo &&
>       -+		git config remote.pushDefault fork &&
>       -+		git branch lower origin/next --track &&
>       -+		git branch mid lower --track &&
>       -+		git checkout -b tip mid --track &&
>       ++		git branch --track lower origin/next &&
>       ++		git branch --track mid lower &&
>       ++		git checkout -b tip --track mid &&
>        +		git commit --allow-empty -m "tip work" &&
>       ++		sha=$(git rev-parse --short lower) &&
>        +
>       -+		git branch --delete-merged origin/next \
>       -+			--delete-merged lower >actual 2>&1 &&
>       -+		test_must_be_empty actual &&
>       ++		git branch --delete-merged origin/next --delete-merged lower >actual 2>&1 &&
>       ++		echo "Deleted branch lower (was $sha)." >expect &&
>       ++		test_cmp expect actual &&
>        +
>        +		check_branches <<-\EOF &&
>       -+		lower
>        +		main
>        +		mid
>        +		tip
>        +		EOF
>        +
>       -+		git config --local --get-regexp "branch\\.(lower|mid|tip)\\.(merge|remote)" >actual &&
>       ++		git config --local --get-regexp "branch\\.(mid|tip)\\.(merge|remote)" >actual &&
>        +		cat >expect <<-\EOF &&
>       -+		branch.lower.remote origin
>       -+		branch.lower.merge refs/heads/next
>       -+		branch.mid.remote .
>       -+		branch.mid.merge refs/heads/lower
>        +		branch.tip.remote .
>        +		branch.tip.merge refs/heads/mid
>        +		EOF
>       @@ t/t3200-branch.sh: test_expect_success '--forked requires a value' '
>        +	setup_repo_for_delete_merged &&
>        +	(
>        +		cd repo &&
>       -+		git branch c-lower origin/next --track &&
>       -+		git branch b-mid c-lower --track &&
>       -+		git checkout -b a-tip b-mid --track &&
>       ++		git branch --track c-lower origin/next &&
>       ++		git branch --track b-mid c-lower &&
>       ++		git checkout -b a-tip --track b-mid &&
>        +		git commit --allow-empty -m "tip work" &&
>        +
>       -+		git branch --delete-merged origin/next \
>       -+			--delete-merged "c-*" &&
>       ++		git branch --delete-merged origin/next --delete-merged "c-*" &&
>        +
>        +		check_branches <<-\EOF &&
>        +		a-tip
>        +		b-mid
>       -+		c-lower
>        +		main
>        +		EOF
>        +
>       -+		git branch --delete-merged origin/next \
>       -+			--delete-merged "c-*" >actual 2>&1 &&
>       ++		git branch --delete-merged origin/next --delete-merged "c-*" >actual 2>&1 &&
>        +		test_must_be_empty actual &&
>        +
>        +		check_branches <<-\EOF
>        +		a-tip
>        +		b-mid
>       -+		c-lower
>        +		main
>        +		EOF
>        +	)
>   6:  6494be7c75 ! 6:  aa845096d8 branch: add branch.<name>.deleteMerged opt-out
>       @@ Documentation/config/branch.adoc: for details).
>        
>         ## Documentation/git-branch.adoc ##
>        @@ Documentation/git-branch.adoc: A branch is not deleted when:
>       - +
>       - --
>       - * its configured upstream ref no longer exists,
>       --* it is checked out in any worktree, or
>       -+* it is checked out in any worktree,
>       - * pushing it by name to the remote configured by
>       -   `branch.<name>.remote` would update its upstream, so it cannot be
>       -   distinguished from a branch that just looks "fully merged" right
>       --  after a pull.
>       -+  after a pull, or
>       +   distinguished from a branch that just looks fully merged right
>       +   after a pull; this is determined by the remote's configured push and
>       +   fetch refspecs,
>       +-* it is the local upstream of a branch that is not being deleted.
>       ++* it is the local upstream of a branch that is not being deleted, or
>        +* `branch.<name>.deleteMerged` is set to `false`.
>         --
>         +
>       - A branch whose work has not yet been merged into its upstream is
>       + When such a local upstream branch has its own upstream deleted by the
>        
>         ## builtin/branch.c ##
>        @@ builtin/branch.c: static int delete_merged_branches(const struct strvec *upstreams,
>       - 	struct ref_array candidates = { 0 };
>         	struct strset deletable_branch_names = STRSET_INIT;
>       + 	struct strset protected_branch_names = STRSET_INIT;
>         	struct strvec branches_to_delete = STRVEC_INIT;
>        +	struct strbuf key = STRBUF_INIT;
>         	struct hashmap_iter iter;
>       @@ builtin/branch.c: static int delete_merged_branches(const struct strvec *upstrea
>         	}
>         
>        @@ builtin/branch.c: static int delete_merged_branches(const struct strvec *upstreams,
>       - 				      DELETE_BRANCH_NO_HEAD_FALLBACK |
>       - 				      flags);
>       + 		clear_deleted_upstreams(&protected_branch_names,
>       + 					&deletable_branch_names);
>         
>        +	strbuf_release(&key);
>         	strvec_clear(&branches_to_delete);
>       + 	strset_clear(&protected_branch_names);
>         	strset_clear(&deletable_branch_names);
>       - 	ref_array_clear(&candidates);
>        
>         ## t/t3200-branch.sh ##
>        @@ t/t3200-branch.sh: test_expect_success '--delete-merged requires a value' '
>   7:  7102c931e2 ! 7:  96ebfd6ec6 branch: add --dry-run for --delete-merged
>       @@ Documentation/git-branch.adoc: git branch (-m|-M) [<old-branch>] <new-branch>
>         git branch (-c|-C) [<old-branch>] <new-branch>
>         git branch (-d|-D) [-r] <branch-name>...
>         git branch --edit-description [<branch-name>]
>       --git branch (--delete-merged <branch>)... [<pattern>...]
>       -+git branch [--dry-run] (--delete-merged <branch>)... [<pattern>...]
>       +-git branch (--delete-merged <pattern>)... [<branch-pattern>...]
>       ++git branch [--dry-run] (--delete-merged <pattern>)... [<branch-pattern>...]
>         
>         DESCRIPTION
>         -----------
>       -@@ Documentation/git-branch.adoc: A branch that a surviving branch depends on through a chain of local
>       - upstreams is kept, so a branch is never deleted out from under stacked
>       - work.
>       +@@ Documentation/git-branch.adoc: A branch whose work has not yet been merged into its upstream is
>       + silently skipped. Delete it with `git branch -D` if you want to
>       + remove it anyway.
>         
>        +`--dry-run`::
>        +	With `--delete-merged`, print which branches would be
>       @@ builtin/branch.c: static int delete_branches(int argc, const char **argv, int ki
>         			char *refname = name + branch_name_pos;
>         			if (!(flags & DELETE_BRANCH_QUIET))
>         				printf(remote_branch
>       +@@ builtin/branch.c: static int delete_merged_branches(const struct strvec *upstreams,
>       + 				      DELETE_BRANCH_NO_HEAD_FALLBACK |
>       + 				      flags);
>       +
>       +-	if (!ret)
>       ++	if (!ret && !(flags & DELETE_BRANCH_DRY_RUN))
>       + 		clear_deleted_upstreams(&protected_branch_names,
>       + 					&deletable_branch_names);
>       +
>        @@ builtin/branch.c: int cmd_branch(int argc,
>         	int delete = 0, rename = 0, copy = 0, list = 0,
>         	    unset_upstream = 0, show_current = 0, edit_description = 0;
>       @@ builtin/branch.c: int cmd_branch(int argc,
>         	int noncreate_actions = 0;
>         	/* possible options */
>        @@ builtin/branch.c: int cmd_branch(int argc,
>       - 		OPT_CALLBACK_F(0, "delete-merged", &delete_merged, N_("branch"),
>       - 			N_("delete merged branches whose upstream matches <branch> (repeatable)"),
>       + 		OPT_CALLBACK_F(0, "delete-merged", &delete_merged, N_("pattern"),
>       + 			N_("delete merged branches whose upstream matches <pattern> (repeatable)"),
>         			PARSE_OPT_NONEG, parse_opt_strvec),
>        +		OPT_BOOL(0, "dry-run", &dry_run,
>        +			N_("with --delete-merged, only print which branches would be deleted")),
>       @@ builtin/branch.c: int cmd_branch(int argc,
>        
>         ## t/t3200-branch.sh ##
>        @@ t/t3200-branch.sh: test_expect_success '--delete-merged deletes only selected merged branches' '
>       - 		git checkout -b tracks-other other/main --track &&
>       + 		git checkout -b tracks-other --track other/main &&
>         		sha=$(git rev-parse --short merged) &&
>         
>        +		git branch --dry-run --delete-merged origin/next merged >actual 2>&1 &&
>       @@ t/t3200-branch.sh: test_expect_success '--delete-merged deletes only selected me
>         		echo "Deleted branch merged (was $sha)." >expect &&
>         		test_cmp expect actual &&
>        @@ t/t3200-branch.sh: test_expect_success '--delete-merged keeps the upstream of a surviving branch' '
>       - 		git checkout -b topic feature --track &&
>       + 		git checkout -b topic --track feature &&
>         		git commit --allow-empty -m "topic work" &&
>         
>        -		git branch --delete-merged origin/next 2>err &&
>       @@ t/t3200-branch.sh: test_expect_success '--delete-merged keeps the upstream of a
>         		check_branches <<-\EOF &&
>         		feature
>         		main
>       -@@ t/t3200-branch.sh: test_expect_success '--delete-merged keeps the upstream chain of a surviving bra
>       - 		git checkout -b tip mid --track &&
>       +@@ t/t3200-branch.sh: test_expect_success '--delete-merged clears the deleted upstream of a protected
>         		git commit --allow-empty -m "tip work" &&
>       + 		sha=$(git rev-parse --short lower) &&
>         
>       -+		git branch --dry-run --delete-merged origin/next \
>       -+			--delete-merged lower >actual 2>&1 &&
>       -+		test_must_be_empty actual &&
>       ++		git branch --dry-run --delete-merged origin/next --delete-merged lower >actual 2>&1 &&
>       ++		echo "Would delete branch lower (was $sha)." >expect &&
>       ++		test_cmp expect actual &&
>        +
>        +		git config --local --get-regexp "branch\\.(lower|mid|tip)\\.(merge|remote)" >actual &&
>        +		cat >expect <<-\EOF &&
>       @@ t/t3200-branch.sh: test_expect_success '--delete-merged keeps the upstream chain
>        +		EOF
>        +		test_cmp expect actual &&
>        +
>       - 		git branch --delete-merged origin/next \
>       - 			--delete-merged lower >actual 2>&1 &&
>       - 		test_must_be_empty actual &&
>       + 		git branch --delete-merged origin/next --delete-merged lower >actual 2>&1 &&
>       + 		echo "Deleted branch lower (was $sha)." >expect &&
>       + 		test_cmp expect actual &&
>        @@ t/t3200-branch.sh: test_expect_success "branch -d still deletes a deleteMerged=false branch" '
>         	)
>         '
> 


  parent reply	other threads:[~2026-08-04 15:58 UTC|newest]

Thread overview: 290+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-01 21:35 [PATCH] fetch: add fetch.pruneLocalBranches config Harald Nordgren via GitGitGadget
2026-05-03 22:39 ` Junio C Hamano
2026-05-04 18:28   ` [PATCH] checkout: add --autostash option for branch switching Harald Nordgren
2026-05-10  1:01     ` Junio C Hamano
2026-05-05  7:14   ` [PATCH] fetch: add fetch.pruneLocalBranches config Johannes Sixt
2026-05-04 18:27 ` [PATCH v2 0/6] fetch: add fetch.pruneBranches config Harald Nordgren via GitGitGadget
2026-05-04 18:27   ` [PATCH v2 1/6] branch: add --forked <remote> Harald Nordgren via GitGitGadget
2026-05-04 23:25     ` Kristoffer Haugsbakk
2026-05-04 18:27   ` [PATCH v2 2/6] branch: let delete_branches warn instead of error on bulk refusal Harald Nordgren via GitGitGadget
2026-05-04 18:27   ` [PATCH v2 3/6] branch: add --prune-merged <remote> Harald Nordgren via GitGitGadget
2026-05-04 18:27   ` [PATCH v2 4/6] fetch: add --prune-merged Harald Nordgren via GitGitGadget
2026-05-04 18:27   ` [PATCH v2 5/6] branch: add branch.<name>.pruneMerged opt-out Harald Nordgren via GitGitGadget
2026-05-04 18:27   ` [PATCH v2 6/6] branch: add --all-remotes flag Harald Nordgren via GitGitGadget
2026-05-05  7:22   ` [PATCH v3 0/6] fetch: add fetch.pruneBranches config Harald Nordgren via GitGitGadget
2026-05-05  7:22     ` [PATCH v3 1/6] branch: add --forked <remote> Harald Nordgren via GitGitGadget
2026-05-05  7:22     ` [PATCH v3 2/6] branch: let delete_branches warn instead of error on bulk refusal Harald Nordgren via GitGitGadget
2026-05-05  7:22     ` [PATCH v3 3/6] branch: add --prune-merged <remote> Harald Nordgren via GitGitGadget
2026-05-05  7:22     ` [PATCH v3 4/6] fetch: add --prune-merged Harald Nordgren via GitGitGadget
2026-05-05  7:22     ` [PATCH v3 5/6] branch: add branch.<name>.pruneMerged opt-out Harald Nordgren via GitGitGadget
2026-05-05  7:22     ` [PATCH v3 6/6] branch: add --all-remotes flag Harald Nordgren via GitGitGadget
2026-05-05 19:23     ` [PATCH v4 0/6] fetch: add fetch.pruneBranches config Harald Nordgren via GitGitGadget
2026-05-05 19:23       ` [PATCH v4 1/6] branch: add --forked <remote> Harald Nordgren via GitGitGadget
2026-05-05 19:23       ` [PATCH v4 2/6] branch: let delete_branches warn instead of error on bulk refusal Harald Nordgren via GitGitGadget
2026-05-05 19:23       ` [PATCH v4 3/6] branch: add --prune-merged <remote> Harald Nordgren via GitGitGadget
2026-05-05 19:23       ` [PATCH v4 4/6] fetch: add --prune-merged Harald Nordgren via GitGitGadget
2026-05-05 20:48         ` Johannes Sixt
2026-05-05 22:07           ` [PATCH] fetch: add fetch.pruneLocalBranches config Harald Nordgren
2026-05-11  2:59             ` Junio C Hamano
2026-05-11  6:56               ` Harald Nordgren
2026-05-05 19:23       ` [PATCH v4 5/6] branch: add branch.<name>.pruneMerged opt-out Harald Nordgren via GitGitGadget
2026-05-05 19:23       ` [PATCH v4 6/6] branch: add --all-remotes flag Harald Nordgren via GitGitGadget
2026-05-07 20:14       ` [PATCH v4 0/6] fetch: add fetch.pruneBranches config Harald Nordgren
2026-05-11  6:58       ` [PATCH v5 0/5] branch: prune-merged Harald Nordgren via GitGitGadget
2026-05-11  6:58         ` [PATCH v5 1/5] branch: add --forked <remote> Harald Nordgren via GitGitGadget
2026-05-11  6:58         ` [PATCH v5 2/5] branch: let delete_branches warn instead of error on bulk refusal Harald Nordgren via GitGitGadget
2026-05-11  8:18           ` Junio C Hamano
2026-05-11  8:44             ` [PATCH] fetch: add fetch.pruneLocalBranches config Harald Nordgren
2026-05-11  6:58         ` [PATCH v5 3/5] branch: add --prune-merged <remote> Harald Nordgren via GitGitGadget
2026-05-11  6:58         ` [PATCH v5 4/5] branch: add branch.<name>.pruneMerged opt-out Harald Nordgren via GitGitGadget
2026-05-11  6:58         ` [PATCH v5 5/5] branch: add --all-remotes flag Harald Nordgren via GitGitGadget
2026-05-11  9:44         ` [PATCH v6 0/5] branch: prune-merged Harald Nordgren via GitGitGadget
2026-05-11  9:44           ` [PATCH v6 1/5] branch: add --forked <remote> Harald Nordgren via GitGitGadget
2026-05-11  9:44           ` [PATCH v6 2/5] branch: let delete_branches warn instead of error on bulk refusal Harald Nordgren via GitGitGadget
2026-05-11  9:44           ` [PATCH v6 3/5] branch: add --prune-merged <remote> Harald Nordgren via GitGitGadget
2026-05-11  9:44           ` [PATCH v6 4/5] branch: add branch.<name>.pruneMerged opt-out Harald Nordgren via GitGitGadget
2026-05-11  9:44           ` [PATCH v6 5/5] branch: add --all-remotes flag Harald Nordgren via GitGitGadget
2026-05-11 23:20           ` [PATCH v6 0/5] branch: prune-merged Junio C Hamano
2026-05-12  7:35             ` [PATCH] fetch: add fetch.pruneLocalBranches config Harald Nordgren
2026-05-12  8:23           ` [PATCH v7 0/5] branch: prune-merged Harald Nordgren via GitGitGadget
2026-05-12  8:23             ` [PATCH v7 1/5] branch: add --forked <remote> Harald Nordgren via GitGitGadget
2026-05-12  8:23             ` [PATCH v7 2/5] branch: let delete_branches warn instead of error on bulk refusal Harald Nordgren via GitGitGadget
2026-05-12  8:23             ` [PATCH v7 3/5] branch: add --prune-merged <remote> Harald Nordgren via GitGitGadget
2026-05-12 13:53               ` Junio C Hamano
2026-05-12 17:00                 ` [PATCH] fetch: add fetch.pruneLocalBranches config Harald Nordgren
2026-05-12  8:23             ` [PATCH v7 4/5] branch: add branch.<name>.pruneMerged opt-out Harald Nordgren via GitGitGadget
2026-05-12  8:23             ` [PATCH v7 5/5] branch: add --all-remotes flag Harald Nordgren via GitGitGadget
2026-05-12 17:07             ` [PATCH v8 0/5] branch: prune-merged Harald Nordgren via GitGitGadget
2026-05-12 17:07               ` [PATCH v8 1/5] branch: add --forked <remote> Harald Nordgren via GitGitGadget
2026-05-12 17:07               ` [PATCH v8 2/5] branch: let delete_branches warn instead of error on bulk refusal Harald Nordgren via GitGitGadget
2026-05-12 17:07               ` [PATCH v8 3/5] branch: add --prune-merged <remote> Harald Nordgren via GitGitGadget
2026-05-12 17:07               ` [PATCH v8 4/5] branch: add branch.<name>.pruneMerged opt-out Harald Nordgren via GitGitGadget
2026-05-12 17:07               ` [PATCH v8 5/5] branch: add --all-remotes flag Harald Nordgren via GitGitGadget
2026-05-13 13:46               ` [PATCH v8 0/5] branch: prune-merged Junio C Hamano
2026-05-13 18:57                 ` [PATCH] fetch: add fetch.pruneLocalBranches config Harald Nordgren
2026-05-13 19:34               ` [PATCH v9 0/5] branch: prune-merged Harald Nordgren via GitGitGadget
2026-05-13 19:34                 ` [PATCH v9 1/5] branch: add --forked <remote> Harald Nordgren via GitGitGadget
2026-05-13 19:34                 ` [PATCH v9 2/5] branch: let delete_branches warn instead of error on bulk refusal Harald Nordgren via GitGitGadget
2026-05-13 19:34                 ` [PATCH v9 3/5] branch: add --prune-merged <remote> Harald Nordgren via GitGitGadget
2026-05-18 15:27                   ` Phillip Wood
2026-05-21  9:46                     ` Phillip Wood
2026-05-21 19:16                       ` Harald Nordgren
2026-05-22  9:47                         ` Phillip Wood
2026-05-22 10:51                           ` Harald Nordgren
2026-05-21 12:37                     ` Harald Nordgren
2026-05-21 13:29                     ` Junio C Hamano
2026-05-13 19:34                 ` [PATCH v9 4/5] branch: add branch.<name>.pruneMerged opt-out Harald Nordgren via GitGitGadget
2026-05-13 19:34                 ` [PATCH v9 5/5] branch: add --all-remotes flag Harald Nordgren via GitGitGadget
2026-05-18 15:27                   ` Phillip Wood
2026-05-18  8:14                 ` [PATCH v9 0/5] branch: prune-merged Harald Nordgren
2026-05-21 22:40                 ` [PATCH v10 0/4] " Harald Nordgren via GitGitGadget
2026-05-21 22:40                   ` [PATCH v10 1/4] branch: add --forked <branch> Harald Nordgren via GitGitGadget
2026-05-22  1:52                     ` Junio C Hamano
2026-05-22  6:18                     ` Johannes Sixt
2026-05-22  6:36                       ` Junio C Hamano
2026-05-22 10:49                         ` Harald Nordgren
2026-05-22 11:25                           ` Johannes Sixt
2026-05-21 22:40                   ` [PATCH v10 2/4] branch: add --prune-merged <branch> Harald Nordgren via GitGitGadget
2026-05-22  1:17                     ` Junio C Hamano
2026-05-22  2:51                     ` Junio C Hamano
2026-05-22  2:53                       ` Junio C Hamano
2026-05-22  7:59                         ` Harald Nordgren
2026-05-22 11:58                           ` Junio C Hamano
2026-05-22  2:52                     ` Junio C Hamano
2026-05-21 22:40                   ` [PATCH v10 3/4] branch: add branch.<name>.pruneMerged opt-out Harald Nordgren via GitGitGadget
2026-05-21 22:40                   ` [PATCH v10 4/4] branch: add --dry-run for --prune-merged Harald Nordgren via GitGitGadget
2026-05-22 11:31                   ` [PATCH v11 0/6] branch: prune-merged Harald Nordgren via GitGitGadget
2026-05-22 11:31                     ` [PATCH v11 1/6] branch: add --forked <branch> Harald Nordgren via GitGitGadget
2026-05-22 11:31                     ` [PATCH v11 2/6] branch: let delete_branches warn instead of error on bulk refusal Harald Nordgren via GitGitGadget
2026-05-22 11:31                     ` [PATCH v11 3/6] branch: prepare delete_branches for a bulk caller Harald Nordgren via GitGitGadget
2026-05-22 11:31                     ` [PATCH v11 4/6] branch: add --prune-merged <branch> Harald Nordgren via GitGitGadget
2026-05-22 11:31                     ` [PATCH v11 5/6] branch: add branch.<name>.pruneMerged opt-out Harald Nordgren via GitGitGadget
2026-05-22 11:31                     ` [PATCH v11 6/6] branch: add --dry-run for --prune-merged Harald Nordgren via GitGitGadget
2026-06-02 13:05                     ` [PATCH v11 0/6] branch: prune-merged Phillip Wood
2026-06-02 13:41                       ` Harald Nordgren
2026-06-03  9:04                     ` [PATCH v12 " Harald Nordgren via GitGitGadget
2026-06-03  9:04                       ` [PATCH v12 1/6] branch: add --forked filter for --list mode Harald Nordgren via GitGitGadget
2026-06-05 13:48                         ` Phillip Wood
2026-06-05 17:50                           ` Harald Nordgren
2026-06-03  9:04                       ` [PATCH v12 2/6] branch: let delete_branches warn instead of error on bulk refusal Harald Nordgren via GitGitGadget
2026-06-05 13:49                         ` Phillip Wood
2026-06-03  9:04                       ` [PATCH v12 3/6] branch: prepare delete_branches for a bulk caller Harald Nordgren via GitGitGadget
2026-06-05 13:49                         ` Phillip Wood
2026-06-03  9:04                       ` [PATCH v12 4/6] branch: add --prune-merged <branch> Harald Nordgren via GitGitGadget
2026-06-05 13:50                         ` Phillip Wood
2026-06-05 15:04                           ` Phillip Wood
2026-06-03  9:04                       ` [PATCH v12 5/6] branch: add branch.<name>.pruneMerged opt-out Harald Nordgren via GitGitGadget
2026-06-03  9:04                       ` [PATCH v12 6/6] branch: add --dry-run for --prune-merged Harald Nordgren via GitGitGadget
2026-06-05 18:35                       ` [PATCH v13 0/6] branch: prune-merged Harald Nordgren via GitGitGadget
2026-06-05 18:35                         ` [PATCH v13 1/6] branch: add --forked filter for --list mode Harald Nordgren via GitGitGadget
2026-06-05 18:35                         ` [PATCH v13 2/6] branch: let delete_branches warn instead of error on bulk refusal Harald Nordgren via GitGitGadget
2026-06-08 23:56                           ` Junio C Hamano
2026-06-09  7:52                             ` Harald Nordgren
2026-06-09 12:38                               ` Junio C Hamano
2026-06-09 13:20                                 ` Harald Nordgren
2026-06-05 18:35                         ` [PATCH v13 3/6] branch: prepare delete_branches for a bulk caller Harald Nordgren via GitGitGadget
2026-06-05 18:35                         ` [PATCH v13 4/6] branch: add --prune-merged <branch> Harald Nordgren via GitGitGadget
2026-06-05 18:35                         ` [PATCH v13 5/6] branch: add branch.<name>.pruneMerged opt-out Harald Nordgren via GitGitGadget
2026-06-05 18:35                         ` [PATCH v13 6/6] branch: add --dry-run for --prune-merged Harald Nordgren via GitGitGadget
2026-06-09 10:11                         ` [PATCH v14 0/6] branch: prune-merged Harald Nordgren via GitGitGadget
2026-06-09 10:11                           ` [PATCH v14 1/6] branch: add --forked filter for --list mode Harald Nordgren via GitGitGadget
2026-06-15  9:46                             ` Phillip Wood
2026-06-09 10:11                           ` [PATCH v14 2/6] branch: let delete_branches warn instead of error on bulk refusal Harald Nordgren via GitGitGadget
2026-06-09 13:21                             ` Phillip Wood
2026-06-09 10:11                           ` [PATCH v14 3/6] branch: prepare delete_branches for a bulk caller Harald Nordgren via GitGitGadget
2026-06-15  9:47                             ` Phillip Wood
2026-06-09 10:11                           ` [PATCH v14 4/6] branch: add --prune-merged <branch> Harald Nordgren via GitGitGadget
2026-06-15  9:46                             ` Phillip Wood
2026-06-16  9:59                             ` Phillip Wood
2026-06-16 19:15                               ` Harald Nordgren
2026-06-18 13:42                                 ` Phillip Wood
2026-06-18 16:08                                   ` Junio C Hamano
2026-06-19 13:13                                     ` Phillip Wood
2026-06-19 15:42                                       ` Junio C Hamano
2026-06-19 16:01                                         ` Junio C Hamano
2026-06-20  9:04                                           ` Harald Nordgren
2026-06-21 18:46                                             ` Harald Nordgren
2026-06-22  9:09                                               ` Phillip Wood
2026-06-22  9:28                                                 ` Phillip Wood
2026-06-22  9:37                                                   ` Harald Nordgren
2026-06-22  9:57                                                     ` Phillip Wood
2026-06-22 10:52                                                       ` Harald Nordgren
2026-06-22  9:25                                             ` Phillip Wood
2026-06-22  9:07                                           ` Phillip Wood
2026-06-22 12:26                                             ` Junio C Hamano
2026-06-09 10:11                           ` [PATCH v14 5/6] branch: add branch.<name>.pruneMerged opt-out Harald Nordgren via GitGitGadget
2026-06-16  9:57                             ` Phillip Wood
2026-06-09 10:11                           ` [PATCH v14 6/6] branch: add --dry-run for --prune-merged Harald Nordgren via GitGitGadget
2026-06-16  9:57                             ` Phillip Wood
2026-06-16 18:28                               ` Harald Nordgren
2026-06-15 16:47                           ` [PATCH v15 0/7] branch: delete-merged Harald Nordgren via GitGitGadget
2026-06-15 16:47                             ` [PATCH v15 1/7] branch: add --forked filter for --list mode Harald Nordgren via GitGitGadget
2026-06-15 16:47                             ` [PATCH v15 2/7] branch: convert delete_branches() to a flags argument Harald Nordgren via GitGitGadget
2026-06-15 16:47                             ` [PATCH v15 3/7] branch: let delete_branches skip unmerged branches on bulk refusal Harald Nordgren via GitGitGadget
2026-06-15 16:47                             ` [PATCH v15 4/7] branch: prepare delete_branches for a bulk caller Harald Nordgren via GitGitGadget
2026-06-15 16:47                             ` [PATCH v15 5/7] branch: add --delete-merged <branch> Harald Nordgren via GitGitGadget
2026-06-15 16:47                             ` [PATCH v15 6/7] branch: add branch.<name>.deleteMerged opt-out Harald Nordgren via GitGitGadget
2026-06-15 16:47                             ` [PATCH v15 7/7] branch: add --dry-run for --delete-merged Harald Nordgren via GitGitGadget
2026-06-17 10:01                             ` [PATCH v15 0/7] branch: delete-merged Phillip Wood
2026-06-17 11:17                               ` Harald Nordgren
2026-06-17 14:21                                 ` Phillip Wood
2026-06-17 19:11                                   ` Harald Nordgren
2026-06-18 13:48                                     ` Phillip Wood
2026-06-18 17:53                                       ` Harald Nordgren
2026-06-18 19:25                             ` [PATCH v16 " Harald Nordgren via GitGitGadget
2026-06-18 19:25                               ` [PATCH v16 1/7] branch: add --forked filter for --list mode Harald Nordgren via GitGitGadget
2026-06-18 19:25                               ` [PATCH v16 2/7] branch: convert delete_branches() to a flags argument Harald Nordgren via GitGitGadget
2026-06-18 19:25                               ` [PATCH v16 3/7] branch: let delete_branches skip unmerged branches on bulk refusal Harald Nordgren via GitGitGadget
2026-06-18 19:25                               ` [PATCH v16 4/7] branch: prepare delete_branches for a bulk caller Harald Nordgren via GitGitGadget
2026-06-18 19:25                               ` [PATCH v16 5/7] branch: add --delete-merged <branch> Harald Nordgren via GitGitGadget
2026-06-18 19:25                               ` [PATCH v16 6/7] branch: add branch.<name>.deleteMerged opt-out Harald Nordgren via GitGitGadget
2026-06-18 19:25                               ` [PATCH v16 7/7] branch: add --dry-run for --delete-merged Harald Nordgren via GitGitGadget
2026-06-22  7:29                               ` [PATCH v17 0/7] branch: delete-merged Harald Nordgren via GitGitGadget
2026-06-22  7:29                                 ` [PATCH v17 1/7] branch: add --forked filter for --list mode Harald Nordgren via GitGitGadget
2026-06-22  7:29                                 ` [PATCH v17 2/7] branch: convert delete_branches() to a flags argument Harald Nordgren via GitGitGadget
2026-06-22  7:29                                 ` [PATCH v17 3/7] branch: let delete_branches skip unmerged branches on bulk refusal Harald Nordgren via GitGitGadget
2026-06-22  7:29                                 ` [PATCH v17 4/7] branch: prepare delete_branches for a bulk caller Harald Nordgren via GitGitGadget
2026-06-22  7:29                                 ` [PATCH v17 5/7] branch: add --delete-merged <branch> Harald Nordgren via GitGitGadget
2026-06-22 15:36                                   ` Phillip Wood
2026-06-22  7:29                                 ` [PATCH v17 6/7] branch: add branch.<name>.deleteMerged opt-out Harald Nordgren via GitGitGadget
2026-06-22  7:29                                 ` [PATCH v17 7/7] branch: add --dry-run for --delete-merged Harald Nordgren via GitGitGadget
2026-06-24 21:54                                 ` [PATCH v18 0/7] branch: delete-merged Harald Nordgren via GitGitGadget
2026-06-24 21:55                                   ` [PATCH v18 1/7] branch: add --forked filter for --list mode Harald Nordgren via GitGitGadget
2026-07-10 15:18                                     ` Phillip Wood
2026-07-11 12:30                                       ` Harald Nordgren
2026-06-24 21:55                                   ` [PATCH v18 2/7] branch: convert delete_branches() to a flags argument Harald Nordgren via GitGitGadget
2026-07-10 15:18                                     ` Phillip Wood
2026-07-10 17:25                                       ` Harald Nordgren
2026-07-13 15:28                                         ` Phillip Wood
2026-06-24 21:55                                   ` [PATCH v18 3/7] branch: let delete_branches skip unmerged branches on bulk refusal Harald Nordgren via GitGitGadget
2026-07-10 15:18                                     ` Phillip Wood
2026-06-24 21:55                                   ` [PATCH v18 4/7] branch: prepare delete_branches for a bulk caller Harald Nordgren via GitGitGadget
2026-06-24 21:55                                   ` [PATCH v18 5/7] branch: add --delete-merged <branch> Harald Nordgren via GitGitGadget
2026-07-10 15:24                                     ` Phillip Wood
2026-07-11 13:08                                       ` Harald Nordgren
2026-07-11 19:36                                         ` Harald Nordgren
2026-07-13 15:39                                           ` Phillip Wood
2026-07-13 16:39                                             ` Phillip Wood
2026-07-13 18:17                                               ` Harald Nordgren
2026-07-14 13:01                                                 ` Phillip Wood
2026-07-14 17:00                                                   ` Harald Nordgren
2026-06-24 21:55                                   ` [PATCH v18 6/7] branch: add branch.<name>.deleteMerged opt-out Harald Nordgren via GitGitGadget
2026-07-13 15:27                                     ` Phillip Wood
2026-07-13 16:33                                       ` Harald Nordgren
2026-06-24 21:55                                   ` [PATCH v18 7/7] branch: add --dry-run for --delete-merged Harald Nordgren via GitGitGadget
2026-07-13 15:27                                     ` Phillip Wood
2026-07-13 16:23                                       ` Harald Nordgren
2026-07-10 15:26                                   ` [PATCH v18 0/7] branch: delete-merged Phillip Wood
2026-07-14 18:24                                   ` [PATCH v19 " Harald Nordgren via GitGitGadget
2026-07-14 18:24                                     ` [PATCH v19 1/7] branch: add --forked filter for --list mode Harald Nordgren via GitGitGadget
2026-07-14 18:24                                     ` [PATCH v19 2/7] branch: convert delete_branches() to a flags argument Harald Nordgren via GitGitGadget
2026-07-14 18:24                                     ` [PATCH v19 3/7] branch: let delete_branches skip unmerged branches on bulk refusal Harald Nordgren via GitGitGadget
2026-07-14 18:24                                     ` [PATCH v19 4/7] branch: prepare delete_branches for a bulk caller Harald Nordgren via GitGitGadget
2026-07-14 18:24                                     ` [PATCH v19 5/7] branch: add --delete-merged <branch> Harald Nordgren via GitGitGadget
2026-07-19  3:02                                       ` Junio C Hamano
2026-07-19 15:30                                         ` Harald Nordgren
2026-07-19 19:22                                           ` Junio C Hamano
2026-07-19 19:42                                             ` Phillip Wood
2026-07-19 21:42                                       ` Junio C Hamano
2026-07-14 18:24                                     ` [PATCH v19 6/7] branch: add branch.<name>.deleteMerged opt-out Harald Nordgren via GitGitGadget
2026-07-14 18:24                                     ` [PATCH v19 7/7] branch: add --dry-run for --delete-merged Harald Nordgren via GitGitGadget
2026-07-22  7:10                                     ` [PATCH v20 0/7] branch: delete-merged Harald Nordgren via GitGitGadget
2026-07-22  7:10                                       ` [PATCH v20 1/7] branch: add --forked filter for --list mode Harald Nordgren via GitGitGadget
2026-07-22  7:10                                       ` [PATCH v20 2/7] branch: convert delete_branches() to a flags argument Harald Nordgren via GitGitGadget
2026-07-22  7:10                                       ` [PATCH v20 3/7] branch: let delete_branches skip unmerged branches on bulk refusal Harald Nordgren via GitGitGadget
2026-07-22  7:10                                       ` [PATCH v20 4/7] branch: prepare delete_branches for a bulk caller Harald Nordgren via GitGitGadget
2026-07-22  7:10                                       ` [PATCH v20 5/7] branch: add --delete-merged <branch> Harald Nordgren via GitGitGadget
2026-07-22  7:10                                       ` [PATCH v20 6/7] branch: add branch.<name>.deleteMerged opt-out Harald Nordgren via GitGitGadget
2026-07-22  7:10                                       ` [PATCH v20 7/7] branch: add --dry-run for --delete-merged Harald Nordgren via GitGitGadget
2026-07-22 13:39                                       ` [PATCH v20 0/7] branch: delete-merged Phillip Wood
2026-07-22 15:41                                         ` Harald Nordgren
2026-07-24 10:36                                       ` [PATCH v21 " Harald Nordgren via GitGitGadget
2026-07-24 10:36                                         ` [PATCH v21 1/7] branch: add --forked filter for --list mode Harald Nordgren via GitGitGadget
2026-07-24 10:36                                         ` [PATCH v21 2/7] branch: convert delete_branches() to a flags argument Harald Nordgren via GitGitGadget
2026-07-24 10:36                                         ` [PATCH v21 3/7] branch: let delete_branches skip unmerged branches on bulk refusal Harald Nordgren via GitGitGadget
2026-07-24 10:36                                         ` [PATCH v21 4/7] branch: prepare delete_branches for a bulk caller Harald Nordgren via GitGitGadget
2026-07-24 10:36                                         ` [PATCH v21 5/7] branch: add --delete-merged <branch> Harald Nordgren via GitGitGadget
2026-07-24 10:36                                         ` [PATCH v21 6/7] branch: add branch.<name>.deleteMerged opt-out Harald Nordgren via GitGitGadget
2026-07-24 10:36                                         ` [PATCH v21 7/7] branch: add --dry-run for --delete-merged Harald Nordgren via GitGitGadget
2026-07-24 15:43                                         ` [PATCH v21 0/7] branch: delete-merged Junio C Hamano
2026-07-24 19:29                                         ` [PATCH v22 " Harald Nordgren via GitGitGadget
2026-07-24 19:29                                           ` [PATCH v22 1/7] branch: add --forked filter for --list mode Harald Nordgren via GitGitGadget
2026-07-25  4:16                                             ` Junio C Hamano
2026-07-24 19:29                                           ` [PATCH v22 2/7] branch: convert delete_branches() to a flags argument Harald Nordgren via GitGitGadget
2026-07-24 19:29                                           ` [PATCH v22 3/7] branch: let delete_branches skip unmerged branches on bulk refusal Harald Nordgren via GitGitGadget
2026-07-24 19:29                                           ` [PATCH v22 4/7] branch: prepare delete_branches for a bulk caller Harald Nordgren via GitGitGadget
2026-07-24 19:29                                           ` [PATCH v22 5/7] branch: add --delete-merged <branch> Harald Nordgren via GitGitGadget
2026-07-24 19:29                                           ` [PATCH v22 6/7] branch: add branch.<name>.deleteMerged opt-out Harald Nordgren via GitGitGadget
2026-07-24 19:29                                           ` [PATCH v22 7/7] branch: add --dry-run for --delete-merged Harald Nordgren via GitGitGadget
2026-07-25 11:32                                           ` [PATCH v23 0/7] branch: delete-merged Harald Nordgren via GitGitGadget
2026-07-25 11:32                                             ` [PATCH v23 1/7] branch: add --forked filter for --list mode Harald Nordgren via GitGitGadget
2026-07-25 11:32                                             ` [PATCH v23 2/7] branch: convert delete_branches() to a flags argument Harald Nordgren via GitGitGadget
2026-07-25 11:32                                             ` [PATCH v23 3/7] branch: let delete_branches skip unmerged branches on bulk refusal Harald Nordgren via GitGitGadget
2026-07-25 11:32                                             ` [PATCH v23 4/7] branch: prepare delete_branches for a bulk caller Harald Nordgren via GitGitGadget
2026-07-25 11:32                                             ` [PATCH v23 5/7] branch: add --delete-merged <branch> Harald Nordgren via GitGitGadget
2026-07-29 15:10                                               ` Phillip Wood
2026-07-29 23:13                                                 ` Harald Nordgren
2026-07-30  9:32                                                   ` Phillip Wood
2026-07-30 11:45                                                     ` Harald Nordgren
2026-07-25 11:32                                             ` [PATCH v23 6/7] branch: add branch.<name>.deleteMerged opt-out Harald Nordgren via GitGitGadget
2026-07-25 11:32                                             ` [PATCH v23 7/7] branch: add --dry-run for --delete-merged Harald Nordgren via GitGitGadget
2026-07-25 15:13                                             ` [PATCH v23 0/7] branch: delete-merged Junio C Hamano
2026-07-30 13:58                                             ` [PATCH v24 " Harald Nordgren via GitGitGadget
2026-07-30 13:58                                               ` [PATCH v24 1/7] branch: add --forked filter for --list mode Harald Nordgren via GitGitGadget
2026-07-30 13:58                                               ` [PATCH v24 2/7] branch: convert delete_branches() to a flags argument Harald Nordgren via GitGitGadget
2026-07-30 13:58                                               ` [PATCH v24 3/7] branch: let delete_branches skip unmerged branches on bulk refusal Harald Nordgren via GitGitGadget
2026-07-30 13:58                                               ` [PATCH v24 4/7] branch: prepare delete_branches for a bulk caller Harald Nordgren via GitGitGadget
2026-07-30 13:58                                               ` [PATCH v24 5/7] branch: add --delete-merged <pattern> Harald Nordgren via GitGitGadget
2026-07-30 13:58                                               ` [PATCH v24 6/7] branch: add branch.<name>.deleteMerged opt-out Harald Nordgren via GitGitGadget
2026-07-30 13:58                                               ` [PATCH v24 7/7] branch: add --dry-run for --delete-merged Harald Nordgren via GitGitGadget
2026-08-04 15:58                                               ` Phillip Wood [this message]
2026-08-04 20:33                                                 ` [PATCH v24 0/7] branch: delete-merged Harald Nordgren
2026-08-04 21:04                                                 ` Junio C Hamano
2026-08-05 14:24 ` [PATCH v25 " Harald Nordgren via GitGitGadget
2026-08-05 14:24   ` [PATCH v25 1/7] branch: add --forked filter for --list mode Harald Nordgren via GitGitGadget
2026-08-05 14:24   ` [PATCH v25 2/7] branch: convert delete_branches() to a flags argument Harald Nordgren via GitGitGadget
2026-08-05 14:24   ` [PATCH v25 3/7] branch: let delete_branches skip unmerged branches on bulk refusal Harald Nordgren via GitGitGadget
2026-08-05 14:24   ` [PATCH v25 4/7] branch: prepare delete_branches for a bulk caller Harald Nordgren via GitGitGadget
2026-08-05 14:24   ` [PATCH v25 5/7] branch: add --delete-merged <pattern> Harald Nordgren via GitGitGadget
2026-08-05 14:24   ` [PATCH v25 6/7] branch: add branch.<name>.deleteMerged opt-out Harald Nordgren via GitGitGadget
2026-08-05 14:24   ` [PATCH v25 7/7] branch: add --dry-run for --delete-merged Harald Nordgren via GitGitGadget

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=0ea7bbec-3381-4bc6-99a9-2c3b5d1bfebd@gmail.com \
    --to=phillip.wood123@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    --cc=haraldnordgren@gmail.com \
    --cc=j6t@kdbg.org \
    --cc=kristofferhaugsbakk@fastmail.com \
    --cc=phillip.wood@dunelm.org.uk \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.