|
@@ -56,6 +56,11 @@ def _fetch_remote(remote): |
|
|
remote.fetch() ### TODO: show progress |
|
|
remote.fetch() ### TODO: show progress |
|
|
print(" done.") |
|
|
print(" done.") |
|
|
|
|
|
|
|
|
|
|
|
def _is_up_to_date(repo, branch, upstream): |
|
|
|
|
|
"""Return whether *branch* is up-to-date with its *upstream*.""" |
|
|
|
|
|
base = repo.git.merge_base(branch.commit, upstream.commit) |
|
|
|
|
|
return repo.commit(base) == upstream.commit |
|
|
|
|
|
|
|
|
def _rebase(repo, name): |
|
|
def _rebase(repo, name): |
|
|
"""Rebase the current HEAD of *repo* onto the branch *name*.""" |
|
|
"""Rebase the current HEAD of *repo* onto the branch *name*.""" |
|
|
print(" rebasing...", end="") |
|
|
print(" rebasing...", end="") |
|
@@ -101,7 +106,12 @@ def _update_branch(repo, branch, merge, rebase, stasher=None): |
|
|
if not upstream: |
|
|
if not upstream: |
|
|
print(" skipped: no upstream is tracked.") |
|
|
print(" skipped: no upstream is tracked.") |
|
|
return |
|
|
return |
|
|
if branch.commit == upstream.commit: ### TODO: a better check is possible |
|
|
|
|
|
|
|
|
try: |
|
|
|
|
|
branch.commit, upstream.commit |
|
|
|
|
|
except ValueError: |
|
|
|
|
|
print(" skipped: branch contains no revisions.") |
|
|
|
|
|
return |
|
|
|
|
|
if _is_up_to_date(repo, branch, upstream): |
|
|
print(" up to date.") |
|
|
print(" up to date.") |
|
|
return |
|
|
return |
|
|
if stasher: |
|
|
if stasher: |
|
|