All of lore.kernel.org
 help / color / mirror / Atom feed
From: Lorenzo Pegorari <lorenzo.pegorari2002@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, Derrick Stolee <stolee@gmail.com>,
	Patrick Steinhardt <ps@pks.im>, Taylor Blau <me@ttaylorr.com>,
	Elijah Newren <newren@gmail.com>,
	Eric Sunshine <sunshine@sunshineco.com>
Subject: Re: [GSoC PATCH v3 2/5] pack-write: add helper to fill promisor file after repack
Date: Wed, 8 Apr 2026 00:07:02 +0200	[thread overview]
Message-ID: <adWABoOqHNkTTTyR@lorenzo-VM> (raw)
In-Reply-To: <xmqq8qazai3b.fsf@gitster.g>

On Mon, Apr 06, 2026 at 02:34:32PM -0700, Junio C Hamano wrote:
> LorenzoPegorari <lorenzo.pegorari2002@gmail.com> writes:
> 
> > A ".promisor" file may contain ref names (and their associated hashes)
> > that were fetched at the time the corresponding packfile was downloaded.
> > This information is used for debugging reasons. This information is
> > stored as lines structured like this: "<oid> <ref>".
> >
> > Create a `copy_promisor_content()` helper function that allows this
> > debugging info to not be lost after a `repack`, by coping it inside a new
> > ".promisor" file.
> 
> "coping" -> "copying"

Ack.

> > The function logic is the following:
> >  * Take all ".promisor" files contained inside the given `repo`.
> >  * Ignore those whose name is contained inside the given `strset
> >    not_repacked_names`, which basically acts as a "promisor ignorelist"
> >    (intended to be used for packfiles that have not been repacked).
> >  * Read each line of the remaining ".promisor" files, which can be:
> >     * "<oid> <ref>" if the ".promisor" file was never repacked. If so,
> >       add the time at which the ".promisor" file was last modified <time>
> >       to the line to create the string: "<oid> <ref> <time>".
> >     * "<oid> <ref> <time>" if the ".promisor" file was repacked. If so,
> >       don't modify it.
> >  * Ignore the line if its <oid> is not present inside the
> >    "<packtmp>-<dest_hex>.idx" file.
> >  * If the destination file "<packtmp>-<dest_hex>.promisor" does not
> >    already contain the line, append it to the file.
> >
> > The function assumes that the contents of all ".promisor" files are
> > correctly formed.
> >
> > The time of last data modification is used in place of the time of file
> > creation, because the former is much easier to obtain than the latter
> > one.
> 
> The time of file creation is not recorded anywhere if you are
> dealing with the usual UNIX filesystems (ctime is not creation
> time), so it is not the issue of "easier to obtain".

That's what I found out during my researches, but I wasn't sure. Thanks
for confirming it.

> The reason why this design chooses to add time is because in a
> never-repacked .promisor file, the modification time of the file
> itself can be used when you compare the entries in it with entries
> in another .promisor file that did get repacked.  By having
> timestamp, the debugger can tell at which time the refs at the
> remote repository pointed at what object---the same ref may appear
> twice in the same .promisor file and having timestamps would help
> understanding what happened over time.

Exactly. I'll improve the commit message to better explain the utility
of these timestamps.

Thanks,
Lorenzo


  reply	other threads:[~2026-04-07 22:07 UTC|newest]

