Skip to content
This repository was archived by the owner on Sep 11, 2020. It is now read-only.

Commit 00629a1

Browse files
authored
Merge pull request #1060 from keybase/strib/gh-KBFS-3828-packfile-object-size
packfile: get object size correctly for delta objects
2 parents d1b5bce + 121898c commit 00629a1

File tree

2 files changed

+27
-1
lines changed

2 files changed

+27
-1
lines changed

plumbing/format/packfile/packfile.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ func (p *Packfile) GetSizeByOffset(o int64) (size int64, err error) {
107107
if err != nil {
108108
return 0, err
109109
}
110-
return h.Length, nil
110+
return p.getObjectSize(h)
111111
}
112112

113113
func (p *Packfile) objectHeaderAtOffset(offset int64) (*ObjectHeader, error) {

plumbing/format/packfile/packfile_test.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,3 +277,29 @@ func getIndexFromIdxFile(r io.Reader) idxfile.Index {
277277

278278
return idxf
279279
}
280+
281+
func (s *PackfileSuite) TestSize(c *C) {
282+
f := fixtures.Basic().ByTag("ref-delta").One()
283+
284+
index := getIndexFromIdxFile(f.Idx())
285+
fs := osfs.New("")
286+
pf, err := fs.Open(f.Packfile().Name())
287+
c.Assert(err, IsNil)
288+
289+
packfile := packfile.NewPackfile(index, fs, pf)
290+
defer packfile.Close()
291+
292+
// Get the size of binary.jpg, which is not delta-encoded.
293+
offset, err := packfile.FindOffset(plumbing.NewHash("d5c0f4ab811897cadf03aec358ae60d21f91c50d"))
294+
c.Assert(err, IsNil)
295+
size, err := packfile.GetSizeByOffset(offset)
296+
c.Assert(err, IsNil)
297+
c.Assert(size, Equals, int64(76110))
298+
299+
// Get the size of the root commit, which is delta-encoded.
300+
offset, err = packfile.FindOffset(f.Head)
301+
c.Assert(err, IsNil)
302+
size, err = packfile.GetSizeByOffset(offset)
303+
c.Assert(err, IsNil)
304+
c.Assert(size, Equals, int64(245))
305+
}

0 commit comments

Comments
 (0)