Skip to content

Commit

Permalink
git: fix cloning with branch name
Browse files Browse the repository at this point in the history
Signed-off-by: Arieh Schneier <15041913+AriehSchneier@users.noreply.github.com>
  • Loading branch information
AriehSchneier committed May 3, 2023
1 parent 0542a30 commit a4b11ab
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 3 deletions.
16 changes: 14 additions & 2 deletions repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -1012,9 +1012,21 @@ func (r *Repository) fetchAndUpdateReferences(
return nil, err
}

resolvedRef, err := storer.ResolveReference(remoteRefs, ref)
var resolvedRef *plumbing.Reference
// return error from checking the raw ref passed in
var rawRefError error
for _, rule := range append([]string{"%s"}, plumbing.RefRevParseRules...) {
resolvedRef, err = storer.ResolveReference(remoteRefs, plumbing.ReferenceName(fmt.Sprintf(rule, ref)))

if err == nil {
break
} else if rawRefError == nil {
rawRefError = err
}
}

if err != nil {
return nil, err
return nil, rawRefError
}

refsUpdated, err := r.updateReferences(remote.c.Fetch, resolvedRef)
Expand Down
10 changes: 9 additions & 1 deletion repository_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1020,6 +1020,14 @@ func (s *RepositorySuite) TestCloneConfig(c *C) {
}

func (s *RepositorySuite) TestCloneSingleBranchAndNonHEAD(c *C) {
s.testCloneSingleBranchAndNonHEADReference(c, "refs/heads/branch")
}

func (s *RepositorySuite) TestCloneSingleBranchAndNonHEADAndNonFull(c *C) {
s.testCloneSingleBranchAndNonHEADReference(c, "branch")
}

func (s *RepositorySuite) testCloneSingleBranchAndNonHEADReference(c *C, ref string) {
r, _ := Init(memory.NewStorage(), nil)

head, err := r.Head()
Expand All @@ -1028,7 +1036,7 @@ func (s *RepositorySuite) TestCloneSingleBranchAndNonHEAD(c *C) {

err = r.clone(context.Background(), &CloneOptions{
URL: s.GetBasicLocalRepositoryURL(),
ReferenceName: plumbing.ReferenceName("refs/heads/branch"),
ReferenceName: plumbing.ReferenceName(ref),
SingleBranch: true,
})

Expand Down

0 comments on commit a4b11ab

Please sign in to comment.