comparison mercurial/archival.py @ 16919:51932c835b74 stable

archive: make progress only show files that are actually archived Before this, files that are excluded (or not included) were shown when using progress bar or --debug. Reported by Andrew Shadura.
author Thomas Arendsen Hein <thomas@intevation.de>
date Tue, 12 Jun 2012 12:05:52 +0200
parents 774da7121fc9
children 1894dac619de
comparison
equal deleted inserted replaced
16880:15159abc5ab6 16919:51932c835b74
232 raise util.Abort(_('cannot give prefix when archiving to files')) 232 raise util.Abort(_('cannot give prefix when archiving to files'))
233 else: 233 else:
234 prefix = tidyprefix(dest, kind, prefix) 234 prefix = tidyprefix(dest, kind, prefix)
235 235
236 def write(name, mode, islink, getdata): 236 def write(name, mode, islink, getdata):
237 if matchfn and not matchfn(name):
238 return
239 data = getdata() 237 data = getdata()
240 if decode: 238 if decode:
241 data = repo.wwritedata(name, data) 239 data = repo.wwritedata(name, data)
242 archiver.addfile(prefix + name, mode, islink, data) 240 archiver.addfile(prefix + name, mode, islink, data)
243 241
263 tags = ''.join('latesttag: %s\n' % t for t in ltags.split(':')) 261 tags = ''.join('latesttag: %s\n' % t for t in ltags.split(':'))
264 tags += 'latesttagdistance: %s\n' % dist 262 tags += 'latesttagdistance: %s\n' % dist
265 263
266 return base + tags 264 return base + tags
267 265
268 write('.hg_archival.txt', 0644, False, metadata) 266 name = '.hg_archival.txt'
269 267 if not matchfn or matchfn(name):
270 total = len(ctx.manifest()) 268 write(name, 0644, False, metadata)
269
270 if matchfn:
271 files = [f for f in ctx.manifest().keys() if matchfn(f)]
272 else:
273 files = ctx.manifest().keys()
274 files.sort()
275 total = len(files)
271 repo.ui.progress(_('archiving'), 0, unit=_('files'), total=total) 276 repo.ui.progress(_('archiving'), 0, unit=_('files'), total=total)
272 for i, f in enumerate(ctx): 277 for i, f in enumerate(files):
273 ff = ctx.flags(f) 278 ff = ctx.flags(f)
274 write(f, 'x' in ff and 0755 or 0644, 'l' in ff, ctx[f].data) 279 write(f, 'x' in ff and 0755 or 0644, 'l' in ff, ctx[f].data)
275 repo.ui.progress(_('archiving'), i + 1, item=f, 280 repo.ui.progress(_('archiving'), i + 1, item=f,
276 unit=_('files'), total=total) 281 unit=_('files'), total=total)
277 repo.ui.progress(_('archiving'), None) 282 repo.ui.progress(_('archiving'), None)