From 9f273d01c0d566df0b80283047cf9950c207835d Mon Sep 17 00:00:00 2001 From: Henrique Ferreiro Date: Fri, 22 Feb 2019 10:10:27 +0000 Subject: [PATCH] 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 Reviewed-by: Robbie Iannucci --- git_reparent_branch.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/git_reparent_branch.py b/git_reparent_branch.py index f9b04421b..00ee742c7 100755 --- a/git_reparent_branch.py +++ b/git_reparent_branch.py @@ -12,6 +12,7 @@ import subprocess2 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 @@ def main(args): 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