git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH v3 11/11] doc: add corrected commit date info

From
Abhishek Kumar <abhishekkumar8222@gmail.com>
Date
Aug 27, 2020, 06:39 UTC
Message-ID
<20200827063951.GA16268@Abhishek-Arch>
In-Reply-To
<85y2m6fhkm.fsf@gmail.com>
On Sun, Aug 23, 2020 at 12:20:57AM +0200, Jakub Narębski wrote:
Show 44 quoted lines
> Hello,
> 
> "Abhishek Kumar via GitGitGadget" <gitgitgadget@gmail.com> writes:
> 
> > From: Abhishek Kumar <abhishekkumar8222@gmail.com>
> >
> > With generation data chunk and corrected commit dates implemented, let's
> > update the technical documentation for commit-graph.
> >
> > Signed-off-by: Abhishek Kumar <abhishekkumar8222@gmail.com>
> 
> All right.
> 
> > ---
> >  .../technical/commit-graph-format.txt         | 12 ++---
> >  Documentation/technical/commit-graph.txt      | 45 ++++++++++++-------
> >  2 files changed, 36 insertions(+), 21 deletions(-)
> >
> > diff --git a/Documentation/technical/commit-graph-format.txt b/Documentation/technical/commit-graph-format.txt
> > index 440541045d..71c43884ec 100644
> > --- a/Documentation/technical/commit-graph-format.txt
> > +++ b/Documentation/technical/commit-graph-format.txt
> > @@ -4,11 +4,7 @@ Git commit graph format
> >  The Git commit graph stores a list of commit OIDs and some associated
> >  metadata, including:
> >
> > -- The generation number of the commit. Commits with no parents have
> > -  generation number 1; commits with parents have generation number
> > -  one more than the maximum generation number of its parents. We
> > -  reserve zero as special, and can be used to mark a generation
> > -  number invalid or as "not computed".
> > +- The generation number of the commit.
> 
> All right, that was duplicated information.  Now that we need to talk
> about two of them, it would not make sense to duplicate that.
> 
> >
> >  - The root tree OID.
> >
> > @@ -88,6 +84,12 @@ CHUNK DATA:
> 
> Shouldn't we also replace 'generation number' occurences in description
> of the Commit Data (CDAT) chunk with either 'topological level' or
> 'generation number v1'?
Yes, we should.
Show 52 quoted lines
> 
> >        2 bits of the lowest byte, storing the 33rd and 34th bit of the
> >        commit time.
> >
> > +  Generation Data (ID: {'G', 'D', 'A', 'T' }) (N * 4 bytes) [Optional]
> 
> It is not exactly 'optional', as it implies that we need to turn it on
> (or that we can turn it off).  It is more 'conditional', as it can be
> not present due to outside influences (mixed-version environment).
> 
> > +    * This list of 4-byte values store corrected commit date offsets for the
> > +      commits, arranged in the same order as commit data chunk.
> 
> I have just realized purely theoretical, but possible, problem with
> storing non-monotinic generation number related values like corrected
> commit date offset in constrained space.  There are problems with
> clamping them.
> 
> Say that somewhere in the ancestry chain there is a commit A with commit
> date far in the future by mistake, for example 2120-08-22; it is
> important for that date to be not able to be represented using uint32_t.
> Say that a later descendant commit B is malformed, and has committer
> date of 0, that is 1970-01-01. This means that the corrected commit date
> for B must be larger than 2120-08-22 - which for this commit means that
> corrected commit date offset do not fit in 32 bits, and must be clamped
> (replaced) with GENERATION_NUMBER_V2_OFFSET_MAX.
> 
> Say that we have commit C that is child of B, and it has correct commit
> date.  Because of mistake in commit A, it has corrected commit date of
> more than 2120-08-22 (corrected commit date degenerated into topological
> level plus constant).
> 
> Now C can reach B, and B can reach A.  However, if we recover corrected
> commit date of B out of its date=0 and offset=GENERATION_NUMBER_V2_OFFSET_MAX
> we get a number that is smaller than correct corrected commit date.  We
> will have
> 
>    gen(A) > date(B) + offset(B) < gen(C)
> 
> Which breaks reachability condition guarantee.
> 
> If instead we use GENERATION_NUMBER_V2_MAX for commits with clamped
> corrected commit date, that is offset=GENERATION_NUMBER_V2_OFFSET_MAX,
> we would get
> 
>   gen(A) < GENERATION_NUMBER_V2_MAX > gen(C)
> 
> And again reachability condition is broken.
> 
> This is a very contrived but possible example.  This shouldn't happen,
> but ufortunately it can happen.
> 
Yes, that's very unfortunate. 
Here's a much simpler example:

