Fix regression: can fetch branches and tags references without specifying commit hashes for private git repository used as context (#1823)

* [FIX] can fetch tags and branches refs without specifying commit hashes

* [ENH] more precise comment
This commit is contained in:
Guillaume Calmettes 2021-12-24 21:13:45 +01:00 committed by GitHub
parent e38b0c8d90
commit d2f3e896cd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 1 deletions

View File

@ -68,11 +68,19 @@ func (g *Git) UnpackTarFromBuildContext() (string, error) {
RecurseSubmodules: getRecurseSubmodules(g.opts.GitRecurseSubmodules),
}
var fetchRef string
var checkoutRef string
if len(parts) > 1 {
if plumbing.IsHash(parts[1]) || !strings.HasPrefix(parts[1], "refs/pull/") {
// Handle any non-branch refs separately. First, clone the repo HEAD, and
// then fetch and check out the fetchRef.
fetchRef = parts[1]
if plumbing.IsHash(parts[1]) {
checkoutRef = fetchRef
} else {
// The ReferenceName still needs to be present in the options passed
// to the clone operation for non-hash references of private repositories.
options.ReferenceName = plumbing.ReferenceName(fetchRef)
}
} else {
// Branches will be cloned directly.
options.ReferenceName = plumbing.ReferenceName(parts[1])
@ -104,7 +112,6 @@ func (g *Git) UnpackTarFromBuildContext() (string, error) {
}
}
checkoutRef := fetchRef
if len(parts) > 2 {
checkoutRef = parts[2]
}