From: Toon Claes <toon@iotcl.com>
To: Karthik Nayak <karthik.188@gmail.com>, git@vger.kernel.org
Cc: Karthik Nayak <karthik.188@gmail.com>,
ps@pks.im, Christian Couder <chriscool@tuxfamily.org>
Subject: Re: [PATCH v4 0/8] refs: add reflog support to `git refs migrate`
Date: Thu, 19 Dec 2024 20:32:20 +0100 [thread overview]
Message-ID: <874j2zh3jv.fsf@iotcl.com> (raw)
In-Reply-To: <20241216-320-git-refs-migrate-reflogs-v4-0-d7cd3f197453@gmail.com>
Karthik Nayak <karthik.188@gmail.com> writes:
> The `git refs migrate` command was introduced in
> 25a0023f28 (builtin/refs: new command to migrate ref storage formats,
> 2024-06-06) to support migrating from one reference backend to another.
>
> One limitation of the feature was that it didn't support migrating
> repositories which contained reflogs. This isn't a requirement on the
> server side as repositories are stored as bare repositories (which do
> not contain any reflogs). Clients however generally use reflogs and
> until now couldn't use the `git refs migrate` command to migrate their
> repositories to the new reftable format.
>
> One of the issues for adding reflog support is that the ref transactions
> don't support reflogs additions:
> 1. While there is REF_LOG_ONLY flag, there is no function to utilize
> the flag and add reflogs.
> 2. reference backends generally sort the updates by the refname. This
> wouldn't work for reflogs which need to ensure that they maintain the
> order of creation.
> 3. In the files backend, reflog entries are added by obtaining locks
> on the refs themselves. This means each update in the transaction, will
> obtain a ref_lock. This paradigm fails to accompany the fact that there
> could be multiple reflog updates for a refname in a single transaction.
> 4. The backends check for duplicate entries, which doesn't make sense
> in the context of adding multiple reflogs for a given refname.
>
> We overcome these issue we make the following changes:
> - Update the ref_update structure to also include the committer
> information. Using this, we can add a new function which only adds
> reflog updates to the transaction.
Out of interest, I see various changes happen around committer info. But
why is the committer info more relevant for reflog updates, in contrast
to normal ref updates?
--
Toon
next prev parent reply other threads:[~2024-12-19 19:32 UTC|newest]
Thread overview: 93+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-09 11:07 [PATCH 0/7] refs: add reflog support to `git refs migrate` Karthik Nayak
2024-12-09 11:07 ` [PATCH 1/7] refs: include committer info in `ref_update` struct Karthik Nayak
2024-12-10 16:51 ` Christian Couder
2024-12-11 10:13 ` karthik nayak
2024-12-09 11:07 ` [PATCH 2/7] refs: add `index` field to `struct ref_udpate` Karthik Nayak
2024-12-09 11:07 ` [PATCH 3/7] refs/files: add count field to ref_lock Karthik Nayak
2024-12-10 17:22 ` Christian Couder
2024-12-11 10:18 ` karthik nayak
2024-12-11 9:05 ` Christian Couder
2024-12-11 10:26 ` karthik nayak
2024-12-09 11:07 ` [PATCH 4/7] refs: extract out refname verification in transactions Karthik Nayak
2024-12-11 9:26 ` Christian Couder
2024-12-11 10:31 ` karthik nayak
2024-12-11 14:26 ` Patrick Steinhardt
2024-12-09 11:07 ` [PATCH 5/7] refs: introduce the `ref_transaction_update_reflog` function Karthik Nayak
2024-12-11 10:10 ` Christian Couder
2024-12-11 18:06 ` karthik nayak
2024-12-11 14:26 ` Patrick Steinhardt
2024-12-11 18:09 ` karthik nayak
2024-12-09 11:07 ` [PATCH 6/7] refs: allow multiple reflog entries for the same refname Karthik Nayak
2024-12-11 10:44 ` Christian Couder
2024-12-12 14:52 ` karthik nayak
2024-12-11 14:26 ` Patrick Steinhardt
2024-12-12 14:47 ` karthik nayak
2024-12-09 11:07 ` [PATCH 7/7] refs: add support for migrating reflogs Karthik Nayak
2024-12-11 14:26 ` Patrick Steinhardt
2024-12-12 14:04 ` karthik nayak
2024-12-10 12:13 ` [PATCH 0/7] refs: add reflog support to `git refs migrate` Junio C Hamano
2024-12-10 17:42 ` karthik nayak
2024-12-10 18:03 ` karthik nayak
2024-12-13 10:36 ` [PATCH v2 0/8] " Karthik Nayak
2024-12-13 10:36 ` [PATCH v2 1/8] refs: include committer info in `ref_update` struct Karthik Nayak
2024-12-13 10:36 ` [PATCH v2 2/8] refs: add `index` field to `struct ref_udpate` Karthik Nayak
2024-12-13 10:36 ` [PATCH v2 3/8] refs/files: add count field to ref_lock Karthik Nayak
2024-12-13 10:36 ` [PATCH v2 4/8] refs: extract out refname verification in transactions Karthik Nayak
2024-12-13 10:36 ` [PATCH v2 5/8] refs: add `committer_info` to `ref_transaction_add_update()` Karthik Nayak
2024-12-13 12:24 ` Patrick Steinhardt
2024-12-13 19:43 ` karthik nayak
2024-12-19 19:31 ` Toon Claes
2024-12-20 11:31 ` karthik nayak
2024-12-13 10:36 ` [PATCH v2 6/8] refs: introduce the `ref_transaction_update_reflog` function Karthik Nayak
2024-12-13 11:44 ` Christian Couder
2024-12-13 19:49 ` karthik nayak
2024-12-13 12:24 ` Patrick Steinhardt
2024-12-13 10:36 ` [PATCH v2 7/8] refs: allow multiple reflog entries for the same refname Karthik Nayak
2024-12-13 12:24 ` Patrick Steinhardt
2024-12-13 20:02 ` karthik nayak
2024-12-13 10:36 ` [PATCH v2 8/8] refs: add support for migrating reflogs Karthik Nayak
2024-12-13 12:24 ` Patrick Steinhardt
2024-12-15 11:09 ` karthik nayak
2024-12-15 16:25 ` [PATCH v3 0/8] refs: add reflog support to `git refs migrate` Karthik Nayak
2024-12-15 16:25 ` [PATCH v3 1/8] refs: include committer info in `ref_update` struct Karthik Nayak
2024-12-15 16:25 ` [PATCH v3 2/8] refs: add `index` field to `struct ref_udpate` Karthik Nayak
2024-12-15 16:25 ` [PATCH v3 3/8] refs/files: add count field to ref_lock Karthik Nayak
2024-12-15 16:25 ` [PATCH v3 4/8] refs: extract out refname verification in transactions Karthik Nayak
2024-12-15 16:25 ` [PATCH v3 5/8] refs: add `committer_info` to `ref_transaction_add_update()` Karthik Nayak
2024-12-15 16:25 ` [PATCH v3 6/8] refs: introduce the `ref_transaction_update_reflog` function Karthik Nayak
2024-12-15 16:25 ` [PATCH v3 7/8] refs: allow multiple reflog entries for the same refname Karthik Nayak
2024-12-15 16:25 ` [PATCH v3 8/8] refs: add support for migrating reflogs Karthik Nayak
2024-12-16 7:25 ` Patrick Steinhardt
2024-12-16 15:50 ` Junio C Hamano
2024-12-16 15:59 ` karthik nayak
2024-12-15 23:54 ` [PATCH v3 0/8] refs: add reflog support to `git refs migrate` Junio C Hamano
2024-12-16 14:33 ` karthik nayak
2024-12-16 16:32 ` Junio C Hamano
2024-12-16 16:44 ` [PATCH v4 " Karthik Nayak
2024-12-16 16:44 ` [PATCH v4 1/8] refs: include committer info in `ref_update` struct Karthik Nayak
2024-12-16 16:44 ` [PATCH v4 2/8] refs: add `index` field to `struct ref_udpate` Karthik Nayak
2024-12-19 19:28 ` Toon Claes
2024-12-20 10:09 ` karthik nayak
2024-12-16 16:44 ` [PATCH v4 3/8] refs/files: add count field to ref_lock Karthik Nayak
2024-12-16 16:44 ` [PATCH v4 4/8] refs: extract out refname verification in transactions Karthik Nayak
2024-12-19 19:29 ` Toon Claes
2024-12-20 10:30 ` karthik nayak
2024-12-16 16:44 ` [PATCH v4 5/8] refs: add `committer_info` to `ref_transaction_add_update()` Karthik Nayak
2024-12-19 19:30 ` Toon Claes
2024-12-20 10:44 ` karthik nayak
2024-12-16 16:44 ` [PATCH v4 6/8] refs: introduce the `ref_transaction_update_reflog` function Karthik Nayak
2024-12-19 19:32 ` Toon Claes
2024-12-19 20:25 ` Junio C Hamano
2024-12-20 10:55 ` karthik nayak
2024-12-20 12:58 ` [PATCH] refs: mark invalid refname message for translation Karthik Nayak
2024-12-20 15:53 ` Junio C Hamano
2024-12-24 10:34 ` Toon Claes
2024-12-16 16:44 ` [PATCH v4 7/8] refs: allow multiple reflog entries for the same refname Karthik Nayak
2024-12-19 19:33 ` Toon Claes
2024-12-20 11:15 ` karthik nayak
2024-12-16 16:44 ` [PATCH v4 8/8] refs: add support for migrating reflogs Karthik Nayak
2024-12-17 6:59 ` [PATCH v4 0/8] refs: add reflog support to `git refs migrate` Patrick Steinhardt
2024-12-17 9:35 ` karthik nayak
2024-12-17 21:28 ` Junio C Hamano
2024-12-19 19:32 ` Toon Claes [this message]
2024-12-20 11:23 ` karthik nayak
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=874j2zh3jv.fsf@iotcl.com \
--to=toon@iotcl.com \
--cc=chriscool@tuxfamily.org \
--cc=git@vger.kernel.org \
--cc=karthik.188@gmail.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.
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.