From 27b2cdac2977530795e9308423877b74f62c4485 Mon Sep 17 00:00:00 2001 From: Javi Fontan Date: Sun, 9 Jun 2019 18:56:01 +0200 Subject: [PATCH] siva: fix tree iterator and add an extra test fixes #29 Signed-off-by: Javi Fontan --- ...e799463e1a00dbd1addd2003b0c7db31dbfe2.siva | Bin 17421 -> 24371 bytes siva/metadata_test.go | 13 ++-- siva/rooted_storage.go | 27 +------- siva/rooted_storage_test.go | 58 ++++++++++++++++++ 4 files changed, 68 insertions(+), 30 deletions(-) diff --git a/_testdata/rooted/cf2e799463e1a00dbd1addd2003b0c7db31dbfe2.siva b/_testdata/rooted/cf2e799463e1a00dbd1addd2003b0c7db31dbfe2.siva index 1ca46e96decbe60d39a8cb77eeaa5ecc086db7d9..dc17cb3064fc73d5a1ef1d9ea1e8cb42d00f58ff 100644 GIT binary patch delta 3037 zcmb7G3pkY98ve&^G;V|4o(vNv*G6M*?vhK2Tq3uwTgJ>}XlpVuLybvCDwn9$B$6^HQ(`__7{A#p zq4tI=J)y^?DGq(REE&j*{u9!}XXnQKctG*!bv>?=bhB8rMx5}O-DQ8*@Fz;z?{djZd{d>Z9Yz~M`u^@H3CPW(R7yGc^G%jS_ z+*<14q3rz85Vxd=65^bl;NHIFQ@6{4okPNgm@wX&tHH1P94wRj1zOZVWaIP7u}%zP zgY#aOLf>meS-9QZ$IuRBFY`ph2T?rNkjtJaDOO%S5U~2 zG|lIf@q)Z~JkbF`3(})Qdlph4^)cuk6-&R(+vd zx@)zYX~izd2Acxedjd+tUemJn-~yLqE1|bey7{J3!=~Jz)?87iS$~OS!n3J1 zs14B_DbF-n=8%xe32^i9feR?Wrn66*FFum#gK8q7T}K_7UwL|;$nz!OtJc__v2?SB#z2UY)2;)3(KoH4V~IR_B6y` zwbU~19L~lqs~lPy?cR~&G5cnmsGi&shc&e}?`CeR6l%2VZ&wTAPl}cKr7MupX^#c| zfuG#U4h?=*$5*i)-_Z?T5#rAh9}Vp?FA643D9*~Pk5(k3p{;_QNlzlfcu5;ojYSz}#&?K99SQyMPjfWJKh619OufDe z>*GPGt-YV|52$PS6r^<*+9`dfS{&N9z`5T0NMc)MOg@C$pUcQ>Q?1SHVtLc8_AEEu z;n|Y%L-%>*(b}lKh z9b@`$C^}wZaJ7cUf=R-1_2s=PL$hIfGd&3E$Ep7~}K1idpKR$9zs#nO|a$yds6`Jhf5z%^ON zSbXZ(m`Hq3$f#C@>`&4{Nqn&)e7GS*snV1jFK;VvCg)7!cwuhFv+7RGH-=^>3N6a+ z`wq}jTQRx8PfG?&F&OFt$EeN2DX)daxoRJ7onGGivSS-(={rv-3T?2k0l^phT<;8N zo!=f5APFX&kx*=_DYXHd1P#qV5`}c8UjY(4LpuF4&o*=huN-MxG;5|h`=FYhQr<%+ z@0L}<^uFZ>*WR2jN*cL`#uw)0A1XK%mXq5N5L;PNa(Rv(ao+n6y*h|L?l*=C7p7IT zs#Xl(er>r+%y8lRP;n2A5pr#P$S*axFpSztY|_cF8-3R;c&ZDZM{7X0 zcH6oAvr=*>M>u^+bx1oqzPL^1=eykIsRD#LpzvQ3Yi4dm57Kb}k*dcRzhub7==np@ z-EHT#j4Z2`YQhrw>S9KozOz^gRWmijM^&bFLVj$7|NGpae>@U%xtUl0U?i~1t{~*> z3z^~F0i&9{^Lt*DHLL3_(H)bK;Ann>R2fpzBs>irF~!# z8banNn7u%3H=0-*tWT#ecuvl5CnGrBMOK=t0+aUfp0SW_@QXW|%!K<%5tp2W_ zJxi|CN)fINUe1=!NQiH3aO%_dc1jQqC3jDgv=57)YM`$fG2@$nzZ>bR{T-NSIOPRZ z7D%9As*5=;(v5gs)--VeeH#joz~fn%$=F-TXSrYDksKAZ!E4vKUNll9nNDIcXts6? zI-O<5WU^=!8ih`0+K}xT^azTB4U=YXXGdf+`0(9UI~#69?--NFizvU5qlyK%WNIk< ze`|3fB4ehC{g%2!UPK-K@t7FO@Q=mRP@CW~84Kc=EH0cPne2bB*ho&$9*`sQ>I53d TCy=rn5$olsZ}$8|r}Do668D~! delta 9 QcmdnIkFmFdaRaXl02H$WiU0rr diff --git a/siva/metadata_test.go b/siva/metadata_test.go index 66af855..b6d7cce 100644 --- a/siva/metadata_test.go +++ b/siva/metadata_test.go @@ -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() @@ -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, }, } diff --git a/siva/rooted_storage.go b/siva/rooted_storage.go index c53f6a6..566d503 100644 --- a/siva/rooted_storage.go +++ b/siva/rooted_storage.go @@ -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]) @@ -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{}{} @@ -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 } } @@ -596,7 +576,6 @@ func (b *blobObjectIter) Next() (plumbing.EncodedObject, error) { } b.entries = tree.Entries - continue } entry := b.entries[0] diff --git a/siva/rooted_storage_test.go b/siva/rooted_storage_test.go index fad1b62..234992e 100644 --- a/siva/rooted_storage_test.go +++ b/siva/rooted_storage_test.go @@ -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 {