Git development
 help / color / mirror / Atom feed
From: Phillip Wood <phillip.wood123@gmail.com>
To: Patrick Steinhardt <ps@pks.im>, git@vger.kernel.org
Cc: Pablo Sabater <pabloosabaterr@gmail.com>,
	Junio C Hamano <gitster@pobox.com>,
	Kristoffer Haugsbakk <kristofferhaugsbakk@fastmail.com>,
	Phillip Wood <phillip.wood@dunelm.org.uk>
Subject: Re: [PATCH v4 04/10] reset: modernize flags passed to `reset_working_tree()`
Date: Wed, 10 Jun 2026 14:10:53 +0100	[thread overview]
Message-ID: <f886affe-66fe-4589-babd-937106b9c3fb@gmail.com> (raw)
In-Reply-To: <20260610-b4-pks-history-drop-v4-4-70d5f0ae8c25@pks.im>

Hi Patrick

On 10/06/2026 09:52, Patrick Steinhardt wrote:
> The flags passed to `reset_working_tree()` are declared as defines. This
> has fallen a bit out of practice nowadays, where we instead prefer to
> use enums. Furthermore, the prefix of those flags does not match the
> function name anymore after the rename in the preceding commit.
> 
> Adapt the code to follow modern best practices and adapt the flag names.

This looks good

Thanks

Phillip

