diff options
author | Máximo Cuadros <mcuadros@gmail.com> | 2017-08-28 20:38:58 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-28 20:38:58 +0200 |
commit | 7aa9d15d395282144f31a09c0fac230da3f65360 (patch) | |
tree | 54675ba97a4b813e38630195e821b93553543098 /remote_test.go | |
parent | cb3272280ba9cbe8a3961e9244170129eb9a246b (diff) | |
parent | 467cb2aaa00ac30a8d2b5cc5b93951dad917ceb4 (diff) | |
download | go-git-7aa9d15d395282144f31a09c0fac230da3f65360.tar.gz |
Merge pull request #567 from strib/avoid-revlist-when-deletingv4.0.0-rc14
remote: avoid expensive revlist operation when only deleting refs
Diffstat (limited to 'remote_test.go')
-rw-r--r-- | remote_test.go | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/remote_test.go b/remote_test.go index e2fd8ae..51180ce 100644 --- a/remote_test.go +++ b/remote_test.go @@ -538,6 +538,42 @@ func (s *RemoteSuite) TestPushNewReference(c *C) { }) } +func (s *RemoteSuite) TestPushNewReferenceAndDeleteInBatch(c *C) { + fs := fixtures.Basic().One().DotGit() + url := c.MkDir() + server, err := PlainClone(url, true, &CloneOptions{ + URL: fs.Root(), + }) + + r, err := PlainClone(c.MkDir(), true, &CloneOptions{ + URL: url, + }) + c.Assert(err, IsNil) + + remote, err := r.Remote(DefaultRemoteName) + c.Assert(err, IsNil) + + ref, err := r.Reference(plumbing.ReferenceName("refs/heads/master"), true) + c.Assert(err, IsNil) + + err = remote.Push(&PushOptions{RefSpecs: []config.RefSpec{ + "refs/heads/master:refs/heads/branch2", + ":refs/heads/branch", + }}) + c.Assert(err, IsNil) + + AssertReferences(c, server, map[string]string{ + "refs/heads/branch2": ref.Hash().String(), + }) + + AssertReferences(c, r, map[string]string{ + "refs/remotes/origin/branch2": ref.Hash().String(), + }) + + _, err = server.Storer.Reference(plumbing.ReferenceName("refs/heads/branch")) + c.Assert(err, Equals, plumbing.ErrReferenceNotFound) +} + func (s *RemoteSuite) TestPushInvalidEndpoint(c *C) { r := newRemote(nil, &config.RemoteConfig{Name: "foo", URLs: []string{"http://\\"}}) err := r.Push(&PushOptions{RemoteName: "foo"}) |