Add progress meter to 'repo start'
This is mostly useful if the number of projects to switch is many
(e.g. all of Android) and a large number of them are behind the
current manifest revision. We wind up needing to run git just to
make the working tree match, and that often makes the command take
a couple of seconds longer than we'd like.
Signed-off-by: Shawn O. Pearce <sop@google.com>
diff --git a/project.py b/project.py
index 0a761ef..10a9b25 100644
--- a/project.py
+++ b/project.py
@@ -782,7 +782,8 @@
cmd = ['checkout', name, '--']
return GitCommand(self,
cmd,
- capture_stdout = True).Wait() == 0
+ capture_stdout = True,
+ capture_stderr = True).Wait() == 0
branch = self.GetBranch(name)
branch.remote = self.GetRemote(self.remote.name)
@@ -817,7 +818,8 @@
cmd = ['checkout', '-b', branch.name, rev]
if GitCommand(self,
cmd,
- capture_stdout = True).Wait() == 0:
+ capture_stdout = True,
+ capture_stderr = True).Wait() == 0:
branch.Save()
return True
return False
diff --git a/subcmds/start.py b/subcmds/start.py
index d30949f..49bb0e1 100644
--- a/subcmds/start.py
+++ b/subcmds/start.py
@@ -16,6 +16,7 @@
import sys
from command import Command
from git_command import git
+from progress import Progress
class Start(Command):
common = True
@@ -38,9 +39,14 @@
sys.exit(1)
err = []
- for project in self.GetProjects(args[1:]):
+ all = self.GetProjects(args[1:])
+
+ pm = Progress('Starting %s' % nb, len(all))
+ for project in all:
+ pm.update()
if not project.StartBranch(nb):
err.append(project)
+ pm.end()
if err:
err.sort()