From 6da17751ca4e3b90834ca763f448ddc39b32651b Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Wed, 11 Sep 2019 18:43:17 -0400 Subject: prune: handle branches that track missing branches Series of steps: * Create a local "b1" branch with `repo start b1` that tracks a remote branch (totally fine) * Manually create a local "b2" branch with `git branch --track b1 b2` that tracks the local "b1" (uh-oh...) * Delete the local "b1" branch manually or via `repo prune` (....) * Try to process the "b2" branch with `repo prune` Since b2 tracks a branch that no longer exists, everything blows up at this point as we try to probe the non-existent ref. Instead, we should flag this as unknown and leave it up to the user to resolve. This probably could come up if a local branch was tracking a remote branch that was deleted from the server, and users ran something like `repo sync --prune` which cleaned up the remote refs. Bug: https://crbug.com/gerrit/11485 Change-Id: I6b6b6041943944b8efa6e2ad0b8b10f13a75a5c2 Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/236793 Reviewed-by: David Pursehouse Reviewed-by: Kirtika Ruchandani Reviewed-by: Mike Frysinger Tested-by: Mike Frysinger --- subcmds/prune.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'subcmds/prune.py') diff --git a/subcmds/prune.py b/subcmds/prune.py index dc8b8c9d..ff2fba1d 100644 --- a/subcmds/prune.py +++ b/subcmds/prune.py @@ -51,11 +51,16 @@ class Prune(PagedCommand): out.project('project %s/' % project.relpath) out.nl() - commits = branch.commits - date = branch.date - print('%s %-33s (%2d commit%s, %s)' % ( + print('%s %-33s ' % ( branch.name == project.CurrentBranch and '*' or ' ', - branch.name, + branch.name), end='') + + if not branch.base_exists: + print('(ignoring: tracking branch is gone: %s)' % (branch.base,)) + else: + commits = branch.commits + date = branch.date + print('(%2d commit%s, %s)' % ( len(commits), len(commits) != 1 and 's' or ' ', date)) -- cgit v1.2.3-54-g00ecf