diff options
author | Máximo Cuadros <mcuadros@gmail.com> | 2017-01-12 14:48:31 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-01-12 14:48:31 +0100 |
commit | e69dab7fd7800c0c34c4caf2157f5d9c6638d855 (patch) | |
tree | 8b26493aeb1d85cdaddd9a39c4ca259e51b47186 | |
parent | f9c7c8c2158140d75d4d5a2fa925fc35ad77be9b (diff) | |
download | go-git-e69dab7fd7800c0c34c4caf2157f5d9c6638d855.tar.gz |
remote: fix empty-git-upload-pack error in fetch, when the reference points to a non-commit object (#209)
-rw-r--r-- | remote.go | 7 | ||||
-rw-r--r-- | remote_test.go | 11 |
2 files changed, 15 insertions, 3 deletions
@@ -355,7 +355,8 @@ func getWants(spec []config.RefSpec, localStorer Storer, remoteRefs storer.Refer } hash := ref.Hash() - exists, err := commitExists(localStorer, hash) + + exists, err := objectExists(localStorer, hash) if err != nil { return err } @@ -378,8 +379,8 @@ func getWants(spec []config.RefSpec, localStorer Storer, remoteRefs storer.Refer return result, nil } -func commitExists(s storer.EncodedObjectStorer, h plumbing.Hash) (bool, error) { - _, err := s.EncodedObject(plumbing.CommitObject, h) +func objectExists(s storer.EncodedObjectStorer, h plumbing.Hash) (bool, error) { + _, err := s.EncodedObject(plumbing.AnyObject, h) if err == plumbing.ErrObjectNotFound { return false, nil } diff --git a/remote_test.go b/remote_test.go index 02ff690..7f40979 100644 --- a/remote_test.go +++ b/remote_test.go @@ -171,6 +171,17 @@ func (s *RemoteSuite) TestFetchWithPackfileWriter(c *C) { func (s *RemoteSuite) TestFetchNoErrAlreadyUpToDate(c *C) { url := s.GetBasicLocalRepositoryURL() + s.doTestFetchNoErrAlreadyUpToDate(c, url) +} + +func (s *RemoteSuite) TestFetchNoErrAlreadyUpToDateWithNonCommitObjects(c *C) { + fixture := fixtures.ByTag("tags").One() + url := s.GetLocalRepositoryURL(fixture) + s.doTestFetchNoErrAlreadyUpToDate(c, url) +} + +func (s *RemoteSuite) doTestFetchNoErrAlreadyUpToDate(c *C, url string) { + sto := memory.NewStorage() r := newRemote(sto, nil, &config.RemoteConfig{Name: "foo", URL: url}) |