@@ -640,16 +640,17 @@ func (r *Repository) clone(ctx context.Context, o *CloneOptions) error {
640
640
}
641
641
642
642
c := & config.RemoteConfig {
643
- Name : o .RemoteName ,
644
- URLs : []string {o .URL },
643
+ Name : o .RemoteName ,
644
+ URLs : []string {o .URL },
645
+ Fetch : r .cloneRefSpec (o ),
645
646
}
646
647
647
648
if _ , err := r .CreateRemote (c ); err != nil {
648
649
return err
649
650
}
650
651
651
652
ref , err := r .fetchAndUpdateReferences (ctx , & FetchOptions {
652
- RefSpecs : r . cloneRefSpec ( o , c ) ,
653
+ RefSpecs : c . Fetch ,
653
654
Depth : o .Depth ,
654
655
Auth : o .Auth ,
655
656
Progress : o .Progress ,
@@ -719,21 +720,26 @@ const (
719
720
refspecSingleBranchHEAD = "+HEAD:refs/remotes/%s/HEAD"
720
721
)
721
722
722
- func (r * Repository ) cloneRefSpec (o * CloneOptions , c * config.RemoteConfig ) []config.RefSpec {
723
- var rs string
724
-
723
+ func (r * Repository ) cloneRefSpec (o * CloneOptions ) []config.RefSpec {
725
724
switch {
726
725
case o .ReferenceName .IsTag ():
727
- rs = fmt .Sprintf (refspecTag , o .ReferenceName .Short ())
726
+ return []config.RefSpec {
727
+ config .RefSpec (fmt .Sprintf (refspecTag , o .ReferenceName .Short ())),
728
+ }
728
729
case o .SingleBranch && o .ReferenceName == plumbing .HEAD :
729
- rs = fmt .Sprintf (refspecSingleBranchHEAD , c .Name )
730
+ return []config.RefSpec {
731
+ config .RefSpec (fmt .Sprintf (refspecSingleBranchHEAD , o .RemoteName )),
732
+ config .RefSpec (fmt .Sprintf (refspecSingleBranch , plumbing .Master .Short (), o .RemoteName )),
733
+ }
730
734
case o .SingleBranch :
731
- rs = fmt .Sprintf (refspecSingleBranch , o .ReferenceName .Short (), c .Name )
735
+ return []config.RefSpec {
736
+ config .RefSpec (fmt .Sprintf (refspecSingleBranch , o .ReferenceName .Short (), o .RemoteName )),
737
+ }
732
738
default :
733
- return c .Fetch
739
+ return []config.RefSpec {
740
+ config .RefSpec (fmt .Sprintf (config .DefaultFetchRefSpec , o .RemoteName )),
741
+ }
734
742
}
735
-
736
- return []config.RefSpec {config .RefSpec (rs )}
737
743
}
738
744
739
745
func (r * Repository ) setIsBare (isBare bool ) error {
@@ -751,9 +757,7 @@ func (r *Repository) updateRemoteConfigIfNeeded(o *CloneOptions, c *config.Remot
751
757
return nil
752
758
}
753
759
754
- c .Fetch = []config.RefSpec {config .RefSpec (fmt .Sprintf (
755
- refspecSingleBranch , head .Name ().Short (), c .Name ,
756
- ))}
760
+ c .Fetch = r .cloneRefSpec (o )
757
761
758
762
cfg , err := r .Storer .Config ()
759
763
if err != nil {
0 commit comments