diff options
author | Paulo Gomes <pjbgf@linux.com> | 2023-10-13 23:06:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-13 23:06:19 +0100 |
commit | 72ce9961c676b73c9bdd0678b64af7b0a42253f8 (patch) | |
tree | 3e6c8e7b0706918455a2d85fe6629242acab163f /plumbing/format/commitgraph/v2/memory.go | |
parent | 24261e8288b2483628d69c751dd310ac79c38b2e (diff) | |
parent | 69b88d9bda44ebfe1d56a7624b956d9e20818c0e (diff) | |
download | go-git-72ce9961c676b73c9bdd0678b64af7b0a42253f8.tar.gz |
Merge pull request #869 from zeripath/graph-generation-2v5.10.0
plumbing: commitgraph, Add generation v2 support
Diffstat (limited to 'plumbing/format/commitgraph/v2/memory.go')
-rw-r--r-- | plumbing/format/commitgraph/v2/memory.go | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/plumbing/format/commitgraph/v2/memory.go b/plumbing/format/commitgraph/v2/memory.go index ab7ddfa..8de0c5f 100644 --- a/plumbing/format/commitgraph/v2/memory.go +++ b/plumbing/format/commitgraph/v2/memory.go @@ -1,14 +1,17 @@ package v2 import ( + "math" + "github.com/go-git/go-git/v5/plumbing" ) // MemoryIndex provides a way to build the commit-graph in memory // for later encoding to file. type MemoryIndex struct { - commitData []commitData - indexMap map[plumbing.Hash]uint32 + commitData []commitData + indexMap map[plumbing.Hash]uint32 + hasGenerationV2 bool } type commitData struct { @@ -19,7 +22,8 @@ type commitData struct { // NewMemoryIndex creates in-memory commit graph representation func NewMemoryIndex() *MemoryIndex { return &MemoryIndex{ - indexMap: make(map[plumbing.Hash]uint32), + indexMap: make(map[plumbing.Hash]uint32), + hasGenerationV2: true, } } @@ -83,9 +87,21 @@ func (mi *MemoryIndex) Add(hash plumbing.Hash, data *CommitData) { data.ParentIndexes = nil mi.indexMap[hash] = uint32(len(mi.commitData)) mi.commitData = append(mi.commitData, commitData{Hash: hash, CommitData: data}) + if data.GenerationV2 == math.MaxUint64 { // if GenerationV2 is not available reset it to zero + data.GenerationV2 = 0 + } + mi.hasGenerationV2 = mi.hasGenerationV2 && data.GenerationV2 != 0 +} + +func (mi *MemoryIndex) HasGenerationV2() bool { + return mi.hasGenerationV2 } // Close closes the index func (mi *MemoryIndex) Close() error { return nil } + +func (mi *MemoryIndex) MaximumNumberOfHashes() uint32 { + return uint32(len(mi.indexMap)) +} |