Thread overview: 78+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-21 21:28 [GSoC PATCH 0/3] preserve promisor files content after repack LorenzoPegorari
2026-03-21 21:28 ` [GSoC PATCH 1/3] pack-write: add explanation to promisor file content LorenzoPegorari
2026-03-21 21:28 ` [GSoC PATCH 2/3] pack-write: add helper to fill promisor file after repack LorenzoPegorari
2026-03-22  2:04   ` Eric Sunshine
2026-03-22 18:50     ` Lorenzo Pegorari
2026-03-21 21:29 ` [GSoC PATCH 3/3] repack-promisor: preserve content of promisor files " LorenzoPegorari
2026-03-22 19:16 ` [GSoC PATCH v2 0/4] preserve promisor files content " LorenzoPegorari
2026-03-22 19:16   ` [GSoC PATCH v2 1/4] pack-write: add explanation to promisor file content LorenzoPegorari
2026-03-23 21:07     ` Junio C Hamano
2026-03-25 21:33       ` Lorenzo Pegorari
2026-03-22 19:18   ` [GSoC PATCH v2 2/4] pack-write: add helper to fill promisor file after repack LorenzoPegorari
2026-03-23 20:27     ` Eric Sunshine
2026-03-26 16:15       ` Lorenzo Pegorari
2026-03-23 21:30     ` Junio C Hamano
2026-03-26  2:01       ` Lorenzo Pegorari
2026-03-22 19:18   ` [GSoC PATCH v2 3/4] repack-promisor: preserve content of promisor files " LorenzoPegorari
2026-03-23 21:48     ` Junio C Hamano
2026-03-26  2:12       ` Lorenzo Pegorari
2026-03-22 19:18   ` [GSoC PATCH v2 4/4] t7700: test for promisor file content " LorenzoPegorari
2026-04-06  0:23   ` [GSoC PATCH v3 0/5] preserve promisor files " LorenzoPegorari
2026-04-06  0:24     ` [GSoC PATCH v3 1/5] pack-write: add explanation to promisor file content LorenzoPegorari
2026-04-06  0:24     ` [GSoC PATCH v3 2/5] pack-write: add helper to fill promisor file after repack LorenzoPegorari
2026-04-06 17:22       ` Tian Yuchen
2026-04-06 18:40         ` Lorenzo Pegorari
2026-04-06 21:17           ` Junio C Hamano
2026-04-07 21:46             ` Lorenzo Pegorari
2026-04-07  2:01           ` Junio C Hamano
2026-04-07 21:52             ` Lorenzo Pegorari
2026-04-07 22:03               ` Junio C Hamano
2026-04-06 21:34       ` Junio C Hamano
2026-04-07 22:07         ` Lorenzo Pegorari [this message]
2026-04-06  0:25     ` [GSoC PATCH v3 3/5] repack-promisor: preserve content of promisor files " LorenzoPegorari
2026-04-06  0:25     ` [GSoC PATCH v3 4/5] t7700: test for promisor file content " LorenzoPegorari
2026-04-06 22:05       ` Junio C Hamano
2026-04-07 23:28         ` Lorenzo Pegorari
2026-04-07 18:10       ` Junio C Hamano
2026-04-07 23:11         ` Lorenzo Pegorari
2026-04-08  0:38           ` Lorenzo Pegorari
2026-04-06  0:25     ` [GSoC PATCH v3 5/5] t7703: test for promisor file content after geometric repack LorenzoPegorari
2026-04-10 15:01     ` [GSoC PATCH v4 0/5] preserve promisor files content after repack LorenzoPegorari
2026-04-10 15:02       ` [GSoC PATCH v4 1/5] pack-write: add explanation to promisor file content LorenzoPegorari
2026-04-10 15:02       ` [GSoC PATCH v4 2/5] pack-write: add helper to fill promisor file after repack LorenzoPegorari
2026-04-10 16:01         ` Junio C Hamano
2026-04-10 16:34           ` Lorenzo Pegorari
2026-04-10 18:10           ` [PATCH] CodingGuidelines: st_mtimespec vs st_mtim vs st_mtime Junio C Hamano
2026-04-16 23:46             ` Elijah Newren
2026-04-17  4:25               ` Junio C Hamano
2026-04-10 15:03       ` [GSoC PATCH v4 3/5] repack-promisor: preserve content of promisor files after repack LorenzoPegorari
2026-04-10 15:04       ` [GSoC PATCH v4 4/5] t7700: test for promisor file content " LorenzoPegorari
2026-04-10 15:04       ` [GSoC PATCH v4 5/5] t7703: test for promisor file content after geometric repack LorenzoPegorari
2026-04-10 15:47       ` [GSoC PATCH v4 0/5] preserve promisor files content after repack Junio C Hamano
2026-04-10 16:44         ` Lorenzo Pegorari
2026-04-10 22:54       ` [GSoC PATCH v5 0/6] " LorenzoPegorari
2026-04-10 22:54         ` [GSoC PATCH v5 1/6] pack-write: add explanation to promisor file content LorenzoPegorari
2026-04-10 22:55         ` [GSoC PATCH v5 2/6] repack-promisor add helper to fill promisor file after repack LorenzoPegorari
2026-04-10 23:30           ` Junio C Hamano
2026-04-11  1:59             ` Lorenzo Pegorari
2026-04-12  6:27           ` Junio C Hamano
2026-04-17  0:30             ` Lorenzo Pegorari
2026-04-10 22:55         ` [GSoC PATCH v5 3/6] repack-promisor: preserve content of promisor files " LorenzoPegorari
2026-04-11 18:25           ` Tian Yuchen
2026-04-17  0:34             ` Lorenzo Pegorari
2026-04-10 22:55         ` [GSoC PATCH v5 4/6] t7700: test for promisor file content " LorenzoPegorari
2026-04-10 22:56         ` [GSoC PATCH v5 5/6] t7703: test for promisor file content after geometric repack LorenzoPegorari
2026-04-11 18:49           ` Tian Yuchen
2026-04-17  0:46             ` Lorenzo Pegorari
2026-04-10 22:56         ` [GSoC PATCH v5 6/6] repack-promisor: add missing headers LorenzoPegorari
2026-04-18 14:16         ` [GSoC PATCH v6 0/6] preserve promisor files content after repack LorenzoPegorari
2026-04-18 14:16           ` [GSoC PATCH v6 1/6] pack-write: add explanation to promisor file content LorenzoPegorari
2026-04-18 14:17           ` [GSoC PATCH v6 2/6] repack-promisor add helper to fill promisor file after repack LorenzoPegorari
2026-04-18 14:17           ` [GSoC PATCH v6 3/6] repack-promisor: preserve content of promisor files " LorenzoPegorari
2026-04-18 14:17           ` [GSoC PATCH v6 4/6] t7700: test for promisor file content " LorenzoPegorari
2026-04-18 14:17           ` [GSoC PATCH v6 5/6] t7703: test for promisor file content after geometric repack LorenzoPegorari
2026-04-18 14:17           ` [GSoC PATCH v6 6/6] repack-promisor: add missing headers LorenzoPegorari
2026-05-12  6:49           ` [GSoC PATCH v6 0/6] preserve promisor files content after repack Junio C Hamano
2026-04-10 23:05       ` [GSoC PATCH v4 0/5] " Junio C Hamano
2026-04-11  2:02         ` Junio C Hamano
2026-04-11 14:05           ` Lorenzo Pegorari

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=adWABoOqHNkTTTyR@lorenzo-VM \
    --to=lorenzo.pegorari2002@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=me@ttaylorr.com \
    --cc=newren@gmail.com \
    --cc=ps@pks.im \
    --cc=stolee@gmail.com \
    --cc=sunshine@sunshineco.com \
    /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.