Parse output of 'git status' more conservatively.
Also make 'review sync' say when it has switched back to master.
Change-Id: I9f17e32e9d306eb3193103da36796877967059d2
diff --git a/review.go b/review.go
index ed5267a..cb4309e 100644
--- a/review.go
+++ b/review.go
@@ -103,9 +103,10 @@
if !hasStagedChanges() {
dief("no staged changes.\nDid you forget to 'git add'?")
}
- if currentBranch() != "master" {
- dief("must run 'create' from the master branch.\n" +
- "(Try 'review sync' or 'git checkout master' first.)")
+ if b := currentBranch(); b != "master" {
+ dief("must run 'create' from the master branch (now on %q).\n"+
+ "(Try 'review sync' or 'git checkout master' first.)",
+ b)
}
run("git", "checkout", "-q", "-b", name)
if err := runErr("git", "commit", "-q"); err != nil {
@@ -152,6 +153,8 @@
run("git", "checkout", "-q", "master")
run("git", "merge", "-q", "--ff-only", "origin/master")
run("git", "branch", "-q", "-d", branch)
+ fmt.Printf("Change on %q submitted; branch deleted.\n"+
+ "On master branch.\n", branch)
return
}
@@ -163,10 +166,11 @@
if headSubmitted(branch) {
run("git", "checkout", "-q", "master")
run("git", "merge", "-q", "--ff-only", "origin/master")
- fmt.Fprintf(os.Stderr, "Switched back to master from %q, "+
- "which I think has been submitted.\n"+
- "If you agree, and no longer need branch %q, run:\n"+
- "\tgit branch -D %v\n",
+ fmt.Fprintf(os.Stderr,
+ "I think the change on %q has been submitted.\n"+
+ "If you agree, and no longer need branch %q, "+
+ "run:\n\tgit branch -D %v\n"+
+ "On master branch.\n",
branch, branch, branch)
return
}
@@ -267,14 +271,7 @@
}
func currentBranch() string {
- const p = "## "
- for _, s := range gitStatus() {
- if strings.HasPrefix(s, p) {
- return strings.TrimPrefix(s, p)
- }
- }
- dief("could not find current branch with 'git status'.")
- panic("unreachable")
+ return strings.TrimSpace(runOutput("git", "rev-parse", "--abbrev-ref", "HEAD"))
}
func gitStatus() []string {