diff --git a/cmd/tip/golangorg.go b/cmd/tip/golangorg.go
index f26a372..0ce4ca1 100644
--- a/cmd/tip/golangorg.go
+++ b/cmd/tip/golangorg.go
@@ -29,6 +29,12 @@
 }
 
 func (b golangorgBuilder) Init(logger *log.Logger, dir, hostport string, heads map[string]string) (*exec.Cmd, error) {
+	if _, ok := heads["go"]; !ok {
+		return nil, fmt.Errorf("missing HEAD revision for 'go' repo")
+	}
+	if _, ok := heads["website"]; !ok {
+		return nil, fmt.Errorf("missing HEAD revision for 'website' repo")
+	}
 	goDir := filepath.Join(dir, "go")
 	websiteDir := filepath.Join(dir, "website")
 	logger.Printf("checking out go repo ...")
diff --git a/cmd/tip/talks.go b/cmd/tip/talks.go
index cc1472e..f2e7cd6 100644
--- a/cmd/tip/talks.go
+++ b/cmd/tip/talks.go
@@ -24,6 +24,9 @@
 const talksToolsRev = "8cab8a1319f0be9798e7fe78b15da75e5f94b2e9"
 
 func (b talksBuilder) Init(logger *log.Logger, dir, hostport string, heads map[string]string) (*exec.Cmd, error) {
+	if _, ok := heads["talks"]; !ok {
+		return nil, fmt.Errorf("missing HEAD revision for 'talks' repo")
+	}
 	// TODO: use logger
 	toolsDir := filepath.Join(dir, "gopath/src/golang.org/x/tools")
 	if err := checkout(repoURL+"tools", talksToolsRev, toolsDir); err != nil {
diff --git a/cmd/tip/tip.go b/cmd/tip/tip.go
index 278a7da..744763b 100644
--- a/cmd/tip/tip.go
+++ b/cmd/tip/tip.go
@@ -302,7 +302,7 @@
 		if err := os.MkdirAll(filepath.Dir(path), 0755); err != nil {
 			return fmt.Errorf("mkdir: %v", err)
 		}
-		if err := runErr(exec.Command("git", "clone", "--depth", "1", repo, path)); err != nil {
+		if err := runErr(exec.Command("git", "clone", "--depth", "1", "--", repo, path)); err != nil {
 			return fmt.Errorf("clone: %v", err)
 		}
 	} else if err != nil {
@@ -315,7 +315,7 @@
 	if err := runErr(cmd); err != nil {
 		return fmt.Errorf("fetch: %v", err)
 	}
-	cmd = exec.Command("git", "reset", "--hard", hash)
+	cmd = exec.Command("git", "reset", "--hard", hash, "--")
 	cmd.Dir = path
 	if err := runErr(cmd); err != nil {
 		return fmt.Errorf("reset: %v", err)
@@ -334,6 +334,8 @@
 // latest master hash.
 // The returned map is nil on any transient error.
 func gerritMetaMap() map[string]string {
+	// TODO(dmitshur): Replace with a Gerrit client implementation like in gitmirror.
+
 	res, err := timeoutClient.Get(metaURL)
 	if err != nil {
 		log.Printf("Error getting Gerrit meta map: %v", err)
