[PATCH 1 of 4] hg: ensure the progress bar is completed when copying the store

Augie Fackler raf at durin42.com
Sat Sep 1 11:00:40 EDT 2018


queued, thanks

> On Sep 1, 2018, at 2:05 AM, Matt Harbison <mharbison72 at gmail.com> wrote:
> 
> # HG changeset patch
> # User Matt Harbison <matt_harbison at yahoo.com>
> # Date 1535214404 14400
> #      Sat Aug 25 12:26:44 2018 -0400
> # Node ID bcd44b97559a0150b988f812ffc28be1f7f9d452
> # Parent  a7e22dd31f540916e79fbf23ff9f1c5baf380c53
> hg: ensure the progress bar is completed when copying the store
> 
> This is just a block indent under the context manager.
> 
> diff --git a/mercurial/hg.py b/mercurial/hg.py
> --- a/mercurial/hg.py
> +++ b/mercurial/hg.py
> @@ -381,31 +381,30 @@ def copystore(ui, srcrepo, destpath):
>     try:
>         hardlink = None
>         topic = _('linking') if hardlink else _('copying')
> -        progress = ui.makeprogress(topic)
> -        num = 0
> -        srcpublishing = srcrepo.publishing()
> -        srcvfs = vfsmod.vfs(srcrepo.sharedpath)
> -        dstvfs = vfsmod.vfs(destpath)
> -        for f in srcrepo.store.copylist():
> -            if srcpublishing and f.endswith('phaseroots'):
> -                continue
> -            dstbase = os.path.dirname(f)
> -            if dstbase and not dstvfs.exists(dstbase):
> -                dstvfs.mkdir(dstbase)
> -            if srcvfs.exists(f):
> -                if f.endswith('data'):
> -                    # 'dstbase' may be empty (e.g. revlog format 0)
> -                    lockfile = os.path.join(dstbase, "lock")
> -                    # lock to avoid premature writing to the target
> -                    destlock = lock.lock(dstvfs, lockfile)
> -                hardlink, n = util.copyfiles(srcvfs.join(f), dstvfs.join(f),
> -                                             hardlink, progress)
> -                num += n
> -        if hardlink:
> -            ui.debug("linked %d files\n" % num)
> -        else:
> -            ui.debug("copied %d files\n" % num)
> -        progress.complete()
> +        with ui.makeprogress(topic) as progress:
> +            num = 0
> +            srcpublishing = srcrepo.publishing()
> +            srcvfs = vfsmod.vfs(srcrepo.sharedpath)
> +            dstvfs = vfsmod.vfs(destpath)
> +            for f in srcrepo.store.copylist():
> +                if srcpublishing and f.endswith('phaseroots'):
> +                    continue
> +                dstbase = os.path.dirname(f)
> +                if dstbase and not dstvfs.exists(dstbase):
> +                    dstvfs.mkdir(dstbase)
> +                if srcvfs.exists(f):
> +                    if f.endswith('data'):
> +                        # 'dstbase' may be empty (e.g. revlog format 0)
> +                        lockfile = os.path.join(dstbase, "lock")
> +                        # lock to avoid premature writing to the target
> +                        destlock = lock.lock(dstvfs, lockfile)
> +                    hardlink, n = util.copyfiles(srcvfs.join(f), dstvfs.join(f),
> +                                                 hardlink, progress)
> +                    num += n
> +            if hardlink:
> +                ui.debug("linked %d files\n" % num)
> +            else:
> +                ui.debug("copied %d files\n" % num)
>         return destlock
>     except: # re-raises
>         release(destlock)
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel



More information about the Mercurial-devel mailing list