Remember what branches we delete and do not try to reparent them in cleanup.

R=agable@chromium.org
BUG=357367

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@260704 0039d316-1c4b-4281-b951-d872f2087c98
experimental/szager/collated-output
iannucci@chromium.org 11 years ago
parent b1391c6a68
commit 512d97d412

@ -74,6 +74,7 @@ def remove_empty_branches(branch_tree):
tag_set = git.tags()
ensure_root_checkout = git.once(lambda: git.run('checkout', git.root()))
deletions = set()
downstreams = collections.defaultdict(list)
for branch, parent in git.topo_iter(branch_tree, top_down=False):
downstreams[parent].append(branch)
@ -84,6 +85,9 @@ def remove_empty_branches(branch_tree):
logging.debug('branch %s merged to %s', branch, parent)
for down in downstreams[branch]:
if down in deletions:
continue
if parent in tag_set:
git.set_branch_config(down, 'remote', '.')
git.set_branch_config(down, 'merge', 'refs/tags/%s' % parent)
@ -94,6 +98,7 @@ def remove_empty_branches(branch_tree):
print ('Reparented %s to track %s (was tracking %s)'
% (down, parent, branch))
deletions.add(branch)
print git.run('branch', '-d', branch)

@ -116,6 +116,9 @@ class GitRebaseUpdateTest(git_test_utils.GitRepoReadWriteTestBase):
output, _ = self.repo.capture_stdio(self.reup.main)
self.assertIn('Cannot rebase-update', output)
self.repo.run(self.nb.main, ['empty_branch'])
self.repo.run(self.nb.main, ['--upstream_current', 'empty_branch2'])
self.repo.git('checkout', 'branch_K')
output, _ = self.repo.capture_stdio(self.reup.main)
@ -126,6 +129,8 @@ class GitRebaseUpdateTest(git_test_utils.GitRepoReadWriteTestBase):
self.assertIn('Rebasing: foobar', output)
self.assertIn('Rebasing: sub_K', output)
self.assertIn('Deleted branch branch_G', output)
self.assertIn('Deleted branch empty_branch', output)
self.assertIn('Deleted branch empty_branch2', output)
self.assertIn('Reparented branch_K to track origin/master', output)
self.assertSchema("""

Loading…
Cancel
Save