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