Re: [PATCH 3/8] refs: export `ref_transaction_update_reflog()`
- From
Justin Tobler <jltobler@gmail.com>
- Date
- Jul 23, 2025, 18:25 UTC
- Message-ID
- <2xwgx55dxhltq3ohktarsfe5wsw4f4er2h5hylz5qov3esntt6@fexfi4mioaqi>
- In-Reply-To
- <20250722-pks-reflog-append-v1-3-183e5949de16@pks.im>
On 25/07/22 01:20PM, Patrick Steinhardt wrote:
> In a subsequent commit we'll add another user that wants to write reflog > entries. This requires them to call `ref_transaction_update_reflog()`, > but that functino is local to "refs.c".
s/functino/function/
Show 59 quoted lines
> Export the function to prepare for the change. While at it, drop the
> `flags` field, as all callers are for now expected to use the same flags
> anyway.
>
> Signed-off-by: Patrick Steinhardt <ps@pks.im>
> ---
> refs.c | 29 +++++++++++------------------
> refs.h | 15 +++++++++++++++
> 2 files changed, 26 insertions(+), 18 deletions(-)
>
> diff --git a/refs.c b/refs.c
> index 73913b6627b..188989e4113 100644
> --- a/refs.c
> +++ b/refs.c
> @@ -1362,27 +1362,21 @@ int ref_transaction_update(struct ref_transaction *transaction,
> return 0;
> }
>
> -/*
> - * Similar to`ref_transaction_update`, but this function is only for adding
> - * a reflog update. Supports providing custom committer information. The index
> - * field can be utiltized to order updates as desired. When not used, the
> - * updates default to being ordered by refname.
> - */
> -static int ref_transaction_update_reflog(struct ref_transaction *transaction,
> - const char *refname,
> - const struct object_id *new_oid,
> - const struct object_id *old_oid,
> - const char *committer_info,
> - unsigned int flags,
> - const char *msg,
> - uint64_t index,
> - struct strbuf *err)
> +int ref_transaction_update_reflog(struct ref_transaction *transaction,
> + const char *refname,
> + const struct object_id *new_oid,
> + const struct object_id *old_oid,
> + const char *committer_info,
> + const char *msg,
> + uint64_t index,
> + struct strbuf *err)
> {
> struct ref_update *update;
> + unsigned int flags;
>
> assert(err);
>
> - flags |= REF_LOG_ONLY | REF_FORCE_CREATE_REFLOG | REF_NO_DEREF;
> + flags = REF_HAVE_OLD | REF_HAVE_NEW | REF_LOG_ONLY | REF_FORCE_CREATE_REFLOG | REF_NO_DEREF;
>
> if (!transaction_refname_valid(refname, new_oid, flags, err))
> return -1;
> @@ -3010,8 +3004,7 @@ static int migrate_one_reflog_entry(struct object_id *old_oid,
>
> ret = ref_transaction_update_reflog(data->transaction, data->refname,
> new_oid, old_oid, data->sb->buf,
> - REF_HAVE_NEW | REF_HAVE_OLD, msg,
> - data->index++, data->errbuf);
> + msg, data->index++, data->errbuf);Right now this is only the single caller for `ref_transaction_update_reflog()`. Since it is intented for all callers to use the same set of flags, removing the field makes sense.
Show 34 quoted lines
> return ret; > } > > diff --git a/refs.h b/refs.h > index efa182c6a14..0faf3bc0422 100644 > --- a/refs.h > +++ b/refs.h > @@ -794,6 +794,21 @@ int ref_transaction_update(struct ref_transaction *transaction, > unsigned int flags, const char *msg, > struct strbuf *err); > > +/* > + * Similar to`ref_transaction_update`, but this function is only for adding > + * a reflog update. Supports providing custom committer information. The index > + * field can be utiltized to order updates as desired. When not used, the > + * updates default to being ordered by refname. > + */ > +int ref_transaction_update_reflog(struct ref_transaction *transaction, > + const char *refname, > + const struct object_id *new_oid, > + const struct object_id *old_oid, > + const char *committer_info, > + const char *msg, > + uint64_t index, > + struct strbuf *err); > + > /* > * Add a reference creation to transaction. new_oid is the value that > * the reference should have after the update; it must not be > > -- > 2.50.1.465.gcb3da1c9e6.dirty > >