A commit P has an reasonable commit date (i.e. after release of Git to present) D and has a child commit C with committer date 0. Now, the corrected commiter date of C would D + 1 and the offset would be same too, as the committer date is zero. This overflows as reasonable dates are of the order 2 ^ 34.

Show 7 quoted lines
> 
> The question is how to deal with this issue.  Ignore it as unlikely?
> Switch to storing corrected commit date, which is monotonic, so if there
> is commit with GENERATION_NUMBER_V2_MAX, then subsequent descendant
> commits will also have GENERATION_NUMBER_V2_MAX -- and pay with up to 7%
> larger commit-graph file?
> 

To be honest, I would prefer storing corrected committer dates over storing offsets.

While it is 7% of the size of commit-graph file, it is also *only* around ~3.5 MB for a repository of the size of linux kernel (and IIRC correctly, the Windows repo has ~2M commits, it amounts to ~8 MB).

Minimizing space and memory requirements are a top priority, but shouldn't making sure our program is correct and efficient to be a greater priority?

I would love to hear your and Dr. Stolee's opinions on this.
Show 6 quoted lines
> > +    * This list can be later modified to store future generation number related
> > +      data.
> 
> How can it be later modified?  There is no header, no version number.
> How would we add another generation number data?
> 

We could modify the graph version in future. Here's how I think it would work:

Graph Version 1, No GDAT -> Topological level Graph Version 2, GDAT -> Corrected committer dates Graph Version 3, GDAT -> Generation number v3

and so on.

Of course, we do not have to update generation number definition for each graph version.

However, my statement could still be wrong for things that we do not foresee (similar to how we missed the hard die on different graph version), so I am removing the statement.

