summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2009-04-18 14:53:39 -0700
committerShawn O. Pearce <sop@google.com>2009-04-18 14:53:39 -0700
commit0f0dfa3930bc16078ef0b1a00ff6849333038fc7 (patch)
treee802a68c96d4132199aa2a9d721a56403e0d12d2
parent76ca9f8145f367f83df19981da4dd934fdda471b (diff)
downloadgit-repo-0f0dfa3930bc16078ef0b1a00ff6849333038fc7.tar.gz
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>
-rw-r--r--project.py6
-rw-r--r--subcmds/start.py8
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):
782 cmd = ['checkout', name, '--'] 782 cmd = ['checkout', name, '--']
783 return GitCommand(self, 783 return GitCommand(self,
784 cmd, 784 cmd,
785 capture_stdout = True).Wait() == 0 785 capture_stdout = True,
786 capture_stderr = True).Wait() == 0
786 787
787 branch = self.GetBranch(name) 788 branch = self.GetBranch(name)
788 branch.remote = self.GetRemote(self.remote.name) 789 branch.remote = self.GetRemote(self.remote.name)
@@ -817,7 +818,8 @@ class Project(object):
817 cmd = ['checkout', '-b', branch.name, rev] 818 cmd = ['checkout', '-b', branch.name, rev]
818 if GitCommand(self, 819 if GitCommand(self,
819 cmd, 820 cmd,
820 capture_stdout = True).Wait() == 0: 821 capture_stdout = True,
822 capture_stderr = True).Wait() == 0:
821 branch.Save() 823 branch.Save()
822 return True 824 return True
823 return False 825 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 @@
16import sys 16import sys
17from command import Command 17from command import Command
18from git_command import git 18from git_command import git
19from progress import Progress
19 20
20class Start(Command): 21class Start(Command):
21 common = True 22 common = True
@@ -38,9 +39,14 @@ revision specified in the manifest.
38 sys.exit(1) 39 sys.exit(1)
39 40
40 err = [] 41 err = []
41 for project in self.GetProjects(args[1:]): 42 all = self.GetProjects(args[1:])
43
44 pm = Progress('Starting %s' % nb, len(all))
45 for project in all:
46 pm.update()
42 if not project.StartBranch(nb): 47 if not project.StartBranch(nb):
43 err.append(project) 48 err.append(project)
49 pm.end()
44 50
45 if err: 51 if err:
46 err.sort() 52 err.sort()