diff options
author | sona-tar <sona.zip@gmail.com> | 2016-08-31 05:13:12 +0900 |
---|---|---|
committer | Máximo Cuadros <mcuadros@gmail.com> | 2016-08-30 22:13:12 +0200 |
commit | d72a19796ef0f556db93b553547f2ac085b59a1a (patch) | |
tree | 0c5cc404852b0fd46d35f50cbb3afddff49f7018 /formats | |
parent | 6d846503013f5a9cde0597698c998b6c0e0dc055 (diff) | |
download | go-git-d72a19796ef0f556db93b553547f2ac085b59a1a.tar.gz |
Support non packed objects (#68)
* Support non packed git objects
* Support non packed git objects for Iterator
* Fix error handling from Writer() in FillObject()
* Fix format in func (r *Reader) FillObject(obj core.Object) error
* Fix to return d.addRefsFromPackedRefs() error
And if packed-refs dosen't exist not to return error in d.addRefsFromPackedRefs
* Remove debug code
* Add GoDoc for func (d *DotGit) Objectfile(h core.Hash) (fs.FS, string, error)
* Add GoDoc for func (r *Reader) FillObject(obj core.Object) error
* Add GoDoc for func (d *DotGit) Objectfiles() (fs.FS, []core.Hash, error)
* Fix format in func (d *DotGit) Objectfile(h core.Hash) (fs.FS, string, error)
* Rename value dotGitobjcts -> objsDir
* Change regexp.Compile -> regexp.MustCompile
* Move regexp to variable initialization
* Rename regexp value to be more coherent
* Fix object directory name and object file name to correct character
* Faster Objectfiles func
* Add test for FillObject
* Add GoDoc for func (s *ObjectStorage) Get(h core.Hash) (core.Object, error)
* defer Close()
* Return name values for defer function overwrite the error value.
* Fix error handling in func (s *ObjectStorage) Get()
Return error that gets error except for ErrObjfileNotFound from getFromUnpacked()
* Rename getFromObject -> getFromUnpacked
* Add test for func (d *DotGit) Objectfile(h core.Hash) (fs.FS, string, error)
* Add test for func (d *DotGit) Objectfiles() (fs.FS, []core.Hash, error)
* Faster check git object name
* Faster dotgit_test.go
* Fix Godoc for Objectfiles func
* Refactor variable name in Objectfiles func
* Fix GoDoc for objectfile func
* Fix TestObjectfile func and TestObjectfiles func
* Rename fixobj -> fixObj in Test Objectfile func
* Fix test compare method
* Refactor Get func in object.go
* Refactor getFromUnpacked func in object.go
* Fix GoDoc for ErrObjfileNotFound
* Fix TestObjectfiles for not guarantee the slice order
* Change error no such file or directory to target file not found
* Change spec func (s *ObjectStorage) Get(h core.Hash) (core.Object, error)
return core.ErrObjectNotFound, if index pointer is nil.
* Add space
* storage: Add object type hint parameter to ObjectStorage.getFromUnpacked
Diffstat (limited to 'formats')
-rw-r--r-- | formats/objfile/reader.go | 13 | ||||
-rw-r--r-- | formats/objfile/reader_test.go | 32 |
2 files changed, 45 insertions, 0 deletions
diff --git a/formats/objfile/reader.go b/formats/objfile/reader.go index 5b17da0..99ed754 100644 --- a/formats/objfile/reader.go +++ b/formats/objfile/reader.go @@ -121,3 +121,16 @@ func (r *Reader) Close() (err error) { return } + +// FillObject fills the given object from an object entry +func (r *Reader) FillObject(obj core.Object) error { + obj.SetType(r.header.t) + obj.SetSize(r.header.size) + w, err := obj.Writer() + if err != nil { + return err + } + _, err = io.Copy(w, r.r) + + return err +} diff --git a/formats/objfile/reader_test.go b/formats/objfile/reader_test.go index ec191f6..964a071 100644 --- a/formats/objfile/reader_test.go +++ b/formats/objfile/reader_test.go @@ -69,3 +69,35 @@ func (s *SuiteReader) TestReadCorruptZLib(c *C) { _, err := NewReader(source) c.Assert(err, NotNil) } + +func (s *SuiteReader) TestFillObject(c *C) { + for k, fixture := range objfileFixtures { + com := fmt.Sprintf("test %d: ", k) + hash := core.NewHash(fixture.hash) + content, _ := base64.StdEncoding.DecodeString(fixture.content) + data, _ := base64.StdEncoding.DecodeString(fixture.data) + + testFillObject(c, bytes.NewReader(data), hash, fixture.t, content, com) + } +} + +func testFillObject(c *C, source io.Reader, hash core.Hash, typ core.ObjectType, content []byte, com string) { + var o core.Object = &core.MemoryObject{} + r, err := NewReader(source) + c.Assert(err, IsNil) + err = r.FillObject(o) + c.Assert(err, IsNil) + c.Assert(o.Type(), Equals, typ) + c.Assert(o.Size(), Equals, int64(len(content))) + c.Assert(o.Hash(), Equals, hash) + or, err := o.Reader() + c.Assert(err, IsNil) + rc, err := ioutil.ReadAll(or) + c.Assert(err, IsNil) + c.Assert(rc, DeepEquals, content, Commentf("%scontent=%s, expected=%s", base64.StdEncoding.EncodeToString(rc), base64.StdEncoding.EncodeToString(content))) + c.Assert(or.Close(), IsNil) + _, err = or.Read(make([]byte, 0, 1)) + c.Assert(err, Equals, nil) + ow, err := o.Writer() + c.Assert(ow, Equals, o) +} |