Show 22 quoted lines
> > +
> >    Extra Edge List (ID: {'E', 'D', 'G', 'E'}) [Optional]
> >        This list of 4-byte values store the second through nth parents for
> >        all octopus merges. The second parent value in the commit data stores
> > diff --git a/Documentation/technical/commit-graph.txt b/Documentation/technical/commit-graph.txt
> > index 808fa30b99..f27145328c 100644
> > --- a/Documentation/technical/commit-graph.txt
> > +++ b/Documentation/technical/commit-graph.txt
> > @@ -38,14 +38,27 @@ A consumer may load the following info for a commit from the graph:
> >
> >  Values 1-4 satisfy the requirements of parse_commit_gently().
> >
> > -Define the "generation number" of a commit recursively as follows:
> > +There are two definitions of generation number:
> > +1. Corrected committer dates
> > +2. Topological levels
> 
> Should we add versioning info, that is:
> 
>   +1. Corrected committer dates  (generation number v2)
>   +2. Topological levels  (generation number v1)
> 
Yes, added.
Show 18 quoted lines
> > +
> > +Define "corrected committer date" of a commit recursively as follows:
> > +
> > +  * A commit with no parents (a root commit) has corrected committer date
> > +    equal to its committer date.
> > +
> > +  * A commit with at least one parent has corrected committer date equal to
> > +    the maximum of its commiter date and one more than the largest corrected
> > +    committer date among its parents.
> > +
> > +Define the "topological level" of a commit recursively as follows:
> >
> >   * A commit with no parents (a root commit) has generation number one.
> 
> Shouldn't this be
> 
>     * A commit with no parents (a root commit) has topological level of one.
> 
Thanks, fixed!
Show 89 quoted lines
> >
> > - * A commit with at least one parent has generation number one more than
> > -   the largest generation number among its parents.
> > + * A commit with at least one parent has topological level one more than
> > +   the largest topological level among its parents.
> >
> > -Equivalently, the generation number of a commit A is one more than the
> > +Equivalently, the topological level of a commit A is one more than the
> >  length of a longest path from A to a root commit. The recursive definition
> >  is easier to use for computation and observing the following property:
> 
> We should probably explicitly state that the property state applies to
> both versions of generation number, not only to topological level.
> 
> >
> > @@ -67,17 +80,12 @@ numbers, the general heuristic is the following:
> >      If A and B are commits with commit time X and Y, respectively, and
> >      X < Y, then A _probably_ cannot reach B.
> >
> > -This heuristic is currently used whenever the computation is allowed to
> > -violate topological relationships due to clock skew (such as "git log"
> > -with default order), but is not used when the topological order is
> > -required (such as merge base calculations, "git log --graph").
> > -
> 
> To be overly pedantic, this heuristic is still used, but now in much
> more rare case.  In addition to what is stated above, at least one layer
> in the split commit-graph chain must have been generated by "Old" Git,
> for the date heuristic to be used.
> 
> But that might be unnecessary level of detail.
> 
> >  In practice, we expect some commits to be created recently and not stored
> >  in the commit graph. We can treat these commits as having "infinite"
> >  generation number and walk until reaching commits with known generation
> >  number.
> >
> > -We use the macro GENERATION_NUMBER_INFINITY = 0xFFFFFFFF to mark commits not
> > +We use the macro GENERATION_NUMBER_INFINITY to mark commits not
> 
> All right.
> 
> >  in the commit-graph file. If a commit-graph file was written by a version
> >  of Git that did not compute generation numbers, then those commits will
> >  have generation number represented by the macro GENERATION_NUMBER_ZERO = 0.
> > @@ -93,12 +101,11 @@ fully-computed generation numbers. Using strict inequality may result in
> >  walking a few extra commits, but the simplicity in dealing with commits
> >  with generation number *_INFINITY or *_ZERO is valuable.
> >
> > -We use the macro GENERATION_NUMBER_MAX = 0x3FFFFFFF to for commits whose
> > -generation numbers are computed to be at least this value. We limit at
> > -this value since it is the largest value that can be stored in the
> > -commit-graph file using the 30 bits available to generation numbers. This
> > -presents another case where a commit can have generation number equal to
> > -that of a parent.
> > +We use the macro GENERATION_NUMBER_MAX for commits whose generation numbers
> > +are computed to be at least this value. We limit at this value since it is
> > +the largest value that can be stored in the commit-graph file using the
> > +available to generation numbers. This presents another case where a
> > +commit can have generation number equal to that of a parent.
> 
> All right, though it could have been done without re-wrapping, so that
> only first line would be marked as changed.
> 
> As I wrote, there is theoretical problem with this for offsets.
> 
> >
> >  Design Details
> >  --------------
> > @@ -267,6 +274,12 @@ 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.
> >
> > +We also merge commit-graph chains when we try to write a commit graph with
> > +two different generation number definitions as they cannot be compared directly.
> > +We overwrite the existing chain and create a commit-graph with the newer or more
> > +efficient defintion. For example, overwriting topological levels commit graph
> > +chain to create a corrected commit dates commit graph chain.
> > +
> 
> This is more complicated than that.
> 
> I think we should explicitly state that Git ensures that in split
> commit-graph chain, if there are layers without the GDAT chunk (that
> force Git to use topological levels for generation numbers), then they
> are top layers.  So if there is commit-graph file created by "Old" Git,
> then when addig new layer it would also be GDAT-less.
> 
> Now how to write this...

Thinking about this, I feel creating a new section called "Handling Mixed Generation Number Chains" made more sense:

  ## Handling Mixed Generation Number Chains
  With the introduction of generation number v2 and generation data chunk,
  the following scenario is possible:
  1. "New" Git writes a commit-graph with a GDAT chunk.
  2. "Old" Git writes a split commit-graph on top without a GDAT chunk.
  The commits in the lower layer will be interpreted as having very large
  generation values (commit date plus offset) compared to the generation
  numbers in the top layer (toplogical level). This violates the
  expectation that the generation of a parent is strictly smaller than the
  generation of a child. In such cases, we revert to using topological
  levels for all layers to maintain backwards compatability.
  When writing a new layer in split commit-graph, we write a GDAT chunk
  only if the topmost layer has a GDAT chunk. This guarantees that if a
  lyer has GDAT chunk, all lower layers must have a GDAT chunk as well.
  Rewriting layers follows similar approach: if the topmost layer below
  set of layers being rewriteen (in the split commit-graph chain) exists,
  and it does not contain GDAT chunk, then the result of rewrite does not
  have GDAT chunks either.
