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)
 	}