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

Commit aa6e0d2

Browse files
committed
repository: Fix RefSpec for a single tag.
1 parent 959dc01 commit aa6e0d2

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

repository.go

+16-12
Original file line numberDiff line numberDiff line change
@@ -710,16 +710,17 @@ func (r *Repository) clone(ctx context.Context, o *CloneOptions) error {
710710
}
711711

712712
c := &config.RemoteConfig{
713-
Name: o.RemoteName,
714-
URLs: []string{o.URL},
713+
Name: o.RemoteName,
714+
URLs: []string{o.URL},
715+
Fetch: r.cloneRefSpec(o),
715716
}
716717

717718
if _, err := r.CreateRemote(c); err != nil {
718719
return err
719720
}
720721

721722
ref, err := r.fetchAndUpdateReferences(ctx, &FetchOptions{
722-
RefSpecs: r.cloneRefSpec(o, c),
723+
RefSpecs: c.Fetch,
723724
Depth: o.Depth,
724725
Auth: o.Auth,
725726
Progress: o.Progress,
@@ -789,21 +790,24 @@ const (
789790
refspecSingleBranchHEAD = "+HEAD:refs/remotes/%s/HEAD"
790791
)
791792

792-
func (r *Repository) cloneRefSpec(o *CloneOptions, c *config.RemoteConfig) []config.RefSpec {
793-
var rs string
794-
793+
func (r *Repository) cloneRefSpec(o *CloneOptions) []config.RefSpec {
795794
switch {
796795
case o.ReferenceName.IsTag():
797-
rs = fmt.Sprintf(refspecTag, o.ReferenceName.Short())
796+
return []config.RefSpec{
797+
config.RefSpec(fmt.Sprintf(refspecTag, o.ReferenceName.Short())),
798+
}
798799
case o.SingleBranch && o.ReferenceName == plumbing.HEAD:
799-
rs = fmt.Sprintf(refspecSingleBranchHEAD, c.Name)
800+
return []config.RefSpec{
801+
config.RefSpec(fmt.Sprintf(refspecSingleBranch, o.ReferenceName.Short(), o.RemoteName)),
802+
config.RefSpec(fmt.Sprintf(refspecSingleBranchHEAD, o.RemoteName)),
803+
}
800804
case o.SingleBranch:
801-
rs = fmt.Sprintf(refspecSingleBranch, o.ReferenceName.Short(), c.Name)
805+
return []config.RefSpec{
806+
config.RefSpec(fmt.Sprintf(refspecSingleBranch, o.ReferenceName.Short(), o.RemoteName)),
807+
}
802808
default:
803-
return c.Fetch
809+
return []config.RefSpec{}
804810
}
805-
806-
return []config.RefSpec{config.RefSpec(rs)}
807811
}
808812

809813
func (r *Repository) setIsBare(isBare bool) error {

0 commit comments

Comments
 (0)