HomePhabricator

Improve performance of mercurial arc diff
db053e1eb73fUnpublished

Unpublished Commit · Learn More

No further details are available.

Description

Improve performance of mercurial arc diff

Summary:
arc diff on large mercurial repos was taking 14 seconds just to get
to the commit message prompt. With these optimizations it takes 4.

  • "ancestor(.) - ancestor(XYZ)" is expensive because it has to build the

entire 400000+ revision history for both. "XYZ::. - XYZ" is much cheaper
because it only looks at the revisions between XYZ and the working directory.

  • "hg outgoing" has to talk to the server, which is slow. "hg log -r draft()"

gives us the same information and is much cheaper. We fall back to 'outgoing'
on older versions of mercurial.

Of the remaining 4 seconds, 2.5 are spent in 'hg status', which is a bit harder
improve.

Test Plan: Ran arc diff on our hg repo. Verified it ran faster and the diff was created.

Reviewers: epriestley, sid0, bos, dschleimer

Reviewed By: epriestley

CC: aran, Korvin, tido

Differential Revision: https://secure.phabricator.com/D4838

Details

Provenance
durhamAuthored on
Reviewer
epriestley
Differential Revision
Restricted Differential Revision
Parents
rARC7f9c286338b8: Upload binary files diffs in parallel
Branches
Unknown
Tags
Unknown

Event Timeline