소스 검색

Add better error messages to git_reparent_branch.

R=dhsharp@chromium.org, vadimsh@chromium.org
BUG=538454

Review URL: https://codereview.chromium.org/1498163002

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@297848 0039d316-1c4b-4281-b951-d872f2087c98
iannucci@chromium.org 9 년 전
부모
커밋
f3e37a0fbb
2개의 변경된 파일19개의 추가작업 그리고 0개의 파일을 삭제
  1. 11 0
      git_reparent_branch.py
  2. 8 0
      tests/git_rebase_update_test.py

+ 11 - 0
git_reparent_branch.py

@@ -31,6 +31,7 @@ def main(args):
   # TODO(iannucci): Allow specification of the branch-to-reparent
   # TODO(iannucci): Allow specification of the branch-to-reparent
 
 
   branch = current_branch()
   branch = current_branch()
+
   if opts.root:
   if opts.root:
     new_parent = root_ref
     new_parent = root_ref
   elif opts.lkgr:
   elif opts.lkgr:
@@ -46,6 +47,16 @@ def main(args):
   if new_parent == cur_parent:
   if new_parent == cur_parent:
     parser.error('Cannot reparent a branch to its existing parent')
     parser.error('Cannot reparent a branch to its existing parent')
 
 
+  if not cur_parent:
+    msg = (
+      "Unable to determine %s@{upstream}.\n\nThis can happen if you didn't use "
+      "`git new-branch` to create the branch and haven't used "
+      "`git branch --set-upstream-to` to assign it one.\n\nPlease assign an "
+      "upstream branch and then run this command again."
+    )
+    print >> sys.stderr, msg % branch
+    return 1
+
   mbase = get_or_create_merge_base(branch, cur_parent)
   mbase = get_or_create_merge_base(branch, cur_parent)
 
 
   all_tags = tags()
   all_tags = tags()

+ 8 - 0
tests/git_rebase_update_test.py

@@ -387,6 +387,14 @@ class GitRebaseUpdateTest(git_test_utils.GitRepoReadWriteTestBase):
                   M H I J K L
                   M H I J K L
     """)
     """)
 
 
+  def testReparentBranchWithoutUpstream(self):
+    self.repo.git('branch', 'nerp')
+    self.repo.git('checkout', 'nerp')
+
+    _, err = self.repo.capture_stdio(self.rp.main, ['branch_K'])
+
+    self.assertIn('Unable to determine nerp@{upstream}', err)
+
 
 
 if __name__ == '__main__':
 if __name__ == '__main__':
   sys.exit(coverage_utils.covered_main((
   sys.exit(coverage_utils.covered_main((