diff --git a/git_reparent_branch.py b/git_reparent_branch.py index be44bc6cb..f9b04421b 100755 --- a/git_reparent_branch.py +++ b/git_reparent_branch.py @@ -31,6 +31,7 @@ def main(args): # TODO(iannucci): Allow specification of the branch-to-reparent branch = current_branch() + if opts.root: new_parent = root_ref elif opts.lkgr: @@ -46,6 +47,16 @@ def main(args): if new_parent == cur_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) all_tags = tags() diff --git a/tests/git_rebase_update_test.py b/tests/git_rebase_update_test.py index 976d9a6d0..e8d7d5f90 100755 --- a/tests/git_rebase_update_test.py +++ b/tests/git_rebase_update_test.py @@ -387,6 +387,14 @@ class GitRebaseUpdateTest(git_test_utils.GitRepoReadWriteTestBase): 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__': sys.exit(coverage_utils.covered_main((