From: Junio C Hamano <gitster@pobox.com>
To: Ramsay Jones <ramsay@ramsayjones.plus.com>
Cc: GIT Mailing-list <git@vger.kernel.org>,
Patrick Steinhardt <ps@pks.im>,
Derrick Stolee <stolee@gmail.com>
Subject: Re: [RFC PATCH 4/4] doc: commit-graph.adoc: fix up some formatting
Date: Fri, 26 Sep 2025 08:52:22 -0700 [thread overview]
Message-ID: <xmqqfrc9citl.fsf@gitster.g> (raw)
In-Reply-To: <875fb7a0-6dd9-412b-a34a-21758c339871@ramsayjones.plus.com> (Ramsay Jones's message of "Fri, 26 Sep 2025 01:28:05 +0100")
Ramsay Jones <ramsay@ramsayjones.plus.com> writes:
> Signed-off-by: Ramsay Jones <ramsay@ramsayjones.plus.com>
> ---
> Documentation/technical/commit-graph.adoc | 34 +++++++++++------------
> 1 file changed, 16 insertions(+), 18 deletions(-)
Are these the issues?
- Use ={n} prefixes instead of underlines for the section headers.
- Use ={n} not #{n} prefixes for the section headers.
- A blank line between a leading text before a numbered list.
- Mark-up of displayed materials.
The majority of our pages (I think all of the manual pages) use
underlines. Are we getting warnings on them that we'd need to
change? I personally find the underlined style easier to read
in the source text (even though I understand why people would
prefer to use the ={n} prefix style---having to adjust the length
of the underline is a bit more work when retitling).
The remainder of this message does not have any comment from me,
but is left as a reference for others.
> diff --git a/Documentation/technical/commit-graph.adoc b/Documentation/technical/commit-graph.adoc
> index 2c26e95e51..15396f58ab 100644
> --- a/Documentation/technical/commit-graph.adoc
> +++ b/Documentation/technical/commit-graph.adoc
> @@ -1,5 +1,4 @@
> -Git Commit-Graph Design Notes
> -=============================
> += Git Commit-Graph Design Notes
>
> Git walks the commit graph for many reasons, including:
>
> @@ -39,6 +38,7 @@ A consumer may load the following info for a commit from the graph:
> Values 1-4 satisfy the requirements of parse_commit_gently().
>
> There are two definitions of generation number:
> +
> 1. Corrected committer dates (generation number v2)
> 2. Topological levels (generation number v1)
>
> @@ -122,8 +122,7 @@ can be stored in the commit-graph file using the 30 bits available
> to topological levels. This presents another case where a commit can
> have generation number equal to that of a parent.
>
> -Design Details
> ---------------
> +== Design Details
>
> - The commit-graph file is stored in a file named 'commit-graph' in the
> .git/objects/info directory. This could be stored in the info directory
> @@ -149,8 +148,7 @@ Design Details
> helpful for these clones, anyway. The commit-graph will not be read or
> written when shallow commits are present.
>
> -Commit-Graphs Chains
> ---------------------
> +== Commit-Graphs Chains
>
> Typically, repos grow with near-constant velocity (commits per day). Over time,
> the number of commits added by a fetch operation is much smaller than the
> @@ -158,7 +156,7 @@ number of commits in the full history. By creating a "chain" of commit-graphs,
> we enable fast writes of new commit data without rewriting the entire commit
> history -- at least, most of the time.
>
> -## File Layout
> +=== File Layout
>
> A commit-graph chain uses multiple files, and we use a fixed naming convention
> to organize these files. Each commit-graph file has a name
> @@ -170,11 +168,11 @@ hashes for the files in order from "lowest" to "highest".
>
> For example, if the `commit-graph-chain` file contains the lines
>
> -```
> +----
> {hash0}
> {hash1}
> {hash2}
> -```
> +----
>
> then the commit-graph chain looks like the following diagram:
>
> @@ -213,7 +211,7 @@ specifying the hashes of all files in the lower layers. In the above example,
> `graph-{hash1}.graph` contains `{hash0}` while `graph-{hash2}.graph` contains
> `{hash0}` and `{hash1}`.
>
> -## Merging commit-graph files
> +=== Merging commit-graph files
>
> If we only added a new commit-graph file on every write, we would run into a
> linear search problem through many commit-graph files. Instead, we use a merge
> @@ -257,14 +255,14 @@ lock-file. When the file is flushed, we rename it to `graph-{hash3}`
> according to the computed `{hash3}`. Finally, we write the new chain data to
> `commit-graph-chain.lock`:
>
> -```
> +----
> {hash3}
> {hash0}
> -```
> +----
>
> We then close the lock-file.
>
> -## Merge Strategy
> +=== Merge Strategy
>
> When writing a set of commits that do not exist in the commit-graph stack of
> height N, we default to creating a new file at level N + 1. We then decide to
> @@ -289,7 +287,7 @@ The merge strategy values (2 for the size multiple, 64,000 for the maximum
> number of commits) could be extracted into config settings for full
> flexibility.
>
> -## Handling Mixed Generation Number Chains
> +=== Handling Mixed Generation Number Chains
>
> With the introduction of generation number v2 and generation data chunk, the
> following scenario is possible:
> @@ -318,7 +316,7 @@ have corrected commit dates when written by compatible versions of Git. Thus,
> rewriting split commit-graph as a single file (`--split=replace`) creates a
> single layer with corrected commit dates.
>
> -## Deleting graph-{hash} files
> +=== Deleting graph-\{hash\} files
>
> After a new tip file is written, some `graph-{hash}` files may no longer
> be part of a chain. It is important to remove these files from disk, eventually.
> @@ -333,7 +331,7 @@ files whose modified times are older than a given expiry window. This window
> defaults to zero, but can be changed using command-line arguments or a config
> setting.
>
> -## Chains across multiple object directories
> +=== Chains across multiple object directories
>
> In a repo with alternates, we look for the `commit-graph-chain` file starting
> in the local object directory and then in each alternate. The first file that
> @@ -369,8 +367,8 @@ their custom environment:
> access to the new chain until its chain is updated to reference those files.
> (This may change in the future [5].)
>
> -Related Links
> --------------
> +== Related Links
> +
> [0] https://bugs.chromium.org/p/git/issues/detail?id=8
> Chromium work item for: Serialized Commit Graph
next prev parent reply other threads:[~2025-09-26 15:52 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-26 0:28 [RFC PATCH 4/4] doc: commit-graph.adoc: fix up some formatting Ramsay Jones
2025-09-26 15:52 ` Junio C Hamano [this message]
2025-09-26 18:11 ` Ramsay Jones
2025-09-26 21:21 ` Junio C Hamano
2025-09-26 23:30 ` Ramsay Jones
2025-09-27 1:36 ` 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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqqfrc9citl.fsf@gitster.g \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=ps@pks.im \
--cc=ramsay@ramsayjones.plus.com \
--cc=stolee@gmail.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.