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 15:13:45 -05:00
committed by GitHub
parent e38b0c8d90
commit d2f3e896cd
+8 -1
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]
}