summaryrefslogtreecommitdiffstats
path: root/subcmds/sync.py
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2009-04-10 16:48:52 -0700
committerShawn O. Pearce <sop@google.com>2009-04-10 19:01:04 -0700
commit68194f42b0b0e59f206b8e997c26f6a16b74fd4f (patch)
treec9a0a35ed66be9c0321e8ecf896d283bc0af763a /subcmds/sync.py
parentb1562faee09fe9eb84ea2d1eaf52bf841e2fe811 (diff)
downloadgit-repo-68194f42b0b0e59f206b8e997c26f6a16b74fd4f.tar.gz
Add a project progress meter to 'repo sync'
This way users can see how much is left during fetch. Its especially useful when most syncs are no-ops but there are hundreds of repositories to poll. Signed-off-by: Shawn O. Pearce <sop@google.com>
Diffstat (limited to 'subcmds/sync.py')
-rw-r--r--subcmds/sync.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/subcmds/sync.py b/subcmds/sync.py
index 21e0899a..79ffcf51 100644
--- a/subcmds/sync.py
+++ b/subcmds/sync.py
@@ -23,6 +23,7 @@ from git_command import GIT
23from command import Command, MirrorSafeCommand 23from command import Command, MirrorSafeCommand
24from error import RepoChangedException, GitError 24from error import RepoChangedException, GitError
25from project import R_HEADS 25from project import R_HEADS
26from progress import Progress
26 27
27class Sync(Command, MirrorSafeCommand): 28class Sync(Command, MirrorSafeCommand):
28 common = True 29 common = True
@@ -71,12 +72,16 @@ revision is temporarily needed.
71 72
72 def _Fetch(self, *projects): 73 def _Fetch(self, *projects):
73 fetched = set() 74 fetched = set()
75 pm = Progress('Fetching projects', len(projects))
74 for project in projects: 76 for project in projects:
77 pm.update()
78
75 if project.Sync_NetworkHalf(): 79 if project.Sync_NetworkHalf():
76 fetched.add(project.gitdir) 80 fetched.add(project.gitdir)
77 else: 81 else:
78 print >>sys.stderr, 'error: Cannot fetch %s' % project.name 82 print >>sys.stderr, 'error: Cannot fetch %s' % project.name
79 sys.exit(1) 83 sys.exit(1)
84 pm.end()
80 return fetched 85 return fetched
81 86
82 def Execute(self, opt, args): 87 def Execute(self, opt, args):
@@ -130,12 +135,14 @@ revision is temporarily needed.
130 missing.append(project) 135 missing.append(project)
131 self._Fetch(*missing) 136 self._Fetch(*missing)
132 137
138 pm = Progress('Syncing work tree', len(all))
133 for project in all: 139 for project in all:
140 pm.update()
134 if project.worktree: 141 if project.worktree:
135 if not project.Sync_LocalHalf( 142 if not project.Sync_LocalHalf(
136 detach_head=opt.detach_head): 143 detach_head=opt.detach_head):
137 sys.exit(1) 144 sys.exit(1)
138 145 pm.end()
139 146
140def _VerifyTag(project): 147def _VerifyTag(project):
141 gpg_dir = os.path.expanduser('~/.repoconfig/gnupg') 148 gpg_dir = os.path.expanduser('~/.repoconfig/gnupg')