Show 8 quoted lines
> 
> >  ## Deleting graph-{hash} files
> >
> >  After a new tip file is written, some `graph-{hash}` files may no longer
> 
> Best,
> -- 
> Jakub Narębski
Thanks
- Abhishek
Previous: Jakub NarębskiNext: Jakub Narębski
Message 61 of 211 in “[GSoC] Implement Corrected Commit Date”
  1. 0/6 [GSoC] Implement Corrected Commit DateAbhishek Kumar via GitGitGadget, Jul 28, 2020
  2. 1/6 commit-graph: fix regression when computing bloom filterAbhishek Kumar via GitGitGadget, Jul 28, 2020
  3. Taylor BlauJul 28, 2020
  4. Abhishek KumarJul 30, 2020
  5. Jakub NarębskiAug 4, 2020
  6. Taylor BlauAug 4, 2020
  7. Jakub NarębskiAug 4, 2020
  8. Jakub NarębskiAug 4, 2020
  9. 2/6 revision: parse parent in indegree_walk_step()Abhishek Kumar via GitGitGadget, Jul 28, 2020
  10. Derrick StoleeJul 28, 2020
  11. Taylor BlauJul 28, 2020
  12. Jakub NarębskiAug 5, 2020
  13. 3/6 commit-graph: consolidate fill_commit_graph_infoAbhishek Kumar via GitGitGadget, Jul 28, 2020
  14. Derrick StoleeJul 28, 2020
  15. René ScharfeJul 28, 2020
  16. Derrick StoleeJul 28, 2020
  17. Taylor BlauJul 28, 2020
  18. Abhishek KumarJul 30, 2020
  19. 4/6 commit-graph: consolidate compare_commits_by_genAbhishek Kumar via GitGitGadget, Jul 28, 2020
  20. Taylor BlauJul 28, 2020
  21. 5/6 commit-graph: implement generation data chunkAbhishek Kumar via GitGitGadget, Jul 28, 2020
  22. Taylor BlauJul 28, 2020
  23. Abhishek KumarJul 30, 2020
  24. 6/6 commit-graph: implement corrected commit date offsetAbhishek Kumar via GitGitGadget, Jul 28, 2020
  25. Derrick StoleeJul 28, 2020
  26. Taylor BlauJul 28, 2020
  27. Abhishek KumarJul 30, 2020
  28. Taylor BlauJul 28, 2020
  29. Abhishek KumarJul 30, 2020
  30. Derrick StoleeJul 28, 2020
  31. 00/10 [GSoC] Implement Corrected Commit DateAbhishek Kumar via GitGitGadget, Aug 9, 2020
  32. 01/10 commit-graph: fix regression when computing bloom filterAbhishek Kumar via GitGitGadget, Aug 9, 2020
  33. 03/10 commit-graph: consolidate fill_commit_graph_infoAbhishek Kumar via GitGitGadget, Aug 9, 2020
  34. 02/10 revision: parse parent in indegree_walk_step()Abhishek Kumar via GitGitGadget, Aug 9, 2020
  35. 08/10 commit-graph: handle mixed generation commit chainsAbhishek Kumar via GitGitGadget, Aug 9, 2020
  36. Derrick StoleeAug 10, 2020
  37. Abhishek KumarAug 11, 2020
  38. Derrick StoleeAug 11, 2020
  39. 09/10 commit-reach: use corrected commit dates in paint_down_to_common()Abhishek Kumar via GitGitGadget, Aug 9, 2020
  40. 07/10 commit-graph: implement corrected commit dateAbhishek Kumar via GitGitGadget, Aug 9, 2020
  41. Derrick StoleeAug 10, 2020
  42. Abhishek KumarAug 14, 2020
  43. Derrick StoleeAug 14, 2020
  44. 06/10 commit-graph: return 64-bit generation numberAbhishek Kumar via GitGitGadget, Aug 9, 2020
  45. 10/10 doc: add corrected commit date infoAbhishek Kumar via GitGitGadget, Aug 9, 2020
  46. 04/10 commit-graph: consolidate compare_commits_by_genAbhishek Kumar via GitGitGadget, Aug 9, 2020
  47. 05/10 commit-graph: implement generation data chunkAbhishek Kumar via GitGitGadget, Aug 9, 2020
  48. Derrick StoleeAug 10, 2020
  49. Abhishek KumarAug 11, 2020
  50. Derrick StoleeAug 11, 2020
  51. Taylor BlauAug 11, 2020
  52. Derrick StoleeAug 10, 2020
  53. 00/11 [GSoC] Implement Corrected Commit DateAbhishek Kumar via GitGitGadget, Aug 15, 2020
  54. 01/11 commit-graph: fix regression when computing bloom filterAbhishek Kumar via GitGitGadget, Aug 15, 2020
  55. Jakub NarębskiAug 17, 2020
  56. 04/11 commit-graph: consolidate compare_commits_by_genAbhishek Kumar via GitGitGadget, Aug 15, 2020
  57. Derrick StoleeAug 17, 2020
  58. Jakub NarębskiAug 21, 2020
  59. 11/11 doc: add corrected commit date infoAbhishek Kumar via GitGitGadget, Aug 15, 2020
  60. Jakub NarębskiAug 22, 2020
  61. Abhishek KumarAug 27, 2020
  62. Jakub NarębskiAug 27, 2020
  63. Derrick StoleeAug 27, 2020
  64. Abhishek KumarSep 1, 2020
  65. 05/11 commit-graph: return 64-bit generation numberAbhishek Kumar via GitGitGadget, Aug 15, 2020
  66. Jakub NarębskiAug 21, 2020
  67. Abhishek KumarAug 25, 2020
  68. Jakub NarębskiAug 25, 2020
  69. Abhishek KumarSep 1, 2020
  70. Jakub NarębskiSep 3, 2020
  71. Abhishek KumarSep 5, 2020
  72. Jakub NarębskiSep 13, 2020
  73. Jakub NarębskiSep 28, 2020
  74. Abhishek KumarOct 5, 2020
  75. 10/11 commit-reach: use corrected commit dates in paint_down_to_common()Abhishek Kumar via GitGitGadget, Aug 15, 2020
  76. Jakub NarębskiAug 22, 2020
  77. Abhishek KumarSep 1, 2020
  78. Jakub NarębskiSep 3, 2020
  79. 09/11 commit-graph: use generation v2 only if entire chain doesAbhishek Kumar via GitGitGadget, Aug 15, 2020
  80. Jakub NarębskiAug 22, 2020
  81. Abhishek KumarAug 26, 2020
  82. Jakub NarębskiAug 26, 2020
  83. 08/11 commit-graph: implement generation data chunkAbhishek Kumar via GitGitGadget, Aug 15, 2020
  84. Jakub NarębskiAug 22, 2020
  85. 06/11 commit-graph: add a slab to store topological levelsAbhishek Kumar via GitGitGadget, Aug 15, 2020
  86. Jakub NarębskiAug 21, 2020
  87. Abhishek KumarAug 25, 2020
  88. Jakub NarębskiAug 25, 2020
  89. Jakub NarębskiAug 25, 2020
  90. Abhishek KumarSep 1, 2020
  91. Jakub NarębskiSep 3, 2020
  92. 03/11 commit-graph: consolidate fill_commit_graph_infoAbhishek Kumar via GitGitGadget, Aug 15, 2020
  93. Jakub NarębskiAug 19, 2020
  94. Abhishek KumarAug 21, 2020
  95. Jakub NarębskiAug 25, 2020
  96. Abhishek KumarSep 1, 2020
  97. 07/11 commit-graph: implement corrected commit dateAbhishek Kumar via GitGitGadget, Aug 15, 2020
  98. Jakub NarębskiAug 22, 2020
  99. Abhishek KumarAug 25, 2020
  100. Jakub NarębskiAug 25, 2020
  101. Abhishek KumarSep 1, 2020
  102. 02/11 revision: parse parent in indegree_walk_step()Abhishek Kumar via GitGitGadget, Aug 15, 2020
  103. Jakub NarębskiAug 18, 2020
  104. Jakub NarębskiAug 17, 2020
  105. Abhishek KumarAug 18, 2020
  106. Jakub NarębskiAug 23, 2020
  107. Abhishek KumarAug 24, 2020
  108. 00/10 [GSoC] Implement Corrected Commit DateAbhishek Kumar via GitGitGadget, Oct 7, 2020
  109. 02/10 revision: parse parent in indegree_walk_step()Abhishek Kumar via GitGitGadget, Oct 7, 2020
  110. Jakub NarębskiOct 24, 2020
  111. 01/10 commit-graph: fix regression when computing Bloom filtersAbhishek Kumar via GitGitGadget, Oct 7, 2020
  112. Jakub NarębskiOct 24, 2020
  113. Taylor BlauOct 25, 2020
  114. Abhishek KumarNov 3, 2020
  115. 03/10 commit-graph: consolidate fill_commit_graph_infoAbhishek Kumar via GitGitGadget, Oct 7, 2020
  116. Jakub NarębskiOct 25, 2020
  117. Abhishek KumarOct 27, 2020
  118. 05/10 commit-graph: add a slab to store topological levelsAbhishek Kumar via GitGitGadget, Oct 7, 2020
  119. Jakub NarębskiOct 25, 2020
  120. 04/10 commit-graph: return 64-bit generation numberAbhishek Kumar via GitGitGadget, Oct 7, 2020
  121. Jakub NarębskiOct 25, 2020
  122. Abhishek KumarNov 3, 2020
  123. 10/10 doc: add corrected commit date infoAbhishek Kumar via GitGitGadget, Oct 7, 2020
  124. Jakub NarębskiNov 4, 2020
  125. Abhishek KumarNov 21, 2020
  126. 09/10 commit-reach: use corrected commit dates in paint_down_to_common()Abhishek Kumar via GitGitGadget, Oct 7, 2020
  127. Jakub NarębskiNov 3, 2020
  128. Junio C HamanoNov 3, 2020
  129. Abhishek KumarNov 20, 2020
  130. 07/10 commit-graph: implement generation data chunkAbhishek Kumar via GitGitGadget, Oct 7, 2020
  131. Jakub NarębskiOct 30, 2020
  132. Abhishek KumarNov 6, 2020
  133. Jakub NarębskiNov 6, 2020
  134. 08/10 commit-graph: use generation v2 only if entire chain doesAbhishek Kumar via GitGitGadget, Oct 7, 2020
  135. Jakub NarębskiNov 1, 2020
  136. Abhishek KumarNov 12, 2020
  137. Jakub NarębskiNov 13, 2020
  138. 06/10 commit-graph: implement corrected commit dateAbhishek Kumar via GitGitGadget, Oct 7, 2020
  139. Jakub NarębskiOct 27, 2020
  140. Abhishek KumarNov 3, 2020
  141. Jakub NarębskiNov 4, 2020
  142. Philip OakleyNov 5, 2020
  143. Junio C HamanoNov 5, 2020
  144. Extending and updating gitglossary (was: Re: [PATCH v4 06/10] commit-graph: implement corrected commit date)Jakub Narębski, Nov 6, 2020
  145. Junio C HamanoNov 6, 2020
  146. Philip OakleyNov 8, 2020
  147. Jakub NarębskiNov 10, 2020
  148. Philip OakleyNov 10, 2020
  149. Jakub NarębskiNov 10, 2020
  150. Jakub NarębskiNov 4, 2020
  151. Abhishek KumarNov 22, 2020
  152. 00/11 [GSoC] Implement Corrected Commit DateAbhishek Kumar via GitGitGadget, Dec 28, 2020
  153. 01/11 commit-graph: fix regression when computing Bloom filtersAbhishek Kumar via GitGitGadget, Dec 28, 2020
  154. Derrick StoleeDec 30, 2020
  155. Abhishek KumarJan 8, 2021
  156. SZEDER GáborJan 5, 2021
  157. SZEDER GáborJan 5, 2021
  158. Abhishek KumarJan 8, 2021
  159. 02/11 revision: parse parent in indegree_walk_step()Abhishek Kumar via GitGitGadget, Dec 28, 2020
  160. 03/11 commit-graph: consolidate fill_commit_graph_infoAbhishek Kumar via GitGitGadget, Dec 28, 2020
  161. 04/11 t6600-test-reach: generalize *_three_modesAbhishek Kumar via GitGitGadget, Dec 28, 2020
  162. 05/11 commit-graph: add a slab to store topological levelsAbhishek Kumar via GitGitGadget, Dec 28, 2020
  163. 06/11 commit-graph: return 64-bit generation numberAbhishek Kumar via GitGitGadget, Dec 28, 2020
  164. 10/11 commit-reach: use corrected commit dates in paint_down_to_common()Abhishek Kumar via GitGitGadget, Dec 28, 2020
  165. 07/11 commit-graph: implement corrected commit dateAbhishek Kumar via GitGitGadget, Dec 28, 2020
  166. Derrick StoleeDec 30, 2020
  167. Abhishek KumarJan 10, 2021
  168. 11/11 doc: add corrected commit date infoAbhishek Kumar via GitGitGadget, Dec 28, 2020
  169. 08/11 commit-graph: implement generation data chunkAbhishek Kumar via GitGitGadget, Dec 28, 2020
  170. 09/11 commit-graph: use generation v2 only if entire chain doesAbhishek Kumar via GitGitGadget, Dec 28, 2020
  171. Derrick StoleeDec 30, 2020
  172. Abhishek KumarJan 10, 2021
  173. Derrick StoleeJan 11, 2021
  174. Derrick StoleeDec 30, 2020
  175. Abhishek KumarJan 10, 2021
  176. 00/11 [GSoC] Implement Corrected Commit DateAbhishek Kumar via GitGitGadget, Jan 16, 2021
  177. 02/11 revision: parse parent in indegree_walk_step()Abhishek Kumar via GitGitGadget, Jan 16, 2021
  178. 01/11 commit-graph: fix regression when computing Bloom filtersAbhishek Kumar via GitGitGadget, Jan 16, 2021
  179. 03/11 commit-graph: consolidate fill_commit_graph_infoAbhishek Kumar via GitGitGadget, Jan 16, 2021
  180. 04/11 t6600-test-reach: generalize *_three_modesAbhishek Kumar via GitGitGadget, Jan 16, 2021
  181. 07/11 commit-graph: implement corrected commit dateAbhishek Kumar via GitGitGadget, Jan 16, 2021
  182. 06/11 commit-graph: return 64-bit generation numberAbhishek Kumar via GitGitGadget, Jan 16, 2021
  183. 11/11 doc: add corrected commit date infoAbhishek Kumar via GitGitGadget, Jan 16, 2021
  184. SZEDER GáborJan 27, 2021
  185. Abhishek KumarJan 30, 2021
  186. Taylor BlauJan 31, 2021
  187. 05/11 commit-graph: add a slab to store topological levelsAbhishek Kumar via GitGitGadget, Jan 16, 2021
  188. 08/11 commit-graph: implement generation data chunkAbhishek Kumar via GitGitGadget, Jan 16, 2021
  189. 10/11 commit-reach: use corrected commit dates in paint_down_to_common()Abhishek Kumar via GitGitGadget, Jan 16, 2021
  190. 09/11 commit-graph: use generation v2 only if entire chain doesAbhishek Kumar via GitGitGadget, Jan 16, 2021
  191. Derrick StoleeJan 18, 2021
  192. Taylor BlauJan 18, 2021
  193. Abhishek KumarJan 23, 2021
  194. Junio C HamanoJan 19, 2021
  195. Abhishek KumarJan 23, 2021
  196. 00/11 [GSoC] Implement Corrected Commit DateAbhishek Kumar via GitGitGadget, Feb 1, 2021
  197. 01/11 commit-graph: fix regression when computing Bloom filtersAbhishek Kumar via GitGitGadget, Feb 1, 2021
  198. 02/11 revision: parse parent in indegree_walk_step()Abhishek Kumar via GitGitGadget, Feb 1, 2021
  199. 03/11 commit-graph: consolidate fill_commit_graph_infoAbhishek Kumar via GitGitGadget, Feb 1, 2021
  200. 04/11 t6600-test-reach: generalize *_three_modesAbhishek Kumar via GitGitGadget, Feb 1, 2021
  201. 05/11 commit-graph: add a slab to store topological levelsAbhishek Kumar via GitGitGadget, Feb 1, 2021
  202. 06/11 commit-graph: return 64-bit generation numberAbhishek Kumar via GitGitGadget, Feb 1, 2021
  203. 08/11 commit-graph: implement corrected commit dateAbhishek Kumar via GitGitGadget, Feb 1, 2021
  204. 10/11 commit-graph: use generation v2 only if entire chain doesAbhishek Kumar via GitGitGadget, Feb 1, 2021
  205. 09/11 commit-graph: implement generation data chunkAbhishek Kumar via GitGitGadget, Feb 1, 2021
  206. 07/11 commit-graph: document generation number v2Abhishek Kumar via GitGitGadget, Feb 1, 2021
  207. 11/11 commit-reach: use corrected commit dates in paint_down_to_common()Abhishek Kumar via GitGitGadget, Feb 1, 2021
  208. Derrick StoleeFeb 1, 2021
  209. Junio C HamanoFeb 1, 2021
  210. Taylor BlauAug 17, 2020
  211. Jakub NarębskiAug 17, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.