Mercurial > hg > mercurial-crew-with-dirclash
view doc/hgmerge.1.txt @ 879:953ccddd57bd
dirstate walking optimizations
The repo walking code introduces a number of calls to dirstate.map.copy(),
significantly slowing down the walk on large trees. When a list of
files is passed to the walking code, we should only look at map entries
relevant to the file list passed in.
dirstate.filterfiles() is added to return a subset of the dirstate map.
The subset includes in files passed in, and if one of the files requested
is actually a directory, it includes any files inside that directory tree.
This brings the time for hg diff Makefile down from 1.7s to .3s on
a linux kernel repo.
Also, the diff command was unconditionally calling makewalk, leading
to an extra pass through repo.changes. This patch avoids the call
to makewalk when commands.diff isn't given a list of patterns, cutting
the time for hg diff (with no args) in half.
Index: mine/mercurial/hg.py
===================================================================
author | mason@suse.com |
---|---|
date | Fri, 12 Aug 2005 07:10:21 -0800 |
parents | c084cfbb2389 |
children | 3ab6e55ee361 |
line wrap: on
line source
HGMERGE(1) ========== Matt Mackall <mpm@selenic.com> v0.1, 27 May 2005 NAME ---- hgmerge - default wrapper to merge files in Mercurial SCM system SYNOPSIS -------- 'hgmerge' local ancestor remote DESCRIPTION ----------- The hgmerge(1) command provides a graphical interface to merge files in the Mercurial system. It is a simple wrapper around kdiff3, merge(1) and tkdiff(1), or simply diff(1) and patch(1) depending on what is present on the system. hgmerge(1) is used by the Mercurial SCM if the environment variable HGMERGE is not set. AUTHOR ------ Written by Vincent Danjean <Vincent.Danjean@free.fr> SEE ALSO -------- hg(1) - the command line interface to Mercurial SCM COPYING ------- Copyright (C) 2005 Matt Mackall. Free use of this software is granted under the terms of the GNU General Public License (GPL).