git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Karthik Nayak <karthik.188@gmail.com>
To: Christian Couder <christian.couder@gmail.com>
Cc: chris.torek@gmail.com, git@vger.kernel.org, gitster@pobox.com, ps@pks.im
Subject: Re: [PATCH v2 1/7] refs: accept symref values in `ref_transaction[_add]_update`
Date: Fri, 19 Apr 2024 03:28:51 -0700	[thread overview]
Message-ID: <CAOLa=ZQfk+uMNjiSSB9o2SiFT+Cjm10W2bbCBy2nCQ-zwc5nHQ@mail.gmail.com> (raw)
In-Reply-To: <CAP8UFD2s5GZBbZ_oKk6hFCQ+jtjRjx1QgRvLz+1hrBfkWKVCbw@mail.gmail.com>

[-- Attachment #1: Type: text/plain, Size: 5373 bytes --]

Christian Couder <christian.couder@gmail.com> writes:

> On Fri, Apr 12, 2024 at 11:59 AM Karthik Nayak <karthik.188@gmail.com> wrote:
>>
>> From: Karthik Nayak <karthik.188@gmail.com>
>>
>> The `ref_transaction[_add]_update` functions obtain ref information and
>> flags to create a `ref_update` and add it to the transaction at hand.
>>
>> To extend symref support in transactions, we need to also accept the
>> old and new ref values and process it. In this commit, let's add the
>> required paramaters to the function and modify all call sites.
>
> s/paramaters/parameters/
>
>> The two paramaters added are `new_ref` and `old_ref`. The `new_ref` is
>
> s/paramaters/parameters/
>

Thanks, will fix both.

>> used to denote what the reference should point to when the transaction
>> is applied. Some functions allow this parameter to be NULL, meaning that
>> the reference is not changed, or `""`, meaning that the reference should
>> be deleted.
>
>> The `old_ref` denotes the value of that the reference must have before
>
> s/the value of that the reference/the value the reference/
>

Will change.

>> the update. Some functions allow this parameter to be NULL, meaning that
>> the old value of the reference is not checked, or `""`, meaning that the
>> reference must not exist before the update. A copy of this value is made
>> in the transaction.
>>
>> The handling logic of these parameters will be added in consequent
>> commits as we implement symref-{create, update, delete, verify}.
>>
>> Signed-off-by: Karthik Nayak <karthik.188@gmail.com>
>
>> diff --git a/refs.h b/refs.h
>> index d278775e08..645fe9fdb8 100644
>> --- a/refs.h
>> +++ b/refs.h
>
> There is the following big comment in this file:
>
> /*
>  * Reference transaction updates
>  *
>  * The following four functions add a reference check or update to a
>  * ref_transaction.  They have some common similar parameters:
>  *
>  *     transaction -- a pointer to an open ref_transaction, obtained
>  *         from ref_transaction_begin().
>  *
>  *     refname -- the name of the reference to be affected.
>  *
>  *     new_oid -- the object ID that should be set to be the new value
>  *         of the reference. Some functions allow this parameter to be
>  *         NULL, meaning that the reference is not changed, or
>  *         null_oid, meaning that the reference should be deleted. A
>  *         copy of this value is made in the transaction.
>  *
>  *     old_oid -- the object ID that the reference must have before
>  *         the update. Some functions allow this parameter to be NULL,
>  *         meaning that the old value of the reference is not checked,
>  *         or null_oid, meaning that the reference must not exist
>  *         before the update. A copy of this value is made in the
>  *         transaction.
>  *
>  *     flags -- flags affecting the update, passed to
>  *         update_ref_lock(). Possible flags: REF_NO_DEREF,
>  *         REF_FORCE_CREATE_REFLOG. See those constants for more
>  *         information.
>  *
>  *     msg -- a message describing the change (for the reflog).
>  *
>  *     err -- a strbuf for receiving a description of any error that
>  *         might have occurred.
>  *
>  * The functions make internal copies of refname and msg, so the
>  * caller retains ownership of these parameters.
>  *
>  * The functions return 0 on success and non-zero on failure. A
>  * failure means that the transaction as a whole has failed and needs
>  * to be rolled back.
>  */
>
> I would expect the patch to update this comment.
>

Since this patch doesn't use this value, I think its best to modify
this in each patch as we start using it, I'll do that.

>> @@ -722,6 +728,7 @@ int ref_transaction_update(struct ref_transaction *transaction,
>>                            const char *refname,
>>                            const struct object_id *new_oid,
>>                            const struct object_id *old_oid,
>> +                          const char *new_ref, const char *old_ref,
>>                            unsigned int flags, const char *msg,
>>                            struct strbuf *err);
>
> The patch might also want to update the comment just above the
> ref_transaction_update() declaration as it is changing what the
> function can (or will be able to) do.
>

Agreed, same as above, will modify in each patch. Also will add a
comment in the commit.

>> diff --git a/refs/refs-internal.h b/refs/refs-internal.h
>> index 56641aa57a..4c5fe02687 100644
>> --- a/refs/refs-internal.h
>> +++ b/refs/refs-internal.h
>> @@ -124,6 +124,19 @@ struct ref_update {
>>          */
>>         struct object_id old_oid;
>>
>> +       /*
>> +        * If (flags & REF_SYMREF_UPDATE), set the reference to this
>> +        * value (or delete it, if `new_ref` is an empty string).
>
> What if this value is NULL?
>
>> +        */
>> +       const char *new_ref;
>> +
>> +       /*
>> +        * If (type & REF_SYMREF_UPDATE), check that the reference
>> +        * previously had this value (or didn't previously exist,
>> +        * if `old_ref` is an empty string).
>
> What if this value is NULL?
>

Well we ignore NULL values, but I see that the documentation is lacking,
will update.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 690 bytes --]

  reply	other threads:[~2024-04-19 10:29 UTC|newest]

Thread overview: 194+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-30 22:46 [PATCH 0/8] update-ref: add support for update-symref option Karthik Nayak
2024-03-30 22:46 ` [PATCH 1/8] files-backend: extract out `create_symref_lock` Karthik Nayak
2024-04-02 12:20   ` Patrick Steinhardt
2024-04-03 14:52     ` Karthik Nayak
2024-03-30 22:46 ` [PATCH 2/8] reftable-backend: extract out `write_symref_with_log` Karthik Nayak
2024-04-02 12:20   ` Patrick Steinhardt
2024-03-30 22:46 ` [PATCH 3/8] reftable-backend: move `write_symref_with_log` up Karthik Nayak
2024-03-30 22:46 ` [PATCH 4/8] refs: accept symref in `ref_transaction_add_update` Karthik Nayak
2024-03-30 22:46 ` [PATCH 5/8] refs/files-backend: add support for symref updates Karthik Nayak
2024-04-02 12:20   ` Patrick Steinhardt
2024-03-30 22:46 ` [PATCH 6/8] refs/reftable-backend: " Karthik Nayak
2024-04-02 12:20   ` Patrick Steinhardt
2024-03-30 22:46 ` [PATCH 7/8] refs: add 'update-symref' command to 'update-ref' Karthik Nayak
2024-03-31 22:08   ` Junio C Hamano
2024-03-31 22:27     ` Chris Torek
2024-03-31 23:14       ` Junio C Hamano
2024-04-01  1:31         ` Junio C Hamano
2024-04-02 12:20           ` Patrick Steinhardt
2024-04-02 16:40             ` Junio C Hamano
2024-04-09 11:55               ` Patrick Steinhardt
2024-04-09 16:15                 ` Karthik Nayak
2024-04-10  4:20                   ` Patrick Steinhardt
2024-04-10 16:06                     ` Junio C Hamano
2024-04-10 17:31                       ` Patrick Steinhardt
2024-04-01 10:38       ` Karthik Nayak
2024-04-01 11:48     ` Karthik Nayak
2024-04-01 16:17       ` Junio C Hamano
2024-04-01 20:40         ` Junio C Hamano
2024-04-01 22:37         ` Karthik Nayak
2024-03-30 22:46 ` [PATCH 8/8] refs: support symrefs in 'reference-transaction' hook Karthik Nayak
2024-04-02 12:20   ` Patrick Steinhardt
2024-04-12  9:59 ` [PATCH v2 0/7] update-ref: add symref oriented commands Karthik Nayak
2024-04-12  9:59   ` [PATCH v2 1/7] refs: accept symref values in `ref_transaction[_add]_update` Karthik Nayak
2024-04-18 14:25     ` Christian Couder
2024-04-19 10:28       ` Karthik Nayak [this message]
2024-04-18 15:08     ` Phillip Wood
2024-04-19  9:40       ` Patrick Steinhardt
2024-04-19 15:47       ` Karthik Nayak
2024-05-04 15:15         ` phillip.wood123
2024-04-19  9:40     ` Patrick Steinhardt
2024-04-19 18:09       ` Karthik Nayak
2024-04-23  6:31         ` Patrick Steinhardt
2024-04-23 10:48           ` Karthik Nayak
2024-04-12  9:59   ` [PATCH v2 2/7] update-ref: add support for symref-verify Karthik Nayak
2024-04-18 14:26     ` Christian Couder
2024-04-19 21:21       ` Karthik Nayak
2024-04-19  9:40     ` Patrick Steinhardt
2024-04-19 21:53       ` Karthik Nayak
2024-04-12  9:59   ` [PATCH v2 3/7] update-ref: add support for symref-delete Karthik Nayak
2024-04-18 14:52     ` Christian Couder
2024-04-21 10:43       ` Karthik Nayak
2024-04-19  9:40     ` Patrick Steinhardt
2024-04-21 10:45       ` Karthik Nayak
2024-04-12  9:59   ` [PATCH v2 4/7] files-backend: extract out `create_symref_lock` Karthik Nayak
2024-04-12  9:59   ` [PATCH v2 5/7] update-ref: add support for symref-create Karthik Nayak
2024-04-19  9:40     ` Patrick Steinhardt
2024-04-19 15:48       ` Junio C Hamano
2024-04-21 12:50       ` Karthik Nayak
2024-04-21 15:57         ` Karthik Nayak
2024-04-23  6:39         ` Patrick Steinhardt
2024-04-23 10:52           ` Karthik Nayak
2024-04-12  9:59   ` [PATCH v2 6/7] update-ref: add support for symref-update Karthik Nayak
2024-04-19  9:40     ` Patrick Steinhardt
2024-04-21 19:00       ` Karthik Nayak
2024-04-23  6:49         ` Patrick Steinhardt
2024-04-23 11:30           ` Karthik Nayak
2024-04-12  9:59   ` [PATCH v2 7/7] refs: support symrefs in 'reference-transaction' hook Karthik Nayak
2024-04-12 18:01   ` [PATCH v2 0/7] update-ref: add symref oriented commands Junio C Hamano
2024-04-12 18:49     ` Karthik Nayak
2024-04-18 15:05   ` Christian Couder
2024-04-21 19:06     ` Karthik Nayak
2024-04-20  6:16   ` Patrick Steinhardt
2024-04-21 19:11     ` Karthik Nayak
2024-04-23 21:28   ` [PATCH v3 0/8] refs: add symref support to 'git-update-ref' Karthik Nayak
2024-04-23 21:28     ` [PATCH v3 1/8] refs: accept symref values in `ref_transaction[_add]_update` Karthik Nayak
2024-04-23 21:28     ` [PATCH v3 2/8] update-ref: support parsing ref targets in `parse_next_oid` Karthik Nayak
2024-04-23 21:28     ` [PATCH v3 3/8] files-backend: extract out `create_symref_lock` Karthik Nayak
2024-04-23 21:28     ` [PATCH v3 4/8] update-ref: support symrefs in the verify command Karthik Nayak
2024-04-23 21:28     ` [PATCH v3 5/8] update-ref: support symrefs in the delete command Karthik Nayak
2024-04-23 21:28     ` [PATCH v3 6/8] update-ref: support symrefs in the create command Karthik Nayak
2024-04-23 21:28     ` [PATCH v3 7/8] update-ref: support symrefs in the update command Karthik Nayak
2024-04-23 21:28     ` [PATCH v3 8/8] ref: support symrefs in 'reference-transaction' hook Karthik Nayak
2024-04-23 22:03     ` [PATCH v3 0/8] refs: add symref support to 'git-update-ref' Jeff King
2024-04-24  1:17       ` Junio C Hamano
2024-04-24 16:25       ` Karthik Nayak
2024-04-25  6:40         ` Patrick Steinhardt
2024-04-25 21:12           ` Karthik Nayak
2024-04-25 18:01         ` Junio C Hamano
2024-04-25 21:14           ` Karthik Nayak
2024-04-25 21:55             ` Junio C Hamano
2024-04-26 12:48               ` Karthik Nayak
2024-04-26 20:41         ` Jeff King
2024-04-25 17:09     ` Junio C Hamano
2024-04-25 21:07       ` Karthik Nayak
2024-04-26 15:24     ` [PATCH v4 0/7] add symref-* commands to 'git-update-ref --stdin' Karthik Nayak
2024-04-26 15:24       ` [PATCH v4 1/7] refs: accept symref values in `ref_transaction[_add]_update` Karthik Nayak
2024-04-26 19:31         ` Junio C Hamano
2024-04-26 21:15           ` Jeff King
2024-04-29  7:02             ` Patrick Steinhardt
2024-04-29  7:55               ` Jeff King
2024-04-29  9:29                 ` phillip.wood123
2024-04-29  9:32             ` phillip.wood123
2024-04-29 16:18               ` Junio C Hamano
2024-04-30 10:33                 ` Jeff King
2024-04-30 10:30               ` Jeff King
2024-04-28 19:36           ` Karthik Nayak
2024-04-29 13:38         ` Phillip Wood
2024-04-29 14:01           ` Karthik Nayak
2024-04-26 15:24       ` [PATCH v4 2/7] files-backend: extract out `create_symref_lock` Karthik Nayak
2024-04-26 21:39         ` Junio C Hamano
2024-04-28 19:57           ` Karthik Nayak
2024-04-26 15:24       ` [PATCH v4 3/7] update-ref: add support for 'symref-verify' command Karthik Nayak
2024-04-26 22:51         ` Junio C Hamano
2024-04-28 22:28           ` Karthik Nayak
2024-04-26 15:24       ` [PATCH v4 4/7] update-ref: add support for 'symref-delete' command Karthik Nayak
2024-04-26 15:24       ` [PATCH v4 5/7] update-ref: add support for 'symref-create' command Karthik Nayak
2024-04-26 15:24       ` [PATCH v4 6/7] update-ref: add support for 'symref-update' command Karthik Nayak
2024-04-26 15:24       ` [PATCH v4 7/7] ref: support symrefs in 'reference-transaction' hook Karthik Nayak
2024-04-30 10:14       ` [PATCH v4 0/7] add symref-* commands to 'git-update-ref --stdin' Karthik Nayak
2024-05-01 20:22       ` [PATCH v5 0/7] refs: add support for transactional symref updates Karthik Nayak
2024-05-01 20:22         ` [PATCH v5 1/7] refs: accept symref values in `ref_transaction_update()` Karthik Nayak
2024-05-01 20:22         ` [PATCH v5 2/7] files-backend: extract out `create_symref_lock()` Karthik Nayak
2024-05-01 22:06           ` Junio C Hamano
2024-05-02  7:47             ` Patrick Steinhardt
2024-05-02 11:05               ` Karthik Nayak
2024-05-02 16:49               ` Junio C Hamano
2024-05-01 20:22         ` [PATCH v5 3/7] refs: support symrefs in 'reference-transaction' hook Karthik Nayak
2024-05-01 23:05           ` Junio C Hamano
2024-05-02  5:32             ` Karthik Nayak
2024-05-01 20:22         ` [PATCH v5 4/7] refs: add support for transactional symref updates Karthik Nayak
2024-05-01 23:52           ` Junio C Hamano
2024-05-02  5:50             ` Karthik Nayak
2024-05-02  7:47               ` Patrick Steinhardt
2024-05-02 11:10                 ` Karthik Nayak
2024-05-02 16:51                 ` Junio C Hamano
2024-05-02 16:00               ` Junio C Hamano
2024-05-02 17:53           ` Junio C Hamano
2024-05-01 20:22         ` [PATCH v5 5/7] refs: use transaction in `refs_create_symref()` Karthik Nayak
2024-05-02  7:47           ` Patrick Steinhardt
2024-05-01 20:22         ` [PATCH v5 6/7] refs: rename `refs_create_symref()` to `refs_update_symref()` Karthik Nayak
2024-05-02  7:47           ` Patrick Steinhardt
2024-05-02 11:34             ` Karthik Nayak
2024-05-01 20:22         ` [PATCH v5 7/7] refs: remove `create_symref` and associated dead code Karthik Nayak
2024-05-02  7:47           ` Patrick Steinhardt
2024-05-02 16:53             ` Junio C Hamano
2024-05-02  0:20         ` [PATCH v5 0/7] refs: add support for transactional symref updates Junio C Hamano
2024-05-02  5:53           ` Karthik Nayak
2024-05-03 12:41         ` [PATCH v6 " Karthik Nayak
2024-05-03 12:41           ` [PATCH v6 1/7] refs: accept symref values in `ref_transaction_update()` Karthik Nayak
2024-05-04 15:18             ` Phillip Wood
2024-05-05 15:10               ` Karthik Nayak
2024-05-05 15:19                 ` phillip.wood123
2024-05-03 12:41           ` [PATCH v6 2/7] files-backend: extract out `create_symref_lock()` Karthik Nayak
2024-05-03 12:41           ` [PATCH v6 3/7] refs: support symrefs in 'reference-transaction' hook Karthik Nayak
2024-05-03 12:41           ` [PATCH v6 4/7] refs: add support for transactional symref updates Karthik Nayak
2024-05-05 14:09             ` Phillip Wood
2024-05-05 16:09               ` Karthik Nayak
2024-05-06  9:35                 ` Phillip Wood
2024-05-06 11:19                   ` Karthik Nayak
2024-05-06 13:19                     ` Phillip Wood
2024-05-06  9:54                 ` Phillip Wood
2024-05-06 11:22                   ` Karthik Nayak
2024-05-06 13:17                     ` Phillip Wood
2024-05-03 12:41           ` [PATCH v6 5/7] refs: use transaction in `refs_create_symref()` Karthik Nayak
2024-05-03 12:41           ` [PATCH v6 6/7] refs: rename `refs_create_symref()` to `refs_update_symref()` Karthik Nayak
2024-05-03 12:41           ` [PATCH v6 7/7] refs: remove `create_symref` and associated dead code Karthik Nayak
2024-05-03 23:09             ` Junio C Hamano
2024-05-04  9:30               ` Karthik Nayak
2024-05-03 16:45           ` [PATCH v6 0/7] refs: add support for transactional symref updates Junio C Hamano
2024-05-06  7:36           ` Patrick Steinhardt
2024-05-07  6:00           ` [PATCH v7 0/8] " Karthik Nayak
2024-05-07  6:00             ` [PATCH v7 1/8] refs: accept symref values in `ref_transaction_update()` Karthik Nayak
2024-05-07  6:00             ` [PATCH v7 2/8] files-backend: extract out `create_symref_lock()` Karthik Nayak
2024-05-07  6:00             ` [PATCH v7 3/8] refs: support symrefs in 'reference-transaction' hook Karthik Nayak
2024-05-07  6:00             ` [PATCH v7 4/8] refs: move `original_update_refname` to 'refs.c' Karthik Nayak
2024-05-07  6:00             ` [PATCH v7 5/8] refs: add support for transactional symref updates Karthik Nayak
2024-05-07  6:00             ` [PATCH v7 6/8] refs: use transaction in `refs_create_symref()` Karthik Nayak
2024-05-07  6:00             ` [PATCH v7 7/8] refs: rename `refs_create_symref()` to `refs_update_symref()` Karthik Nayak
2024-05-07  6:00             ` [PATCH v7 8/8] refs: remove `create_symref` and associated dead code Karthik Nayak
2024-05-07  6:25             ` [PATCH v7 0/8] refs: add support for transactional symref updates Junio C Hamano
2024-05-07  6:31               ` Junio C Hamano
2024-05-07 12:58             ` [PATCH v8 " Karthik Nayak
2024-05-07 12:58               ` [PATCH v8 1/8] refs: accept symref values in `ref_transaction_update()` Karthik Nayak
2024-05-07 12:58               ` [PATCH v8 2/8] files-backend: extract out `create_symref_lock()` Karthik Nayak
2024-05-07 12:58               ` [PATCH v8 3/8] refs: support symrefs in 'reference-transaction' hook Karthik Nayak
2024-05-07 12:58               ` [PATCH v8 4/8] refs: move `original_update_refname` to 'refs.c' Karthik Nayak
2024-05-07 12:58               ` [PATCH v8 5/8] refs: add support for transactional symref updates Karthik Nayak
2024-05-07 12:58               ` [PATCH v8 6/8] refs: use transaction in `refs_create_symref()` Karthik Nayak
2024-05-07 12:58               ` [PATCH v8 7/8] refs: rename `refs_create_symref()` to `refs_update_symref()` Karthik Nayak
2024-05-07 12:58               ` [PATCH v8 8/8] refs: remove `create_symref` and associated dead code Karthik Nayak
2024-05-07 15:50               ` [PATCH v8 0/8] refs: add support for transactional symref updates phillip.wood123
2024-05-07 16:32               ` Junio C Hamano
2024-05-12 17:17                 ` Karthik Nayak
2024-05-13 17:15                   ` Junio C Hamano

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAOLa=ZQfk+uMNjiSSB9o2SiFT+Cjm10W2bbCBy2nCQ-zwc5nHQ@mail.gmail.com' \
    --to=karthik.188@gmail.com \
    --cc=chris.torek@gmail.com \
    --cc=christian.couder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).