# HG changeset patch # User Matt Harbison # Date 1535216964 14400 # Node ID a65ad9b22a00fc895c8c919ab836ce5e289fcea2 # Parent b26350d9d7b5557c89a17e7480b25b47ab4a646b largefiles: use a context manager to control the progress bar lifetime diff -r b26350d9d7b5 -r a65ad9b22a00 hgext/largefiles/basestore.py --- a/hgext/largefiles/basestore.py Sat Aug 25 12:41:58 2018 -0400 +++ b/hgext/largefiles/basestore.py Sat Aug 25 13:09:24 2018 -0400 @@ -62,25 +62,24 @@ at = 0 available = self.exists(set(hash for (_filename, hash) in files)) - progress = ui.makeprogress(_('getting largefiles'), unit=_('files'), - total=len(files)) - for filename, hash in files: - progress.update(at) - at += 1 - ui.note(_('getting %s:%s\n') % (filename, hash)) + with ui.makeprogress(_('getting largefiles'), unit=_('files'), + total=len(files)) as progress: + for filename, hash in files: + progress.update(at) + at += 1 + ui.note(_('getting %s:%s\n') % (filename, hash)) - if not available.get(hash): - ui.warn(_('%s: largefile %s not available from %s\n') - % (filename, hash, util.hidepassword(self.url))) - missing.append(filename) - continue + if not available.get(hash): + ui.warn(_('%s: largefile %s not available from %s\n') + % (filename, hash, util.hidepassword(self.url))) + missing.append(filename) + continue - if self._gethash(filename, hash): - success.append((filename, hash)) - else: - missing.append(filename) + if self._gethash(filename, hash): + success.append((filename, hash)) + else: + missing.append(filename) - progress.complete() return (success, missing) def _gethash(self, filename, hash): diff -r b26350d9d7b5 -r a65ad9b22a00 hgext/largefiles/lfcommands.py --- a/hgext/largefiles/lfcommands.py Sat Aug 25 12:41:58 2018 -0400 +++ b/hgext/largefiles/lfcommands.py Sat Aug 25 13:09:24 2018 -0400 @@ -118,14 +118,13 @@ matcher = None lfiletohash = {} - progress = ui.makeprogress(_('converting revisions'), - unit=_('revisions'), - total=rsrc['tip'].rev()) - for ctx in ctxs: - progress.update(ctx.rev()) - _lfconvert_addchangeset(rsrc, rdst, ctx, revmap, - lfiles, normalfiles, matcher, size, lfiletohash) - progress.complete() + with ui.makeprogress(_('converting revisions'), + unit=_('revisions'), + total=rsrc['tip'].rev()) as progress: + for ctx in ctxs: + progress.update(ctx.rev()) + _lfconvert_addchangeset(rsrc, rdst, ctx, revmap, + lfiles, normalfiles, matcher, size, lfiletohash) if rdst.wvfs.exists(lfutil.shortname): rdst.wvfs.rmtree(lfutil.shortname) @@ -370,18 +369,17 @@ files = [h for h in files if not retval[h]] ui.debug("%d largefiles need to be uploaded\n" % len(files)) - progress = ui.makeprogress(_('uploading largefiles'), unit=_('files'), - total=len(files)) - for hash in files: - progress.update(at) - source = lfutil.findfile(rsrc, hash) - if not source: - raise error.Abort(_('largefile %s missing from store' - ' (needs to be uploaded)') % hash) - # XXX check for errors here - store.put(source, hash) - at += 1 - progress.complete() + with ui.makeprogress(_('uploading largefiles'), unit=_('files'), + total=len(files)) as progress: + for hash in files: + progress.update(at) + source = lfutil.findfile(rsrc, hash) + if not source: + raise error.Abort(_('largefile %s missing from store' + ' (needs to be uploaded)') % hash) + # XXX check for errors here + store.put(source, hash) + at += 1 def verifylfiles(ui, repo, all=False, contents=False): '''Verify that every largefile revision in the current changeset diff -r b26350d9d7b5 -r a65ad9b22a00 hgext/largefiles/lfutil.py --- a/hgext/largefiles/lfutil.py Sat Aug 25 12:41:58 2018 -0400 +++ b/hgext/largefiles/lfutil.py Sat Aug 25 13:09:24 2018 -0400 @@ -501,37 +501,37 @@ return filelist def getlfilestoupload(repo, missing, addfunc): - progress = repo.ui.makeprogress(_('finding outgoing largefiles'), - unit=_('revisions'), total=len(missing)) - for i, n in enumerate(missing): - progress.update(i) - parents = [p for p in repo[n].parents() if p != node.nullid] + makeprogress = repo.ui.makeprogress + with makeprogress(_('finding outgoing largefiles'), + unit=_('revisions'), total=len(missing)) as progress: + for i, n in enumerate(missing): + progress.update(i) + parents = [p for p in repo[n].parents() if p != node.nullid] - oldlfstatus = repo.lfstatus - repo.lfstatus = False - try: - ctx = repo[n] - finally: - repo.lfstatus = oldlfstatus + oldlfstatus = repo.lfstatus + repo.lfstatus = False + try: + ctx = repo[n] + finally: + repo.lfstatus = oldlfstatus - files = set(ctx.files()) - if len(parents) == 2: - mc = ctx.manifest() - mp1 = ctx.parents()[0].manifest() - mp2 = ctx.parents()[1].manifest() - for f in mp1: - if f not in mc: - files.add(f) - for f in mp2: - if f not in mc: - files.add(f) - for f in mc: - if mc[f] != mp1.get(f, None) or mc[f] != mp2.get(f, None): - files.add(f) - for fn in files: - if isstandin(fn) and fn in ctx: - addfunc(fn, readasstandin(ctx[fn])) - progress.complete() + files = set(ctx.files()) + if len(parents) == 2: + mc = ctx.manifest() + mp1 = ctx.parents()[0].manifest() + mp2 = ctx.parents()[1].manifest() + for f in mp1: + if f not in mc: + files.add(f) + for f in mp2: + if f not in mc: + files.add(f) + for f in mc: + if mc[f] != mp1.get(f, None) or mc[f] != mp2.get(f, None): + files.add(f) + for fn in files: + if isstandin(fn) and fn in ctx: + addfunc(fn, readasstandin(ctx[fn])) def updatestandinsbymatch(repo, match): '''Update standins in the working directory according to specified match