Create branches for projects with revision set

It turns out Initialize() was somewhat incomplete -- if a project has a
revision set (e.g. refs/heads/foo), then a branch needs to be created
for that revision.

BUG=chromium:980346
TEST=run_tests.sh

Change-Id: Ia5ac4d2c1b6bab5aa864ecf31b496bbe3852421a
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/infra/go/+/1712453
Commit-Queue: Jack Neus <jackneus@google.com>
Tested-by: Jack Neus <jackneus@google.com>
Reviewed-by: Evan Hernandez <evanhernandez@chromium.org>
diff --git a/internal/git/git_test.go b/internal/git/git_test.go
index 2be8fab..0587600 100644
--- a/internal/git/git_test.go
+++ b/internal/git/git_test.go
@@ -189,6 +189,19 @@
 	assert.NilError(t, err)
 }
 
+func TestCommitEmpty(t *testing.T) {
+	fakeGitRepo := "repo"
+	commitMsg := "commit"
+
+	CommandRunnerImpl = cmd.FakeCommandRunner{
+		ExpectedDir: fakeGitRepo,
+		ExpectedCmd: []string{"git", "commit", "-m", commitMsg, "--allow-empty"},
+	}
+
+	err := CommitEmpty(fakeGitRepo, commitMsg)
+	assert.NilError(t, err)
+}
+
 func TestPushChanges(t *testing.T) {
 	fakeGitRepo := "da-bank"
 	commitMsg := "da-money"
@@ -221,6 +234,25 @@
 	assert.NilError(t, err)
 }
 
+func TestPush(t *testing.T) {
+	fakeGitRepo := "repo"
+	localRef := "commitId"
+
+	remoteRef := RemoteRef{
+		Remote: "remote",
+		Ref:    "ref",
+	}
+
+	pushStr := fmt.Sprintf("%s:%s", localRef, remoteRef.Ref)
+	CommandRunnerImpl = cmd.FakeCommandRunner{
+		ExpectedDir: fakeGitRepo,
+		ExpectedCmd: []string{"git", "push", remoteRef.Remote, pushStr, "--dry-run"},
+	}
+
+	err := Push(fakeGitRepo, localRef, true, remoteRef)
+	assert.NilError(t, err)
+}
+
 func TestInit(t *testing.T) {
 	fakeGitRepo := "top-secret-project"