From 0f0dfa3930bc16078ef0b1a00ff6849333038fc7 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Sat, 18 Apr 2009 14:53:39 -0700 Subject: [PATCH] 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 --- project.py | 6 ++++-- subcmds/start.py | 8 +++++++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/project.py b/project.py index 0a761ef4..10a9b257 100644 --- a/project.py +++ b/project.py @@ -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 diff --git a/subcmds/start.py b/subcmds/start.py index d30949f7..49bb0e1a 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 @@ 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()