[git-llvm] Do not reinvent `@{upstream}` (take 2)
authorDavid Zarzycki <dave@znu.io>
Tue, 17 Sep 2019 04:44:13 +0000 (04:44 +0000)
committerDavid Zarzycki <dave@znu.io>
Tue, 17 Sep 2019 04:44:13 +0000 (04:44 +0000)
This makes git-llvm more of a thin wrapper around git while temporarily
maintaining backwards compatibility with past git-llvm behavior.

Using @{upstream} makes git-llvm more robust when used with a nontrivial
local repository.

https://reviews.llvm.org/D67389

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372070 91177308-0d34-0410-b5e6-96231b3b80d8

utils/git-svn/git-llvm

index 3ab9d31b4b157a3debfb8826a05e0a2fe6278cf9..debe6a5ea2007019468949cff1d8fb963cf31a27 100755 (executable)
@@ -191,16 +191,16 @@ def program_exists(cmd):
 
 
 def get_default_rev_range():
-    # Get the branch tracked by the current branch, as set by
-    # git branch --set-upstream-to  See http://serverfault.com/a/352236/38694.
-    cur_branch = git('rev-parse', '--symbolic-full-name', 'HEAD')
-    upstream_branch = git('for-each-ref', '--format=%(upstream:short)',
-                          cur_branch)
-    if not upstream_branch:
-        upstream_branch = 'origin/master'
-
     # Get the newest common ancestor between HEAD and our upstream branch.
-    upstream_rev = git('merge-base', 'HEAD', upstream_branch)
+    upstream_rev = git('merge-base', 'HEAD', '@{upstream}', ignore_errors=True)
+    if not upstream_rev:
+        eprint("Warning: git-llvm assumes that origin/master is the upstream "
+               "branch but git does not.")
+        eprint("To make this warning go away: git branch -u origin/master")
+        eprint("To avoid this warning when creating branches: "
+               "git checkout -b MyBranchName origin/master")
+        upstream_rev = git('merge-base', 'HEAD', 'origin/master')
+
     return '%s..' % upstream_rev