Bump master HEAD on 'review syncc' from feature branch.
Change-Id: I21b22defdbacb6c32d1220f385a48124f7ed295f
diff --git a/review.go b/review.go
index 26505cb..0806ca7 100644
--- a/review.go
+++ b/review.go
@@ -101,7 +101,7 @@
}
run("git", "checkout", "-q", "-b", name)
if err := runErr("git", "commit", "-q"); err != nil {
- verbosef("Commit failed: %v\nSwitching back to master.", err)
+ verbosef("Commit failed: %v\nSwitching back to master.\n", err)
run("git", "checkout", "-q", "master")
run("git", "branch", "-q", "-d", name)
}
@@ -134,11 +134,16 @@
run("git", "merge", "-q", "--ff-only", "origin/master")
return
}
- if commitSubmitted() {
+ if branchContains("origin/master", "HEAD") {
b := currentBranch()
run("git", "checkout", "-q", "master")
run("git", "merge", "-q", "--ff-only", "origin/master")
run("git", "branch", "-q", "-d", b)
+ return
+ }
+ if !branchContains("origin/master", "master") {
+ // Bump master HEAD to that of origin/master.
+ run("git", "branch", "-f", "master", "origin/master")
}
run("git", "rebase", "-q", "origin/master")
}
@@ -149,13 +154,13 @@
var stagedRe = regexp.MustCompile(`^[ACDMR] `)
-func commitSubmitted() bool {
- b, err := exec.Command("git", "branch", "-r", "--contains").CombinedOutput()
+func branchContains(branch, rev string) bool {
+ b, err := exec.Command("git", "branch", "-r", "--contains", rev).CombinedOutput()
if err != nil {
- dief("%s\nchecking for HEAD on remote branch: %v\n", b, err)
+ dief("%s\nchecking for %q on origin/master: %v\n", b, rev, err)
}
for _, s := range strings.Split(string(b), "\n") {
- if strings.TrimSpace(s) == "origin/master" {
+ if strings.TrimSpace(s) == branch {
return true
}
}