Changeset 00a42bf04180…
Parent fbdf62764ba0…
by Benjamin Pollack <benjamin@fogcreek.com>
Changes to 2 files · Browse files at 00a42bf04180 Showing diff from parent fbdf62764ba0 Diff from another changeset...
@@ -3,6 +3,7 @@ import (
"encoding/json"
"fmt"
+ "net/url"
"strconv"
"strings"
)
@@ -147,20 +148,15 @@ return
}
-func (k *Client) MercurialEquivalent(repoPath, commit string) (hgSHAs []string, err error) {
+func (k *Client) MercurialEquivalents(repoPath string, commits []string) (equivalents map[string][]string, err error) {
var repoId int64
var resp []byte
- var fullSHA string
repoId, err = k.IdForRepo(repoPath)
if err != nil {
return
}
- fullSHA, err = k.ResolveSHA(commit)
- if err != nil {
- return
- }
- resp, err = k.apiGet(fmt.Sprintf("Repo/%v/History", repoId), apiParams{"revs": fullSHA})
+ resp, err = k.apiRequest(fmt.Sprintf("Repo/%v/History", repoId), url.Values{"revs": commits}, "GET")
if err != nil {
return
}
@@ -174,8 +170,9 @@ if err = json.Unmarshal(resp, &changesets); err != nil {
err = fmt.Errorf("unable to process response: %v", err)
} else {
+ equivalents = make(map[string][]string)
for _, changeset := range changesets {
- hgSHAs = append(hgSHAs, changeset.MercurialSHAs...)
+ equivalents[changeset.GitSHAs[0]] = changeset.MercurialSHAs
}
}
return
|
@@ -235,11 +235,20 @@ case "hg-sha":
if ensureArgs(3, "you must provide at least one commit SHA to lookup") {
requireAuth(k)
+ commits := make([]string, 0, len(os.Args)-2)
for _, commit := range os.Args[2:len(os.Args)] {
- if equivalent, err := k.MercurialEquivalent(repoPath, commit); err == nil {
- fmt.Printf("%v: %v\n", commit, equivalent)
+ if fullSHA, err := k.ResolveSHA(commit); err != nil {
+ fmt.Fprintf(os.Stderr, "WARNING: Unable to resolve %v\n", commit)
} else {
- fmt.Printf("%v: <none found> (%v)\n", commit, err)
+ commits = append(commits, fullSHA)
+ }
+ }
+ equivalents, err := k.MercurialEquivalents(repoPath, commits)
+ if err != nil {
+ fmt.Printf("Unable to look up Mercurial SHAs: %v\n", err)
+ } else {
+ for gitSHA, hgSHAs := range equivalents {
+ fmt.Printf("Git[%v]: Hg%v\n", gitSHA, hgSHAs)
}
}
}
|
Loading...