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

Commit c374092

Browse files
authored
Merge pull request #910 from fkorotkov/fedor/fix-tag-cloning
Fixed cloning of a single tag
2 parents 43d17e1 + 7b12481 commit c374092

File tree

3 files changed

+32
-6
lines changed

3 files changed

+32
-6
lines changed

remote.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -619,15 +619,15 @@ func getHaves(
619619
return result, nil
620620
}
621621

622-
const refspecTag = "+refs/tags/*:refs/tags/*"
622+
const refspecAllTags = "+refs/tags/*:refs/tags/*"
623623

624624
func calculateRefs(
625625
spec []config.RefSpec,
626626
remoteRefs storer.ReferenceStorer,
627627
tagMode TagMode,
628628
) (memory.ReferenceStorage, error) {
629629
if tagMode == AllTags {
630-
spec = append(spec, refspecTag)
630+
spec = append(spec, refspecAllTags)
631631
}
632632

633633
refs := make(memory.ReferenceStorage)

repository.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,7 @@ func (r *Repository) clone(ctx context.Context, o *CloneOptions) error {
583583
}
584584

585585
const (
586-
refspecTagWithDepth = "+refs/tags/%s:refs/tags/%[1]s"
586+
refspecTag = "+refs/tags/%s:refs/tags/%[1]s"
587587
refspecSingleBranch = "+refs/heads/%s:refs/remotes/%s/%[1]s"
588588
refspecSingleBranchHEAD = "+HEAD:refs/remotes/%s/HEAD"
589589
)
@@ -592,8 +592,8 @@ func (r *Repository) cloneRefSpec(o *CloneOptions, c *config.RemoteConfig) []con
592592
var rs string
593593

594594
switch {
595-
case o.ReferenceName.IsTag() && o.Depth > 0:
596-
rs = fmt.Sprintf(refspecTagWithDepth, o.ReferenceName.Short())
595+
case o.ReferenceName.IsTag():
596+
rs = fmt.Sprintf(refspecTag, o.ReferenceName.Short())
597597
case o.SingleBranch && o.ReferenceName == plumbing.HEAD:
598598
rs = fmt.Sprintf(refspecSingleBranchHEAD, c.Name)
599599
case o.SingleBranch:

repository_test.go

+27-1
Original file line numberDiff line numberDiff line change
@@ -846,7 +846,33 @@ func (s *RepositorySuite) TestCloneDetachedHEAD(c *C) {
846846
objects, err := r.Objects()
847847
c.Assert(err, IsNil)
848848
objects.ForEach(func(object.Object) error { count++; return nil })
849-
c.Assert(count, Equals, 31)
849+
c.Assert(count, Equals, 28)
850+
}
851+
852+
func (s *RepositorySuite) TestCloneDetachedHEADAndSingle(c *C) {
853+
r, _ := Init(memory.NewStorage(), nil)
854+
err := r.clone(context.Background(), &CloneOptions{
855+
URL: s.GetBasicLocalRepositoryURL(),
856+
ReferenceName: plumbing.ReferenceName("refs/tags/v1.0.0"),
857+
SingleBranch: true,
858+
})
859+
c.Assert(err, IsNil)
860+
861+
cfg, err := r.Config()
862+
c.Assert(err, IsNil)
863+
c.Assert(cfg.Branches, HasLen, 0)
864+
865+
head, err := r.Reference(plumbing.HEAD, false)
866+
c.Assert(err, IsNil)
867+
c.Assert(head, NotNil)
868+
c.Assert(head.Type(), Equals, plumbing.HashReference)
869+
c.Assert(head.Hash().String(), Equals, "6ecf0ef2c2dffb796033e5a02219af86ec6584e5")
870+
871+
count := 0
872+
objects, err := r.Objects()
873+
c.Assert(err, IsNil)
874+
objects.ForEach(func(object.Object) error { count++; return nil })
875+
c.Assert(count, Equals, 28)
850876
}
851877

852878
func (s *RepositorySuite) TestCloneDetachedHEADAndShallow(c *C) {

0 commit comments

Comments
 (0)