sync: Show number of running fetch jobs
Last of the recent `repo sync` UX changes. Show number of fetch jobs eg:
"Fetching: 3% (8/251) 0:03 | 8 jobs | 0:01 chromiumos/overlays/chrom.."
Bug: https://crbug.com/gerrit/11293
Change-Id: I1b3dcf3e56ae6731c6c6cb73cfce069b2f374b69
Reviewed-on: https://gerrit-review.googlesource.com/c/git-repo/+/374920
Reviewed-by: Josip Sokcevic <sokcevic@google.com>
Commit-Queue: Gavin Mak <gavinmak@google.com>
Tested-by: Gavin Mak <gavinmak@google.com>
Reviewed-by: Joanna Wang <jojwang@google.com>
diff --git a/progress.py b/progress.py
index 6686ad4..69c9592 100644
--- a/progress.py
+++ b/progress.py
@@ -76,6 +76,10 @@
return ret
+def jobs_str(total):
+ return f"{total} job{'s' if total > 1 else ''}"
+
+
class Progress(object):
def __init__(
self,
@@ -170,10 +174,7 @@
else:
p = (100 * self._done) / self._total
if self._show_jobs:
- jobs = "[%d job%s] " % (
- self._active,
- "s" if self._active > 1 else "",
- )
+ jobs = f"[{jobs_str(self._active)}] "
else:
jobs = ""
if self._show_elapsed:
diff --git a/subcmds/sync.py b/subcmds/sync.py
index da9918b..a44ed5b 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -66,7 +66,7 @@
from error import RepoChangedException, GitError
import platform_utils
from project import SyncBuffer
-from progress import Progress, elapsed_str
+from progress import Progress, elapsed_str, jobs_str
from repo_trace import Trace
import ssh
from wrapper import Wrapper
@@ -673,7 +673,7 @@
def _FetchInitChild(cls, ssh_proxy):
cls.ssh_proxy = ssh_proxy
- def _GetLongestSyncMessage(self):
+ def _GetSyncProgressMessage(self):
if len(self._sync_dict) == 0:
return None
@@ -685,7 +685,8 @@
earliest_proj = project
elapsed = time.time() - earliest_time
- return f"{elapsed_str(elapsed)} {earliest_proj}"
+ jobs = jobs_str(len(self._sync_dict))
+ return f"{jobs} | {elapsed_str(elapsed)} {earliest_proj}"
def _Fetch(self, projects, opt, err_event, ssh_proxy):
ret = True
@@ -707,7 +708,7 @@
def _MonitorSyncLoop():
while True:
- pm.update(inc=0, msg=self._GetLongestSyncMessage())
+ pm.update(inc=0, msg=self._GetSyncProgressMessage())
if sync_event.wait(timeout=1):
return