Skip to content

Commit

Permalink
siva: fix tree iterator and add an extra test
Browse files Browse the repository at this point in the history
fixes #29

Signed-off-by: Javi Fontan <jfontan@gmail.com>
  • Loading branch information
jfontan committed Jun 9, 2019
1 parent 1fbfe7a commit 27b2cda
Show file tree
Hide file tree
Showing 4 changed files with 68 additions and 30 deletions.
Binary file modified _testdata/rooted/cf2e799463e1a00dbd1addd2003b0c7db31dbfe2.siva
Binary file not shown.
13 changes: 7 additions & 6 deletions siva/metadata_test.go
Expand Up @@ -247,6 +247,7 @@ func TestMetadataWriteLocation(t *testing.T) {
"gitserver.com/b",
"gitserver.com/c",
"gitserver.com/d",
"gitserver.com/e",
}, repos)

last := l.LastVersion()
Expand Down Expand Up @@ -333,18 +334,18 @@ func TestMetadataVersionOnCommit(t *testing.T) {
}{
{
version: 0,
offset: 21250,
size: 21251,
offset: 28358,
size: 28359,
},
{
version: 1,
offset: 23323,
size: 2073,
offset: 30589,
size: 2231,
},
{
version: 2,
offset: 25452,
size: 2129,
offset: 32876,
size: 2287,
},
}

Expand Down
27 changes: 3 additions & 24 deletions siva/rooted_storage.go
Expand Up @@ -461,19 +461,12 @@ func (t *treeIter) Next() (*object.Tree, error) {
return nil, err
}

tree, err := commit.Tree()
if err != nil {
return nil, err
}

if _, ok := t.seen[tree.Hash]; ok {
hash := commit.TreeHash
if _, ok := t.seen[hash]; ok {
continue
}

t.entries = tree.Entries
t.seen[tree.Hash] = struct{}{}

return tree, err
t.queue = []plumbing.Hash{hash}
}

tree, err := object.GetTree(t.sto, t.queue[0])
Expand All @@ -486,10 +479,6 @@ func (t *treeIter) Next() (*object.Tree, error) {
return nil, err
}

if _, ok := t.seen[tree.Hash]; ok {
continue
}

t.entries = tree.Entries
t.seen[tree.Hash] = struct{}{}

Expand All @@ -508,16 +497,7 @@ func (t *treeIter) Next() (*object.Tree, error) {
}
t.seen[entry.Hash] = struct{}{}

tree, err := object.GetTree(t.sto, entry.Hash)
if err == plumbing.ErrObjectNotFound {
continue
}
if err != nil {
return nil, err
}

t.queue = append(t.queue, entry.Hash)
return tree, nil
}
}

Expand Down Expand Up @@ -596,7 +576,6 @@ func (b *blobObjectIter) Next() (plumbing.EncodedObject, error) {
}

b.entries = tree.Entries
continue
}

entry := b.entries[0]
Expand Down
58 changes: 58 additions & 0 deletions siva/rooted_storage_test.go
Expand Up @@ -282,6 +282,64 @@ func testRootedIterators(t *testing.T, mode borges.Mode) {
"8e27be7d6154a1f68ea9160ef0e18691d20560dc",
},
},
{
name: "gitserver.com/e",
commits: []string{
"4debba8a88e808bdef8364026db890c5cb2900de",
"589e548bfa67701f846000dd238e2660b2067284",
"5c016197dc226e105f3b5edcd259d7cfb0516a89",
"75129d3d3cc746b4cd335f9c01f1dad21d865403",
"7999f9666861c0fc1d310cf9d7d03420ff29b0a8",
"7d0f335107bfe8adfdcf1701673c8e3e9f4cc6a1",
"86d4bd99755baf332361cf364a9772b74fcb64d6",
"8c46128f7f8dca511321eb58940da6138a42ab42",
"98030e4628f15c208b05320a31bd7ff942dd9cf6",
"c0c150234d53f27424c7266a5b64749f8f8b7d22",
"cf2e799463e1a00dbd1addd2003b0c7db31dbfe2",
"d47421c1ab4ab5d2e00ba5f0bbeccf9578dd3d5c",
"dded5ecdd46f6b3557183022f69b55a428bb377d",
"e7a760958a2d664295f0465bf4ca979926dc8550",
},
trees: []string{
"1167c3da56a6b38139df872964078be4a7b39ab5",
"13159d380a0edb7745e272f60caa7d6703f0067e",
"1ecbc5095fa42400d6b707168e3f3656cdda4c54",
"214488f9825190707db29a69bfaf1a8d1c797a64",
"285ad25aba9f4b214e2434b87bf3320ffad42329",
"34c41faf8813eda3f42cea23ec20432e281f5dff",
"3a51818b3c211066b717b052c65301f52c767335",
"425534a90f90ed43be88932b56a420d5be6c9481",
"4282a0ee2f81c6dd9fdb4b3e10cffc5ff7948ac6",
"5126b1309620918bca11af91551b5e6824c06395",
"5f8271506e812830d5407663211ba24b69f1bf3d",
"66d07ba54343053cfa1f1d46a132553c8f7642cd",
"6e1021a51be9becce6964744cb6fadb88328dfd0",
"75fbd53e2d85f2be6b57775bc454f0df39297ee4",
"764409de08fa4fda9ba6c85a54f5f31d00cec93e",
"86e1673eae32bb2cb9d36a19b5f312d62519697b",
"9a2a0b1379ba12472bc0e1070a8f0787a69310e8",
"acdcd507f9f9453679a769296f1606d08a4ab3dc",
"afc2b305935fe480d2a4ee54102b70e81740a513",
"b0bb560589fafefe4a6c3bcca8695f978efe69a1",
"ea75d220ca234057d328234d9984e7138f6238a2",
"ea7e17f6ea1448e56aa092164a60e509fc59170d",
"eaaae9ed7e7f225d9ac38812e7b1baabb3875a41",
},
blobs: []string{
"06c773547c9d0dfd32c349dfd142309b631cd42a",
"1e72169403a0c919733bb3719c955b9c76fc69c8",
"413fd7ff0d0a0ce34cb817f834cbe422273c9289",
"773b2222280159571c11f3dea41023dbfaabf5c6",
"8178c76d627cade75005b40711b92f4177bc6cfc",
"8d1d88d5a31039314827791fdc68774055c1453b",
"8da84891bfc9327c9d079dc09cd5f84be307d8f3",
"9e9f70b0c22a70a9775348777795947dc70724bf",
"cc74ab448daeee19419a21f7c974d02a751aeaf3",
"dac138d9e013a2e9a10e67d793bd4703c1b86bd1",
"e69de29bb2d1d6434b8b29ae775ad8c2e48c5391",
"ee02d961b370c701629363409d07afc3da5e26dc",
},
},
}

for _, test := range tests {
Expand Down

0 comments on commit 27b2cda

Please sign in to comment.