annotate .hgignore @ 18040:fe8caf28d580

strip: make query to get new bookmark target cheaper The current query to get the new bookmark target for stripped revisions involves multiple walks up the DAG, and is really expensive, taking over 2.5 seconds on a repository with over 400,000 changesets even if just one changeset is being stripped. A slightly simplified version of the current query is max(heads(::<tostrip> - <tostrip>)) We make two observations here. 1. For any set s, max(heads(s)) == max(s). That is because revision numbers define a topological order, so that the element with the highest revision number in s will not have any children in s. 2. For any set s, max(::s - s) == max(parents(s) - s). In other words, the ancestor of s with the highest revision number not in s is a parent of one of the revs in s. Why? Because if it were an ancestor but not a parent of s, it would have a descendant that would be a parent of s. This descendant would have a higher revision number, leading to a contradiction. Combining these two observations, we rewrite the revset query as max(parents(<tostrip>) - <tostrip>) The time complexity is now linear in the number of changesets being stripped. For the above repository, the query now takes 0.1 seconds when one changeset is stripped. This speeds up operations that use repair.strip, like the rebase and strip commands.
author Siddharth Agarwal <sid0@fb.com>
date Wed, 05 Dec 2012 14:33:15 -0800
parents 93d97a212559
children e43184680461
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
1 syntax: glob
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
2
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
3 *.elc
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
4 *.orig
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
5 *.rej
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
6 *~
5019
e6cc4d4f5a81 Ignore mergebackup files generated by mpatch
Bryan O'Sullivan <bos@serpentine.com>
parents: 2987
diff changeset
7 *.mergebackup
2341
dbbe7f72d15a contrib: add restricted shell.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2151
diff changeset
8 *.o
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
9 *.so
13643
537899158396 hgignore: ignore dll files generated under cygwin
Craig Leres <leres@ee.lbl.gov>
parents: 13346
diff changeset
10 *.dll
17115
b52d08b930c5 hgignore: simply ignore all *.exe's everywhere
Adrian Buehlmann <adrian@cadifra.com>
parents: 16537
diff changeset
11 *.exe
6551
4a064e1977f8 ignore *.pyd files
Adrian Buehlmann <adrian@cadifra.com>
parents: 5693
diff changeset
12 *.pyd
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
13 *.pyc
13346
91fe769ac84e hgignore: ignore more bytecode
Simon Heimberg <simohe@besonet.ch>
parents: 11380
diff changeset
14 *.pyo
91fe769ac84e hgignore: ignore more bytecode
Simon Heimberg <simohe@besonet.ch>
parents: 11380
diff changeset
15 *$py.class
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
16 *.swp
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
17 *.prof
17274
2426ec322cd1 hgignore: ignore zip files
Adrian Buehlmann <adrian@cadifra.com>
parents: 17115
diff changeset
18 *.zip
8147
441dc7becd43 win32text: be more careful about rejecting violating changesets
Bryan O'Sullivan <bos@serpentine.com>
parents: 7706
diff changeset
19 \#*\#
441dc7becd43 win32text: be more careful about rejecting violating changesets
Bryan O'Sullivan <bos@serpentine.com>
parents: 7706
diff changeset
20 .\#*
2068
4a49daa3a40c let run-tests run optional code coverage tests.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1817
diff changeset
21 tests/.coverage*
2151
0ce3cd330996 Ignore annotated coverage output of run-tests.py -C
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2068
diff changeset
22 tests/annotated
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
23 tests/*.err
15859
44a371823f83 tests: add htmlcov option
Markus Zapke-Gründemann <info@keimlink.de>
parents: 15702
diff changeset
24 tests/htmlcov
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
25 build
2341
dbbe7f72d15a contrib: add restricted shell.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2151
diff changeset
26 contrib/hgsh/hgsh
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
27 dist
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
28 doc/*.[0-9]
1817
e02fea13c69d Ignore generated documentation
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1270
diff changeset
29 doc/*.[0-9].gendoc.txt
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
30 doc/*.[0-9].{x,ht}ml
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
31 MANIFEST
14560
0980239cb20c hgignore: ignore MANIFEST.in (generated since 2ce7dfe17bc5)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14538
diff changeset
32 MANIFEST.in
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
33 patches
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
34 mercurial/__version__.py
17732
93d97a212559 exewrapper: adapt for legacy HackableMercurial
Adrian Buehlmann <adrian@cadifra.com>
parents: 17274
diff changeset
35 mercurial/hgpythonlib.h
11380
2bb6dbf04757 Ignore mercurial.egg-info build output
Lee Cantey <lcantey@gmail.com>
parents: 8147
diff changeset
36 mercurial.egg-info
2987
12d1475b48df Ignore .DS_Store directories
Lee Cantey <lcantey@gmail.com>
parents: 2386
diff changeset
37 .DS_Store
5693
5d0b94d3ad0c .hgignore += tags & cscope files
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5622
diff changeset
38 tags
5d0b94d3ad0c .hgignore += tags & cscope files
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5622
diff changeset
39 cscope.*
7648
02e358a3a8a7 i18n: let Makefile generate i18n/hg.pot
Martin Geisler <mg@daimi.au.dk>
parents: 7439
diff changeset
40 i18n/hg.pot
7649
a489e3a94443 i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents: 7648
diff changeset
41 locale/*/LC_MESSAGES/hg.mo
14538
3818c67a501e setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents: 13643
diff changeset
42 hgext/__index__.py
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
43
7706
0ae7f0b312ea use PURE option in Makefile
Martin Geisler <mg@daimi.au.dk>
parents: 7649
diff changeset
44 # files installed with a local --pure build
0ae7f0b312ea use PURE option in Makefile
Martin Geisler <mg@daimi.au.dk>
parents: 7649
diff changeset
45 mercurial/base85.py
0ae7f0b312ea use PURE option in Makefile
Martin Geisler <mg@daimi.au.dk>
parents: 7649
diff changeset
46 mercurial/bdiff.py
0ae7f0b312ea use PURE option in Makefile
Martin Geisler <mg@daimi.au.dk>
parents: 7649
diff changeset
47 mercurial/diffhelpers.py
0ae7f0b312ea use PURE option in Makefile
Martin Geisler <mg@daimi.au.dk>
parents: 7649
diff changeset
48 mercurial/mpatch.py
0ae7f0b312ea use PURE option in Makefile
Martin Geisler <mg@daimi.au.dk>
parents: 7649
diff changeset
49 mercurial/osutil.py
0ae7f0b312ea use PURE option in Makefile
Martin Geisler <mg@daimi.au.dk>
parents: 7649
diff changeset
50 mercurial/parsers.py
0ae7f0b312ea use PURE option in Makefile
Martin Geisler <mg@daimi.au.dk>
parents: 7649
diff changeset
51
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
52 syntax: regexp
794
cdf61d3d3904 Ignore test error files, protect dot in .pc/
Thomas Arendsen Hein <thomas@intevation.de>
parents: 740
diff changeset
53 ^\.pc/
7439
7dd44ad43914 Ignore eclipse droppings
Brendan Cully <brendan@kublai.com>
parents: 6551
diff changeset
54 ^\.(pydev)?project
15702
64a80204433f ignore: add files present in the hackable-hg windows distribution
Laurens Holst <laurens.hg@grauw.nl>
parents: 14560
diff changeset
55
64a80204433f ignore: add files present in the hackable-hg windows distribution
Laurens Holst <laurens.hg@grauw.nl>
parents: 14560
diff changeset
56 # hackable windows distribution additions
16537
5068d0974278 update .hgignore for hackable with Python 2.7
Mads Kiilerich <mads@kiilerich.com>
parents: 15859
diff changeset
57 ^hg-python
15702
64a80204433f ignore: add files present in the hackable-hg windows distribution
Laurens Holst <laurens.hg@grauw.nl>
parents: 14560
diff changeset
58 ^hg.py$