From patchwork Fri Mar 13 01:43:14 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [2, of, 2, convert-git-progress] convert: adjust progress bar for octopus merges (issue4169) From: Augie Fackler X-Patchwork-Id: 8038 Message-Id: <31ffd2581ded094d80f0.1426210994@106.17.16.172.in-addr.arpa> To: mercurial-devel@selenic.com Date: Thu, 12 Mar 2015 21:43:14 -0400 # HG changeset patch # User Augie Fackler # Date 1426210910 14400 # Thu Mar 12 21:41:50 2015 -0400 # Node ID 31ffd2581ded094d80f06e219ddfc2ee774d4b66 # Parent 8836d4b5f3d9c129277cbb9f27bfaa78bd217324 convert: adjust progress bar for octopus merges (issue4169) For merges, we walk the files N-1 times, where N is the number of parents. This means that for an octopus merge with 3 parents and 2 changed files, we actually fetch 6 files. This corrects the progress output of the convert command when such commits are encountered. diff --git a/hgext/convert/convcmd.py b/hgext/convert/convcmd.py --- a/hgext/convert/convcmd.py +++ b/hgext/convert/convcmd.py @@ -413,7 +413,15 @@ class converter(object): parents = [self.map.get(p, p) for p in parents] except KeyError: parents = [b[0] for b in pbranches] - source = progresssource(self.ui, self.source, len(files)) + if len(parents) < 3: + source = progresssource(self.ui, self.source, len(files)) + else: + # For an octopus merge, we end up traversing the list of + # changed files N-1 times. This tweak to the number of + # files makes it so the progress bar doesn't overflow + # itself. + source = progresssource(self.ui, self.source, + len(files) * (len(parents) - 1)) newnode = self.dest.putcommit(files, copies, parents, commit, source, self.map, full) source.close() @@ -531,4 +539,3 @@ def convert(ui, src, dest=None, revmapfi c = converter(ui, srcc, destc, revmapfile, opts) c.convert(sortmode) -