aboutsummaryrefslogtreecommitdiff
path: root/git-codereview
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2015-01-08 11:12:05 -0500
committerRuss Cox <rsc@golang.org>2015-01-14 04:14:33 +0000
commitd11f6622d1badfd67a43d6a5aaf0d2fbc17f1ae8 (patch)
tree098ca554b4f3ad9ab01931e3b1d3392ecda6a7c5 /git-codereview
parentb04be3e1cc037e92528d24a6f71d49bbade90636 (diff)
downloadgo-x-review-d11f6622d1badfd67a43d6a5aaf0d2fbc17f1ae8.tar.xz
git-codereview: diagnose local tracking branch ahead of remote
Otherwise the git change error is a bit confusing. Change-Id: I8bacac175417231284a238a078e5ea9513866943 Reviewed-on: https://go-review.googlesource.com/2786 Reviewed-by: Andrew Gerrand <adg@golang.org>
Diffstat (limited to 'git-codereview')
-rw-r--r--git-codereview/change.go3
-rw-r--r--git-codereview/change_test.go13
2 files changed, 16 insertions, 0 deletions
diff --git a/git-codereview/change.go b/git-codereview/change.go
index 1741b4f..2a66533 100644
--- a/git-codereview/change.go
+++ b/git-codereview/change.go
@@ -142,6 +142,9 @@ func checkoutOrCreate(target string) {
// Otherwise, inherit HEAD and upstream from the current branch.
b := CurrentBranch()
if b.HasPendingCommit() {
+ if !b.IsLocalOnly() {
+ dief("bad repo state: branch %s is ahead of origin/%s", b.Name, b.Name)
+ }
dief("cannot branch from work branch; change back to %v first.", strings.TrimPrefix(b.OriginBranch(), "origin/"))
}
diff --git a/git-codereview/change_test.go b/git-codereview/change_test.go
index daf06e3..524c021 100644
--- a/git-codereview/change_test.go
+++ b/git-codereview/change_test.go
@@ -44,6 +44,19 @@ func TestChangeHEAD(t *testing.T) {
testPrintedStderr(t, "invalid branch name \"HeAd\": ref name HEAD is reserved for git")
}
+func TestChangeAhead(t *testing.T) {
+ gt := newGitTest(t)
+ defer gt.done()
+
+ // commit to master (mistake)
+ write(t, gt.client+"/file", "new content")
+ trun(t, gt.client, "git", "add", "file")
+ trun(t, gt.client, "git", "commit", "-m", "msg")
+
+ testMainDied(t, "change", "work")
+ testPrintedStderr(t, "bad repo state: branch master is ahead of origin/master")
+}
+
func TestMessageRE(t *testing.T) {
for _, c := range []struct {
in string