First, incomplete, but promising stab at converting pbranch scenarios to "changeset evolution"

Greg Ward greg-hg at gerg.ca
Thu Aug 25 07:33:17 CDT 2011


On Thu, Aug 25, 2011 at 2:30 AM, Peter Arrenbrecht
<peter.arrenbrecht at gmail.com> wrote:
> On Fri, Jul 29, 2011 at 6:26 PM, Idan Kamara <idankk86 at gmail.com> wrote:
>> On Thu, Jul 14, 2011 at 3:38 PM, Peter Arrenbrecht
>> <peter.arrenbrecht at gmail.com> wrote:
>>>
>>> "Changeset evolution" is Pierre-Yves David's (marmoute on IRC) take on
>>> how we might finally be able to unify mq and pbranch, and get a sane
>>> environment for evolving changesets over time (for instance, in a
>>> review-feedback cycle, or just while polishing them ourselves). I
>>> promised at the last sprint to write it up. My approach is to take the
>>> extensive pbranch tutorial and convert it to one for evolution. Here's
>>> the first step in this direction:
>>>
>>>  http://arrenbrecht.ch/mercurial/evolution/

Whoops, I missed this when you first posted it, so sorry for the late
feedback. Sounds interesting! One thing jumped out at me:

> * No history is ever rewritten (except optionally during garbage collection).
>   Instead, we simply hide old versions of changesets (by default). This is like
>   git’s reflog.

Would garbage collection be based on strip? That raises a performance
concern for me: strip is fast if it includes only revs near tip, i.e.
it's pure truncation. But I have found that strips that don't include
tip, or include revs "far" from tip, can be painfully slow (several
minutes) with large repos. Not fun. I've never investigated, but I
assume it's because strip has to move chunks of revlogs around rather
than simply truncate them. When each manifest rev is > 1 MB (we have
>22,000 files, many with insanely long names), this can get slow.

The advantage of qrefresh is that always strips tip (or near tip --
not sure if it commits first or strips first, as I've never read the
code), so it's usually pretty fast. Likewise qpop.

Greg


More information about the Mercurial-devel mailing list