misc/makerelease/makerelease.go | 43 +++++++++++++++++++++++++++++++++---------- diff --git a/misc/makerelease/makerelease.go b/misc/makerelease/makerelease.go index e94efdbceeed48e327cef832f875859dce5cab75..3b511b1db85c24a5b3999d40c8a18611d61f6ad8 100644 --- a/misc/makerelease/makerelease.go +++ b/misc/makerelease/makerelease.go @@ -14,6 +14,7 @@ "bytes" "compress/gzip" "crypto/sha1" "encoding/json" + "errors" "flag" "fmt" "io" @@ -30,7 +31,7 @@ "runtime" "strings" "code.google.com/p/goauth2/oauth" - storage "code.google.com/p/google-api-go-client/storage/v1beta2" + storage "code.google.com/p/google-api-go-client/storage/v1" ) var ( @@ -56,8 +57,8 @@ const ( blogPath = "golang.org/x/blog" toolPath = "golang.org/x/tools" tourPath = "code.google.com/p/go-tour" - defaultToolTag = "release-branch.go1.3" - defaultTourTag = "release-branch.go1.3" + defaultToolTag = "release-branch.go1.4" + defaultTourTag = "release-branch.go1.4" ) // Import paths for tool commands. @@ -504,16 +505,38 @@ return b.tour() } func (b *Build) get(repoPath, revision string) error { - // Fetch the packages (without building/installing). - _, err := b.run(b.gopath, filepath.Join(b.root, "bin", "go"), - "get", "-d", repoPath+"/...") - if err != nil { - return err + dest := filepath.Join(b.gopath, "src", filepath.FromSlash(repoPath)) + + if strings.HasPrefix(repoPath, "golang.org/x/") { + // For sub-repos, fetch the old Mercurial repo; bypass "go get". + // DO NOT import this special case into the git tree. + + if err := os.MkdirAll(filepath.Dir(dest), 0755); err != nil { + return err + } + repo := strings.Replace(repoPath, "golang.org/x/", "https://code.google.com/p/go.", 1) + if _, err := b.run(b.gopath, "hg", "clone", repo, dest); err != nil { + return err + } + } else { + // Fetch the packages (without building/installing). + _, err := b.run(b.gopath, filepath.Join(b.root, "bin", "go"), + "get", "-d", repoPath+"/...") + if err != nil { + return err + } } // Update the repo to the specified revision. - p := filepath.Join(b.gopath, "src", filepath.FromSlash(repoPath)) - _, err = b.run(p, "hg", "update", revision) + var err error + switch { + case exists(filepath.Join(dest, ".git")): + _, err = b.run(dest, "git", "checkout", revision) + case exists(filepath.Join(dest, ".hg")): + _, err = b.run(dest, "hg", "update", revision) + default: + err = errors.New("unknown version control system") + } return err }