##// END OF EJS Templates
subrepo: add progress bar support to archive
Martin Geisler -
r13144:aae2d5cb default
parent child Browse files
Show More
@@ -274,6 +274,6 b' def archive(repo, dest, node, kind, deco'
274 274 if subrepos:
275 275 for subpath in ctx.substate:
276 276 sub = ctx.sub(subpath)
277 sub.archive(archiver, prefix)
277 sub.archive(repo.ui, archiver, prefix)
278 278
279 279 archiver.done()
@@ -304,13 +304,21 b' class abstractsubrepo(object):'
304 304 """return file flags"""
305 305 return ''
306 306
307 def archive(self, archiver, prefix):
308 for name in self.files():
307 def archive(self, ui, archiver, prefix):
308 files = self.files()
309 total = len(files)
310 relpath = subrelpath(self)
311 ui.progress(_('archiving (%s)') % relpath, 0,
312 unit=_('files'), total=total)
313 for i, name in enumerate(files):
309 314 flags = self.fileflags(name)
310 315 mode = 'x' in flags and 0755 or 0644
311 316 symlink = 'l' in flags
312 317 archiver.addfile(os.path.join(prefix, self._path, name),
313 318 mode, symlink, self.filedata(name))
319 ui.progress(_('archiving (%s)') % relpath, i + 1,
320 unit=_('files'), total=total)
321 ui.progress(_('archiving (%s)') % relpath, None)
314 322
315 323
316 324 class hgsubrepo(abstractsubrepo):
@@ -373,14 +381,14 b' class hgsubrepo(abstractsubrepo):'
373 381 self._repo.ui.warn(_('warning: error "%s" in subrepository "%s"\n')
374 382 % (inst, subrelpath(self)))
375 383
376 def archive(self, archiver, prefix):
377 abstractsubrepo.archive(self, archiver, prefix)
384 def archive(self, ui, archiver, prefix):
385 abstractsubrepo.archive(self, ui, archiver, prefix)
378 386
379 387 rev = self._state[1]
380 388 ctx = self._repo[rev]
381 389 for subpath in ctx.substate:
382 390 s = subrepo(ctx, subpath)
383 s.archive(archiver, os.path.join(prefix, self._path))
391 s.archive(ui, archiver, os.path.join(prefix, self._path))
384 392
385 393 def dirty(self):
386 394 r = self._state[1]
@@ -860,7 +868,7 b' class gitsubrepo(abstractsubrepo):'
860 868 else:
861 869 os.remove(path)
862 870
863 def archive(self, archiver, prefix):
871 def archive(self, ui, archiver, prefix):
864 872 source, revision = self._state
865 873 self._fetch(source, revision)
866 874
@@ -869,10 +877,16 b' class gitsubrepo(abstractsubrepo):'
869 877 # and objects with many subprocess calls.
870 878 tarstream = self._gitcommand(['archive', revision], stream=True)
871 879 tar = tarfile.open(fileobj=tarstream, mode='r|')
872 for info in tar:
880 relpath = subrelpath(self)
881 ui.progress(_('archiving (%s)') % relpath, 0, unit=_('files'))
882 for i, info in enumerate(tar):
873 883 archiver.addfile(os.path.join(prefix, self._relpath, info.name),
874 884 info.mode, info.issym(),
875 885 tar.extractfile(info).read())
886 ui.progress(_('archiving (%s)') % relpath, i + 1,
887 unit=_('files'))
888 ui.progress(_('archiving (%s)') % relpath, None)
889
876 890
877 891 types = {
878 892 'hg': hgsubrepo,
@@ -221,9 +221,47 b' Status between revisions:'
221 221 z1
222 222 +z2
223 223
224 Test archiving to a directory tree:
224 Enable progress extension for archive tests:
225
226 $ cp $HGRCPATH $HGRCPATH.no-progress
227 $ cat >> $HGRCPATH <<EOF
228 > [extensions]
229 > progress =
230 > [progress]
231 > assume-tty = 1
232 > delay = 0
233 > refresh = 0
234 > width = 60
235 > EOF
236
237 Test archiving to a directory tree (the doubled lines in the output
238 only show up in the test output, not in real usage):
239
240 $ hg archive --subrepos ../archive 2>&1 | $TESTDIR/filtercr.py
225 241
226 $ hg archive --subrepos ../archive
242 archiving [ ] 0/3
243 archiving [ ] 0/3
244 archiving [=============> ] 1/3
245 archiving [=============> ] 1/3
246 archiving [===========================> ] 2/3
247 archiving [===========================> ] 2/3
248 archiving [==========================================>] 3/3
249 archiving [==========================================>] 3/3
250
251 archiving (foo) [ ] 0/3
252 archiving (foo) [ ] 0/3
253 archiving (foo) [===========> ] 1/3
254 archiving (foo) [===========> ] 1/3
255 archiving (foo) [=======================> ] 2/3
256 archiving (foo) [=======================> ] 2/3
257 archiving (foo) [====================================>] 3/3
258 archiving (foo) [====================================>] 3/3
259
260 archiving (foo/bar) [ ] 0/1
261 archiving (foo/bar) [ ] 0/1
262 archiving (foo/bar) [================================>] 1/1
263 archiving (foo/bar) [================================>] 1/1
264 \r (esc)
227 265 $ find ../archive | sort
228 266 ../archive
229 267 ../archive/.hg_archival.txt
@@ -239,7 +277,35 b' Test archiving to a directory tree:'
239 277
240 278 Test archiving to zip file (unzip output is unstable):
241 279
242 $ hg archive --subrepos ../archive.zip
280 $ hg archive --subrepos ../archive.zip 2>&1 | $TESTDIR/filtercr.py
281
282 archiving [ ] 0/3
283 archiving [ ] 0/3
284 archiving [=============> ] 1/3
285 archiving [=============> ] 1/3
286 archiving [===========================> ] 2/3
287 archiving [===========================> ] 2/3
288 archiving [==========================================>] 3/3
289 archiving [==========================================>] 3/3
290
291 archiving (foo) [ ] 0/3
292 archiving (foo) [ ] 0/3
293 archiving (foo) [===========> ] 1/3
294 archiving (foo) [===========> ] 1/3
295 archiving (foo) [=======================> ] 2/3
296 archiving (foo) [=======================> ] 2/3
297 archiving (foo) [====================================>] 3/3
298 archiving (foo) [====================================>] 3/3
299
300 archiving (foo/bar) [ ] 0/1
301 archiving (foo/bar) [ ] 0/1
302 archiving (foo/bar) [================================>] 1/1
303 archiving (foo/bar) [================================>] 1/1
304 \r (esc)
305
306 Disable progress extension and cleanup:
307
308 $ mv $HGRCPATH.no-progress $HGRCPATH
243 309
244 310 Clone and test outgoing:
245 311
General Comments 0
You need to be logged in to leave comments. Login now