diff --git a/gitup/update.py b/gitup/update.py index 07147db..dd8a06e 100644 --- a/gitup/update.py +++ b/gitup/update.py @@ -186,7 +186,8 @@ def _update_branch(repo, branch, merge, rebase, stasher=None): def _update_branches(repo, active, merge, rebase): """Update a list of branches.""" - _update_branch(repo, active, merge, rebase) + if active: + _update_branch(repo, active, merge, rebase) branches = set(repo.heads) - {active} if branches: stasher = _Stasher(repo) @@ -194,7 +195,8 @@ def _update_branches(repo, active, merge, rebase): for branch in sorted(branches, key=lambda b: b.name): _update_branch(repo, branch, merge, rebase, stasher) finally: - active.checkout() + if active: + active.checkout() stasher.restore() def _update_repository(repo, current_only=False, rebase=False, merge=False): @@ -209,9 +211,12 @@ def _update_repository(repo, current_only=False, rebase=False, merge=False): """ print(INDENT1, BOLD + os.path.split(repo.working_dir)[1] + ":") - active = repo.active_branch + try: + active = repo.active_branch + except TypeError: # Happens when HEAD is detached + active = None if current_only: - ref = active.tracking_branch() + ref = active.tracking_branch() if active else None if not ref: print(INDENT2, ERROR, "no remote tracked by current branch.") return