Limit the rebase-update call after reparent-branch
Previously, `git reparent-branch` would call `git rebase-update
--no-fetch` effectively rebasing all branches. Limit the branches to
update to the one being moved and its dependants.
Change-Id: Ifb9f5b0ab4afe18f9c642ca47d683d9f3745bede
Reviewed-on: https://chromium-review.googlesource.com/c/1476393
Commit-Queue: Robbie Iannucci <iannucci@chromium.org>
Reviewed-by: Robbie Iannucci <iannucci@chromium.org>
diff --git a/git_reparent_branch.py b/git_reparent_branch.py
index f9b0442..00ee742 100755
--- a/git_reparent_branch.py
+++ b/git_reparent_branch.py
@@ -12,6 +12,7 @@
from git_common import upstream, current_branch, run, tags, set_branch_config
from git_common import get_or_create_merge_base, root, manual_merge_base
+from git_common import get_branch_tree, topo_iter
import git_rebase_update
@@ -81,8 +82,13 @@
manual_merge_base(branch, mbase, new_parent)
- # TODO(iannucci): ONLY rebase-update the branch which moved (and dependants)
- return git_rebase_update.main(['--no-fetch'])
+ # ONLY rebase-update the branch which moved (and dependants)
+ _, branch_tree = get_branch_tree()
+ branches = [branch]
+ for branch, parent in topo_iter(branch_tree):
+ if parent in branches:
+ branches.append(branch)
+ return git_rebase_update.main(['--no-fetch'] + branches)
if __name__ == '__main__': # pragma: no cover