resolve the default remote branch dynamically
Rather than hardcode or fall over between branches, look up the
default the remote repo is using, and go with that locally too.
BUG=chromium:1126855, b:173131586
TEST=`./run_tests.sh` passes
Change-Id: I2b6b4aeb6ea404e68d32673c807187c8061d9f16
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/infra/go/+/2693059
Reviewed-by: Julio Hurtado <juahurta@google.com>
Commit-Queue: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
diff --git a/internal/branch/common.go b/internal/branch/common.go
index fda68f6..b28c65c 100644
--- a/internal/branch/common.go
+++ b/internal/branch/common.go
@@ -15,6 +15,7 @@
"path"
"path/filepath"
"strconv"
+ "strings"
)
const VersionFileProjectPath = "src/third_party/chromiumos-overlay"
@@ -96,15 +97,18 @@
if err != nil {
return "", fmt.Errorf("failed to fetch %s: %s", projectUrl, output.Stderr)
}
- checkoutBranch := "master"
+ checkoutBranch := ""
if opts != nil && opts.Ref != "" {
checkoutBranch = git.StripRefs(opts.Ref)
+ } else {
+ remoteBranch, err := git.ResolveRemoteSymbolicRef(checkoutDir, "origin", "HEAD")
+ if err != nil {
+ return "", fmt.Errorf("unable to resolve %s HEAD: %s", projectUrl, err)
+ }
+ parts := strings.Split(remoteBranch, "/")
+ checkoutBranch = parts[len(parts)-1]
}
- // TODO: remove `master` when COIL is completed
- if err := git.Checkout(checkoutDir, checkoutBranch); err != nil && checkoutBranch == "master" {
- checkoutBranch = "main"
- err = git.Checkout(checkoutDir, checkoutBranch)
- }
+ err = git.Checkout(checkoutDir, checkoutBranch)
if err != nil {
return "", fmt.Errorf("failed to checkout %s", checkoutBranch)
}