> 
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
>   builtin/rebase.c | 15 ++++++++-------
>   reset.c          | 12 ++++++------
>   reset.h          | 31 +++++++++++++++++++------------
>   sequencer.c      |  9 ++++++---
>   4 files changed, 39 insertions(+), 28 deletions(-)
> 
> diff --git a/builtin/rebase.c b/builtin/rebase.c
> index 22fbba3c62..06dcbaf5e8 100644
> --- a/builtin/rebase.c
> +++ b/builtin/rebase.c
> @@ -607,7 +607,7 @@ static int move_to_original_branch(struct rebase_options *opts)
>   	strbuf_addf(&head_reflog, "%s (finish): returning to %s",
>   		    opts->reflog_action, opts->head_name);
>   	ropts.branch = opts->head_name;
> -	ropts.flags = RESET_HEAD_REFS_ONLY;
> +	ropts.flags = RESET_WORKING_TREE_REFS_ONLY;
>   	ropts.branch_msg = branch_reflog.buf;
>   	ropts.head_msg = head_reflog.buf;
>   	ret = reset_working_tree(the_repository, &ropts);
> @@ -862,9 +862,9 @@ static int checkout_up_to_date(struct rebase_options *options)
>   		    options->reflog_action, options->switch_to);
>   	ropts.oid = &options->orig_head->object.oid;
>   	ropts.branch = options->head_name;
> -	ropts.flags = RESET_HEAD_RUN_POST_CHECKOUT_HOOK;
> +	ropts.flags = RESET_WORKING_TREE_RUN_POST_CHECKOUT_HOOK;
>   	if (!ropts.branch)
> -		ropts.flags |=  RESET_HEAD_DETACH;
> +		ropts.flags |=  RESET_WORKING_TREE_DETACH;
>   	ropts.head_msg = buf.buf;
>   	if (reset_working_tree(the_repository, &ropts) < 0)
>   		ret = error(_("could not switch to %s"), options->switch_to);
> @@ -1384,7 +1384,7 @@ int cmd_rebase(int argc,
>   
>   		rerere_clear(the_repository, &merge_rr);
>   		string_list_clear(&merge_rr, 1);
> -		ropts.flags = RESET_HEAD_HARD;
> +		ropts.flags = RESET_WORKING_TREE_HARD;
>   		if (reset_working_tree(the_repository, &ropts) < 0)
>   			die(_("could not discard worktree changes"));
>   		remove_branch_state(the_repository, 0);
> @@ -1409,7 +1409,7 @@ int cmd_rebase(int argc,
>   		ropts.oid = &options.orig_head->object.oid;
>   		ropts.head_msg = head_msg.buf;
>   		ropts.branch = options.head_name;
> -		ropts.flags = RESET_HEAD_HARD;
> +		ropts.flags = RESET_WORKING_TREE_HARD;
>   		if (reset_working_tree(the_repository, &ropts) < 0)
>   			die(_("could not move back to %s"),
>   			    oid_to_hex(&options.orig_head->object.oid));
> @@ -1876,8 +1876,9 @@ int cmd_rebase(int argc,
>   		    options.reflog_action, options.onto_name);
>   	ropts.oid = &options.onto->object.oid;
>   	ropts.orig_head = &options.orig_head->object.oid;
> -	ropts.flags = RESET_HEAD_DETACH | RESET_ORIG_HEAD |
> -			RESET_HEAD_RUN_POST_CHECKOUT_HOOK;
> +	ropts.flags = RESET_WORKING_TREE_DETACH |
> +		      RESET_WORKING_TREE_UPDATE_ORIG_HEAD |
> +		      RESET_WORKING_TREE_RUN_POST_CHECKOUT_HOOK;
>   	ropts.head_msg = msg.buf;
>   	ropts.default_reflog_action = options.reflog_action;
>   	if (reset_working_tree(the_repository, &ropts)) {
> diff --git a/reset.c b/reset.c
> index 799596398b..4ca7f23a25 100644
> --- a/reset.c
> +++ b/reset.c
> @@ -16,9 +16,9 @@ static int update_refs(struct repository *repo,
>   		       const struct object_id *oid,
>   		       const struct object_id *head)
>   {
> -	unsigned detach_head = opts->flags & RESET_HEAD_DETACH;
> -	unsigned run_hook = opts->flags & RESET_HEAD_RUN_POST_CHECKOUT_HOOK;
> -	unsigned update_orig_head = opts->flags & RESET_ORIG_HEAD;
> +	unsigned detach_head = opts->flags & RESET_WORKING_TREE_DETACH;
> +	unsigned run_hook = opts->flags & RESET_WORKING_TREE_RUN_POST_CHECKOUT_HOOK;
> +	unsigned update_orig_head = opts->flags & RESET_WORKING_TREE_UPDATE_ORIG_HEAD;
>   	const struct object_id *orig_head = opts->orig_head;
>   	const char *switch_to_branch = opts->branch;
>   	const char *reflog_branch = opts->branch_msg;
> @@ -90,9 +90,9 @@ int reset_working_tree(struct repository *r,
>   {
>   	const struct object_id *oid = opts->oid;
>   	const char *switch_to_branch = opts->branch;
> -	unsigned reset_hard = opts->flags & RESET_HEAD_HARD;
> -	unsigned refs_only = opts->flags & RESET_HEAD_REFS_ONLY;
> -	unsigned update_orig_head = opts->flags & RESET_ORIG_HEAD;
> +	unsigned reset_hard = opts->flags & RESET_WORKING_TREE_HARD;
> +	unsigned refs_only = opts->flags & RESET_WORKING_TREE_REFS_ONLY;
> +	unsigned update_orig_head = opts->flags & RESET_WORKING_TREE_UPDATE_ORIG_HEAD;
>   	struct object_id *head = NULL, head_oid;
>   	struct tree_desc desc[2] = { { NULL }, { NULL } };
>   	struct lock_file lock = LOCK_INIT;
> diff --git a/reset.h b/reset.h
> index f130152014..2e5826de99 100644
> --- a/reset.h
> +++ b/reset.h
> @@ -6,16 +6,22 @@
>   
>   #define GIT_REFLOG_ACTION_ENVIRONMENT "GIT_REFLOG_ACTION"
>   
> -/* Request a detached checkout */
> -#define RESET_HEAD_DETACH (1<<0)
> -/* Request a reset rather than a checkout */
> -#define RESET_HEAD_HARD (1<<1)
> -/* Run the post-checkout hook */
> -#define RESET_HEAD_RUN_POST_CHECKOUT_HOOK (1<<2)
> -/* Only update refs, do not touch the worktree */
> -#define RESET_HEAD_REFS_ONLY (1<<3)
> -/* Update ORIG_HEAD as well as HEAD */
> -#define RESET_ORIG_HEAD (1<<4)
> +enum reset_working_tree_flags {
> +	/* Request a detached checkout */
> +	RESET_WORKING_TREE_DETACH = (1 << 0),
> +
> +	/* Request a reset rather than a checkout */
> +	RESET_WORKING_TREE_HARD = (1 << 1),
> +
> +	/* Run the post-checkout hook */
> +	RESET_WORKING_TREE_RUN_POST_CHECKOUT_HOOK = (1 << 2),
> +
> +	/* Only update refs, do not touch the worktree */
> +	RESET_WORKING_TREE_REFS_ONLY = (1 << 3),
> +
> +	/* Update ORIG_HEAD as well as HEAD */
> +	RESET_WORKING_TREE_UPDATE_ORIG_HEAD = (1 << 4),
> +};
>   
>   struct reset_working_tree_options {
>   	/*
> @@ -33,7 +39,7 @@ struct reset_working_tree_options {
>   	/*
>   	 * Flags defined above.
>   	 */
> -	unsigned flags;
> +	enum reset_working_tree_flags flags;
>   	/*
>   	 * Optional reflog message for branch, defaults to head_msg.
>   	 */
> @@ -45,7 +51,8 @@ struct reset_working_tree_options {
>   	const char *head_msg;
>   	/*
>   	 * Optional reflog message for ORIG_HEAD, if this omitted and flags
> -	 * contains RESET_ORIG_HEAD then default_reflog_action must be given.
> +	 * contains RESET_WORKING_TREE_UPDATE_ORIG_HEAD then
> +	 * default_reflog_action must be given.
>   	 */
>   	const char *orig_head_msg;
>   	/*
> diff --git a/sequencer.c b/sequencer.c
> index d73ecf0384..4efe831178 100644
> --- a/sequencer.c
> +++ b/sequencer.c
> @@ -4677,7 +4677,9 @@ static void create_autostash_internal(struct repository *r,
>   	if (has_unstaged_changes(r, 1) ||
>   	    has_uncommitted_changes(r, 1)) {
>   		struct child_process stash = CHILD_PROCESS_INIT;
> -		struct reset_working_tree_options ropts = { .flags = RESET_HEAD_HARD };
> +		struct reset_working_tree_options ropts = {
> +			.flags = RESET_WORKING_TREE_HARD,
> +		};
>   		struct object_id oid;
>   
>   		strvec_pushl(&stash.args,
> @@ -4870,8 +4872,9 @@ static int checkout_onto(struct repository *r, struct replay_opts *opts,
>   	struct reset_working_tree_options ropts = {
>   		.oid = onto,
>   		.orig_head = orig_head,
> -		.flags = RESET_HEAD_DETACH | RESET_ORIG_HEAD |
> -				RESET_HEAD_RUN_POST_CHECKOUT_HOOK,
> +		.flags = RESET_WORKING_TREE_DETACH |
> +			 RESET_WORKING_TREE_UPDATE_ORIG_HEAD |
> +			 RESET_WORKING_TREE_RUN_POST_CHECKOUT_HOOK,
>   		.head_msg = reflog_message(opts, "start", "checkout %s",
>   					   onto_name),
>   		.default_reflog_action = sequencer_reflog_action(opts)
> 


  reply	other threads:[~2026-06-10 13:10 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-01 15:36 [PATCH 0/2] builtin/history: introduce "drop" subcommand Patrick Steinhardt
2026-06-01 15:36 ` [PATCH 1/2] builtin/history: split handling of ref updates into two phases Patrick Steinhardt
2026-06-01 15:36 ` [PATCH 2/2] builtin/history: implement "drop" subcommand Patrick Steinhardt
2026-06-01 23:43   ` Junio C Hamano
2026-06-03 10:06     ` Patrick Steinhardt
2026-06-02  7:31   ` Pablo Sabater
2026-06-03 10:06     ` Patrick Steinhardt
2026-06-03 16:13 ` [PATCH v2 0/9] builtin/history: introduce " Patrick Steinhardt
2026-06-03 16:14   ` [PATCH v2 1/9] read-cache: split out function to drop unmerged entries to stage 0 Patrick Steinhardt
2026-06-03 16:14   ` [PATCH v2 2/9] reset: drop `USE_THE_REPOSITORY_VARIABLE` Patrick Steinhardt
2026-06-03 16:14   ` [PATCH v2 3/9] reset: modernize flags passed to `reset_head()` Patrick Steinhardt
2026-06-03 18:01     ` Kristoffer Haugsbakk
2026-06-05 15:08     ` Phillip Wood
2026-06-08  9:14       ` Patrick Steinhardt
2026-06-03 16:14   ` [PATCH v2 4/9] reset: introduce dry-run mode Patrick Steinhardt
2026-06-03 18:18     ` Kristoffer Haugsbakk
2026-06-03 23:49     ` Junio C Hamano
2026-06-03 16:14   ` [PATCH v2 5/9] reset: introduce ability to skip reference updates Patrick Steinhardt
2026-06-03 23:51     ` Junio C Hamano
2026-06-04  9:01       ` Patrick Steinhardt
2026-06-05 15:12     ` Phillip Wood
2026-06-08  9:14       ` Patrick Steinhardt
2026-06-08  9:18         ` Patrick Steinhardt
2026-06-09 10:03           ` Phillip Wood
2026-06-10  7:31             ` Patrick Steinhardt
2026-06-03 16:14   ` [PATCH v2 6/9] reset: allow the caller to specify the current HEAD object Patrick Steinhardt
2026-06-03 16:14   ` [PATCH v2 7/9] reset: stop assuming that the caller passes in a clean index Patrick Steinhardt
2026-06-03 16:14   ` [PATCH v2 8/9] builtin/history: split handling of ref updates into two phases Patrick Steinhardt
2026-06-03 16:14   ` [PATCH v2 9/9] builtin/history: implement "drop" subcommand Patrick Steinhardt
2026-06-03 19:04     ` Kristoffer Haugsbakk
2026-06-04  9:02       ` Patrick Steinhardt
2026-06-03 23:58     ` Junio C Hamano
2026-06-04  9:02       ` Patrick Steinhardt
2026-06-08 10:23 ` [PATCH v3 0/9] builtin/history: introduce " Patrick Steinhardt
2026-06-08 10:23   ` [PATCH v3 1/9] read-cache: split out function to drop unmerged entries to stage 0 Patrick Steinhardt
2026-06-08 10:23   ` [PATCH v3 2/9] reset: drop `USE_THE_REPOSITORY_VARIABLE` Patrick Steinhardt
2026-06-08 10:23   ` [PATCH v3 3/9] reset: modernize flags passed to `reset_head()` Patrick Steinhardt
2026-06-08 10:23   ` [PATCH v3 4/9] reset: introduce dry-run mode Patrick Steinhardt
2026-06-08 10:23   ` [PATCH v3 5/9] reset: introduce ability to skip reference updates Patrick Steinhardt
2026-06-08 10:23   ` [PATCH v3 6/9] reset: allow the caller to specify the current HEAD object Patrick Steinhardt
2026-06-08 10:23   ` [PATCH v3 7/9] reset: stop assuming that the caller passes in a clean index Patrick Steinhardt
2026-06-08 10:23   ` [PATCH v3 8/9] builtin/history: split handling of ref updates into two phases Patrick Steinhardt
2026-06-08 10:23   ` [PATCH v3 9/9] builtin/history: implement "drop" subcommand Patrick Steinhardt
2026-06-10  8:52 ` [PATCH v4 00/10] builtin/history: introduce " Patrick Steinhardt
2026-06-10  8:52   ` [PATCH v4 01/10] read-cache: split out function to drop unmerged entries to stage 0 Patrick Steinhardt
2026-06-10  8:52   ` [PATCH v4 02/10] reset: drop `USE_THE_REPOSITORY_VARIABLE` Patrick Steinhardt
2026-06-10  8:52   ` [PATCH v4 03/10] reset: rename `reset_head()` Patrick Steinhardt
2026-06-10 13:10     ` Phillip Wood
2026-06-10  8:52   ` [PATCH v4 04/10] reset: modernize flags passed to `reset_working_tree()` Patrick Steinhardt
2026-06-10 13:10     ` Phillip Wood [this message]
2026-06-10  8:52   ` [PATCH v4 05/10] reset: introduce dry-run mode Patrick Steinhardt
2026-06-10  8:52   ` [PATCH v4 06/10] reset: introduce ability to skip updating HEAD Patrick Steinhardt
2026-06-10 13:11     ` Phillip Wood
2026-06-10  8:52   ` [PATCH v4 07/10] reset: allow the caller to specify the current HEAD object Patrick Steinhardt
2026-06-10  8:52   ` [PATCH v4 08/10] reset: stop assuming that the caller passes in a clean index Patrick Steinhardt
2026-06-10  8:52   ` [PATCH v4 09/10] builtin/history: split handling of ref updates into two phases Patrick Steinhardt
2026-06-10 16:25     ` Junio C Hamano
2026-06-10  8:52   ` [PATCH v4 10/10] builtin/history: implement "drop" subcommand Patrick Steinhardt

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=f886affe-66fe-4589-babd-937106b9c3fb@gmail.com \
    --to=phillip.wood123@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=kristofferhaugsbakk@fastmail.com \
    --cc=pabloosabaterr@gmail.com \
    --cc=phillip.wood@dunelm.org.uk \
    --cc=ps@pks.im \
    /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