diff options
author | Andrew Thornton <art27@cantab.net> | 2023-10-08 15:49:51 +0100 |
---|---|---|
committer | Andrew Thornton <art27@cantab.net> | 2023-10-12 16:40:38 +0100 |
commit | 69b88d9bda44ebfe1d56a7624b956d9e20818c0e (patch) | |
tree | b6a17322552d0cdade956d3c4e0d6c14e49cf60e /plumbing/format/commitgraph/v2/commitgraph.go | |
parent | 623c6df4280e22f88f4aabc3c0a8ae2808d33a1b (diff) | |
download | go-git-69b88d9bda44ebfe1d56a7624b956d9e20818c0e.tar.gz |
plumbing: commitgraph, Add generation v2 support
This PR adds in support for generation v2 support and a couple of new
walkers to match --date-order etc options on log. This PR also fixes a
bug in the chain code and adds more tests.
Signed-off-by: Andrew Thornton <art27@cantab.net>
Diffstat (limited to 'plumbing/format/commitgraph/v2/commitgraph.go')
-rw-r--r-- | plumbing/format/commitgraph/v2/commitgraph.go | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/plumbing/format/commitgraph/v2/commitgraph.go b/plumbing/format/commitgraph/v2/commitgraph.go index 7c67b63..9c89cd9 100644 --- a/plumbing/format/commitgraph/v2/commitgraph.go +++ b/plumbing/format/commitgraph/v2/commitgraph.go @@ -2,6 +2,7 @@ package v2 import ( "io" + "math" "time" "github.com/go-git/go-git/v5/plumbing" @@ -19,10 +20,22 @@ type CommitData struct { // Generation number is the pre-computed generation in the commit graph // or zero if not available. Generation uint64 + // GenerationV2 stores the corrected commit date for the commits + // It combines the contents of the GDA2 and GDO2 sections of the commit-graph + // with the commit time portion of the CDAT section. + GenerationV2 uint64 // When is the timestamp of the commit. When time.Time } +// GenerationV2Data returns the corrected commit date for the commits +func (c *CommitData) GenerationV2Data() uint64 { + if c.GenerationV2 == 0 || c.GenerationV2 == math.MaxUint64 { + return 0 + } + return c.GenerationV2 - uint64(c.When.Unix()) +} + // Index represents a representation of commit graph that allows indexed // access to the nodes using commit object hash type Index interface { @@ -35,6 +48,10 @@ type Index interface { GetCommitDataByIndex(i uint32) (*CommitData, error) // Hashes returns all the hashes that are available in the index Hashes() []plumbing.Hash + // HasGenerationV2 returns true if the commit graph has the corrected commit date data + HasGenerationV2() bool + // MaximumNumberOfHashes returns the maximum number of hashes within the index + MaximumNumberOfHashes() uint32 io.Closer } |