"strings"
)
-// goToolsVersion is the hg revision of the go.tools subrepo we need
+// goToolsVersion is the git revision of the x/tools subrepo we need
// to build cmd/api. This only needs to be updated whenever a go/types
// bug fix is needed by the cmd/api tool.
-const goToolsVersion = "6698ca2900e2"
+const goToolsVersion = "875ff2496f865e" // aka hg 6698ca2900e2
var goroot string
if goroot == "" {
log.Fatal("No $GOROOT set.")
}
- _, err := exec.LookPath("hg")
+ _, err := exec.LookPath("git")
if err != nil {
- fmt.Println("Skipping cmd/api checks; hg not available")
+ fmt.Println("Skipping cmd/api checks; git not available")
return
}
// The GOPATH we'll return
gopath := filepath.Join(os.TempDir(), "gopath-api-"+cleanUsername(username)+"-"+cleanUsername(strings.Fields(runtime.Version())[0]), goToolsVersion)
- // cloneDir is where we run "hg clone".
+ // cloneDir is where we run "git clone".
cloneDir := filepath.Join(gopath, "src", "code.google.com", "p")
// The dir we clone into. We only atomically rename it to finalDir on
if err := os.MkdirAll(cloneDir, 0700); err != nil {
log.Fatal(err)
}
- cmd := exec.Command("hg",
- "clone", "--rev="+goToolsVersion,
- "https://code.google.com/p/go.tools",
- tempBase)
+ cmd := exec.Command("git", "clone", "https://go.googlesource.com/tools", tempBase)
cmd.Dir = cloneDir
out, err := cmd.CombinedOutput()
if err != nil {
log.Printf("# Skipping API check; network appears to be unavailable")
os.Exit(0)
}
- log.Fatalf("Error running hg clone on go.tools: %v\n%s", err, out)
+ log.Fatalf("Error running git clone on x/tools: %v\n%s", err, out)
}
+ cmd = exec.Command("git", "reset", "--hard", goToolsVersion)
+ cmd.Dir = tmpDir
+ out, err = cmd.CombinedOutput()
+ if err != nil {
+ log.Fatalf("Error updating x/tools in %v to %v: %v, %s", tmpDir, goToolsVersion, err, out)
+ }
+
if err := os.Rename(tmpDir, finalDir); err != nil {
log.Fatal(err)
}
return false
}
- cmd := exec.Command("hg", "id", "--id")
+ cmd := exec.Command("git", "rev-parse", "HEAD")
cmd.Dir = dir
out, err := cmd.Output()
if err != nil {
return false
}
id := strings.TrimSpace(string(out))
- if id != goToolsVersion {
+ if !strings.HasPrefix(id, goToolsVersion) {
return false
}
- cmd = exec.Command("hg", "status")
+ cmd = exec.Command("git", "status", "--porcelain")
cmd.Dir = dir
out, err = cmd.Output()
- if err != nil || len(out) > 0 {
+ if err != nil || strings.TrimSpace(string(out)) != "" {
return false
}
-
return true
}