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/git/git_test.go b/internal/git/git_test.go
index c87c53b..36ff9a4 100644
--- a/internal/git/git_test.go
+++ b/internal/git/git_test.go
@@ -481,3 +481,16 @@
 	assert.NilError(t, err)
 	assert.Assert(t, !ok)
 }
+
+func TestResolveRemoteSymbolicRef(t *testing.T) {
+	remote := "remote"
+
+	CommandRunnerImpl = cmd.FakeCommandRunner{
+		ExpectedDir: "foo",
+		ExpectedCmd: []string{"git", "ls-remote", "-q", "--symref", "--exit-code", remote, "HEAD"},
+		Stdout:      "ref: refs/heads/main\tHEAD\n5f6803b100bb3cd0f534e96e88c91373e8ed1c44\tHEAD\n",
+	}
+	ref, err := ResolveRemoteSymbolicRef("foo", remote, "HEAD")
+	assert.NilError(t, err)
+	assert.Equal(t, ref, "refs/heads/main")
+}