diff --git a/cmd/tip/golangorg.go b/cmd/tip/golangorg.go index f26a3725d0..0ce4ca1893 100644 --- a/cmd/tip/golangorg.go +++ b/cmd/tip/golangorg.go @@ -29,6 +29,12 @@ func (b golangorgBuilder) Signature(heads map[string]string) string { } 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 cc1472e4d5..f2e7cd6619 100644 --- a/cmd/tip/talks.go +++ b/cmd/tip/talks.go @@ -24,6 +24,9 @@ func (b talksBuilder) Signature(heads map[string]string) string { 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 278a7dae7a..744763b2bd 100644 --- a/cmd/tip/tip.go +++ b/cmd/tip/tip.go @@ -302,7 +302,7 @@ func checkout(repo, hash, path string) error { 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 @@ func checkout(repo, hash, path string) error { 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 @@ var timeoutClient = &http.Client{Timeout: 10 * time.Second} // 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)