|
|
@@ -28,14 +28,15 @@ class _ProgressMonitor(RemoteProgress): |
|
|
|
|
|
|
|
def __init__(self): |
|
|
|
super(_ProgressMonitor, self).__init__() |
|
|
|
self._started = False |
|
|
|
|
|
|
|
def update(self, op_code, cur_count, max_count=None, message=''): |
|
|
|
"""Called whenever progress changes. Overrides default behavior.""" |
|
|
|
if op_code & self.COUNTING: |
|
|
|
print(" ({0})".format(cur_count), end="") |
|
|
|
elif op_code & (self.COMPRESSING | self.RECEIVING): |
|
|
|
if op_code & (self.COMPRESSING | self.RECEIVING): |
|
|
|
if op_code & self.BEGIN: |
|
|
|
print("\b, ", end="") |
|
|
|
print("\b, " if self._started else " (", end="") |
|
|
|
if not self._started: |
|
|
|
self._started = True |
|
|
|
if op_code & self.END: |
|
|
|
end = ")" |
|
|
|
else: |
|
|
@@ -79,8 +80,7 @@ def _fetch_remotes(remotes): |
|
|
|
|
|
|
|
info = [("NEW_HEAD", "new branch", "new branches"), |
|
|
|
("NEW_TAG", "new tag", "new tags"), |
|
|
|
("FAST_FORWARD", "branch update", "branch updates"), |
|
|
|
("ERROR", "error", "errors")] |
|
|
|
("FAST_FORWARD", "branch update", "branch updates")] |
|
|
|
up_to_date = BLUE + "up to date" + RESET |
|
|
|
|
|
|
|
for remote in remotes: |
|
|
@@ -165,6 +165,19 @@ def _update_branch(repo, branch, merge, rebase, stasher=None): |
|
|
|
else: |
|
|
|
_merge(repo, upstream.name) |
|
|
|
|
|
|
|
def _update_branches(repo, active, merge, rebase): |
|
|
|
"""Update a list of branches.""" |
|
|
|
_update_branch(repo, active, merge, rebase) |
|
|
|
branches = set(repo.heads) - {active} |
|
|
|
if branches: |
|
|
|
stasher = _Stasher(repo) |
|
|
|
try: |
|
|
|
for branch in sorted(branches, key=lambda b: b.name): |
|
|
|
_update_branch(repo, branch, merge, rebase, stasher) |
|
|
|
finally: |
|
|
|
active.checkout() |
|
|
|
stasher.restore() |
|
|
|
|
|
|
|
def _update_repository(repo, current_only=False, rebase=False, merge=False): |
|
|
|
"""Update a single git repository by fetching remotes and rebasing/merging. |
|
|
|
|
|
|
@@ -189,19 +202,10 @@ def _update_repository(repo, current_only=False, rebase=False, merge=False): |
|
|
|
if not remotes: |
|
|
|
print(INDENT2, ERROR, "no remotes configured to pull from.") |
|
|
|
return |
|
|
|
_fetch_remotes(remotes) |
|
|
|
|
|
|
|
rebase = rebase or _read_config(repo, "pull.rebase") |
|
|
|
_update_branch(repo, active, merge, rebase) |
|
|
|
branches = set(repo.heads) - {active} |
|
|
|
if branches: |
|
|
|
stasher = _Stasher(repo) |
|
|
|
try: |
|
|
|
for branch in sorted(branches, key=lambda b: b.name): |
|
|
|
_update_branch(repo, branch, merge, rebase, stasher) |
|
|
|
finally: |
|
|
|
active.checkout() |
|
|
|
stasher.restore() |
|
|
|
|
|
|
|
_fetch_remotes(remotes) |
|
|
|
_update_branches(repo, active, merge, rebase) |
|
|
|
|
|
|
|
def _update_subdirectories(path, long_name, update_args): |
|
|
|
"""Update all subdirectories that are git repos in a given directory.""" |
|
|
|