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>
This commit is contained in:
Shawn O. Pearce 2009-04-18 14:53:39 -07:00
parent 76ca9f8145
commit 0f0dfa3930
2 changed files with 11 additions and 3 deletions

View File

@ -782,7 +782,8 @@ class Project(object):
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 @@ class Project(object):
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

View File

@ -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 @@ revision specified in the manifest.
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()