.hgignore
author Paul Morelle <paul.morelle@octobus.net>
Fri, 22 Jun 2018 01:42:38 +0200
changeset 38602 44f5acfb9ad2
parent 38459 c8ef9d897e14
child 39491 4ca7a67c94c8
permissions -rw-r--r--
aggressivemergedeltas: enabled the option by default The option has been around for a while (August 2015) but was never turned on by default. In-depth testing shows large wins for having that on with no significant drawbacks. When enabled, revlog consider delta against both p1 and p2 at the same time when storing a revision. Selecting a delta against "p2" can produce better deltas and chain. This raise large benefit for all repositories, especially if they have a lot of merges. Comparison of `.hg/store/` size: mercurial (6.74% merges): before: 54,225,348 bytes after: 47,279,959 bytes -13% pypy (8.30% merges): before: 459,041,759 bytes after: 346,090,067 bytes -25% netbeans (34.21% merges): before: 2,468,041,333 bytes after: 1,364,077,645 bytes -45% mozilla-central (4.84% merges): before: 2,731,799,546 bytes after: 2,157,718,019 bytes -21% Comparison of `00manifest.d` size: mercurial (6.74% merges): before: 11,682,516 bytes after: 6,143,044 bytes -47% pypy (8.30% merges): before: 156,447,163 bytes after: 52,941,780 bytes -66% netbeans (34.21% merges): before: 1,250,363,851 bytes after: 130,088,982 bytes -90% mozilla-central (4.84% merges): before: 468,202,733 bytes after: 215,096,339 bytes -54% In addition, the better deltas help with the performance of multiple core operations. However, better chains mean longer chains, which can affect performance negatively (mostly manifest revision retrieval time). Chains length is a deeper problem that also affects linear repository too. Overall we think the benefits of using p2 as a diff target are bigger than the downsizes. In addition, we are also working on ways to improve the performance impact of chain length, so theses downsizes get fixed in the future. Below are interesting items from the full benchmark run: bundling 100 revisions from pypy: before: 670ms after: 480ms -28% bundle 10000 revisions from pypy: before: 1.38s after: 1.10s -54% bundle 10000 revisions from pypy: before: 16.1s after: 7.81s -52% bundle 10000 revisions from netbeans: before: 19.3s after: 15.5s -19% unbundle 1000 revisions to pypy: before: 641ms after: 315ms - 51% clone mercurial (http): before: 26.0s after: 22.6s -23% pulling 1000 revisions from pypy (shh): before: 2.07s after: 1.36s -44% pushing 1000 revision through http (pypy repository) before: 2.18s after: 1.35s -48% diff time in mozilla-central: before: 1.420s after: 0.983s -31% status time in mozilla-central: before: 1.260s after: 0.828s -34% Impact in other cases seems minimal (within a couple of percent in worse cases) and can be seen in both direction: Timing for a simple `hg commit`: mozilla-central: before: 3.37s after: 3.22s -4% pypy: before: 194ms after: 197ms +2% Timing for status (from tip to parent of tip): mercurial: before: 52.4ms after: 52.4ms (same) pypy: before: 55.2 after: 56.9 +3% Timing for `hg update` mozilla-central, across 10 revisions: before: 4.82s after: 4.59s -5% mozilla-central, across 10000 revisions: before: 49.1s after: 49.9s +2% pypy, across 10 revisions: before: 213ms after: 216ms +1% pypy, across 10000 revisions: before: 5.31ms after: 5.24ms -1% The negative consequences are related to manifest fetch time: (timing for the tip revision tested by the benchmark) pypy-2018: before: 2.60ms after: 3.88ms +50% mozilla-central-2018: before: 565ms after: 652ms +15% (~+100ms) netbeans-2018: before: 101ms after: 250ms +48% (~+150ms) This shows up as a fixed overhead on some command we benchmarked: no-op push of mozilla-central: before: 945ms after: 1040ms +10% (~+100ms) pushing 10 changeset in netbeabs over ssh: before: 557ms after: 712ms +28% (+155ms) pushing 100 changeset in netbeabs over ssh: before: 592ms after: 771ms +30% (+179ms)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
19991
ce5d711475a3 Makefile: do update on a temporary copy of a po file
Simon Heimberg <simohe@besonet.ch>
parents: 19426
diff changeset
     4
*.tmp
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
     5
*.orig
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
     6
*.rej
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
     7
*~
5019
e6cc4d4f5a81 Ignore mergebackup files generated by mpatch
Bryan O'Sullivan <bos@serpentine.com>
parents: 2987
diff changeset
     8
*.mergebackup
2341
dbbe7f72d15a contrib: add restricted shell.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2151
diff changeset
     9
*.o
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
    10
*.so
13643
537899158396 hgignore: ignore dll files generated under cygwin
Craig Leres <leres@ee.lbl.gov>
parents: 13346
diff changeset
    11
*.dll
17115
b52d08b930c5 hgignore: simply ignore all *.exe's everywhere
Adrian Buehlmann <adrian@cadifra.com>
parents: 16537
diff changeset
    12
*.exe
6551
4a064e1977f8 ignore *.pyd files
Adrian Buehlmann <adrian@cadifra.com>
parents: 5693
diff changeset
    13
*.pyd
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
    14
*.pyc
13346
91fe769ac84e hgignore: ignore more bytecode
Simon Heimberg <simohe@besonet.ch>
parents: 11380
diff changeset
    15
*.pyo
91fe769ac84e hgignore: ignore more bytecode
Simon Heimberg <simohe@besonet.ch>
parents: 11380
diff changeset
    16
*$py.class
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
    17
*.swp
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
    18
*.prof
17274
2426ec322cd1 hgignore: ignore zip files
Adrian Buehlmann <adrian@cadifra.com>
parents: 17115
diff changeset
    19
*.zip
8147
441dc7becd43 win32text: be more careful about rejecting violating changesets
Bryan O'Sullivan <bos@serpentine.com>
parents: 7706
diff changeset
    20
\#*\#
441dc7becd43 win32text: be more careful about rejecting violating changesets
Bryan O'Sullivan <bos@serpentine.com>
parents: 7706
diff changeset
    21
.\#*
2068
4a49daa3a40c let run-tests run optional code coverage tests.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 1817
diff changeset
    22
tests/.coverage*
27634
a1eff44c432b tests: write recent run times to a file named tests/.testtimes
Bryan O'Sullivan <bos@serpentine.com>
parents: 22945
diff changeset
    23
tests/.testtimes*
28255
f75f7d39cca3 testing: generate tests operations using Hypothesis
David R. MacIver <david@drmaciver.com>
parents: 28061
diff changeset
    24
tests/.hypothesis
f75f7d39cca3 testing: generate tests operations using Hypothesis
David R. MacIver <david@drmaciver.com>
parents: 28061
diff changeset
    25
tests/hypothesis-generated
2151
0ce3cd330996 Ignore annotated coverage output of run-tests.py -C
Thomas Arendsen Hein <thomas@intevation.de>
parents: 2068
diff changeset
    26
tests/annotated
35190
bd8875b6473c run-tests: mechanism to report exceptions during test execution
Gregory Szorc <gregory.szorc@gmail.com>
parents: 33033
diff changeset
    27
tests/exceptions
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
    28
tests/*.err
15859
44a371823f83 tests: add htmlcov option
Markus Zapke-Gründemann <info@keimlink.de>
parents: 15702
diff changeset
    29
tests/htmlcov
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
    30
build
28061
3753d2e1759b hgignore: ignore chg binary
Yuya Nishihara <yuya@tcha.org>
parents: 27634
diff changeset
    31
contrib/chg/chg
2341
dbbe7f72d15a contrib: add restricted shell.
Vadim Gelfer <vadim.gelfer@gmail.com>
parents: 2151
diff changeset
    32
contrib/hgsh/hgsh
21874
8da01b6e7b49 contrib/vagrant: use Vagrant for running tests on virtual machine
anatoly techtonik <techtonik@gmail.com>
parents: 21560
diff changeset
    33
contrib/vagrant/.vagrant
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
    34
dist
21560
a9e1ab2da30d packaging: move output directory from build/ to packages/
Matt Mackall <mpm@selenic.com>
parents: 19991
diff changeset
    35
packages
19426
e43184680461 doc: make man and html from translated documents
Takumi IINO <trot.thunder@gmail.com>
parents: 17732
diff changeset
    36
doc/common.txt
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
    37
doc/*.[0-9]
19426
e43184680461 doc: make man and html from translated documents
Takumi IINO <trot.thunder@gmail.com>
parents: 17732
diff changeset
    38
doc/*.[0-9].txt
1817
e02fea13c69d Ignore generated documentation
Thomas Arendsen Hein <thomas@intevation.de>
parents: 1270
diff changeset
    39
doc/*.[0-9].gendoc.txt
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
    40
doc/*.[0-9].{x,ht}ml
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
    41
MANIFEST
14560
0980239cb20c hgignore: ignore MANIFEST.in (generated since 2ce7dfe17bc5)
Thomas Arendsen Hein <thomas@intevation.de>
parents: 14538
diff changeset
    42
MANIFEST.in
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
    43
patches
28430
17b85d739b62 setup: create a module for the modulepolicy
timeless <timeless@mozdev.org>
parents: 28255
diff changeset
    44
mercurial/__modulepolicy__.py
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
    45
mercurial/__version__.py
17732
93d97a212559 exewrapper: adapt for legacy HackableMercurial
Adrian Buehlmann <adrian@cadifra.com>
parents: 17274
diff changeset
    46
mercurial/hgpythonlib.h
11380
2bb6dbf04757 Ignore mercurial.egg-info build output
Lee Cantey <lcantey@gmail.com>
parents: 8147
diff changeset
    47
mercurial.egg-info
2987
12d1475b48df Ignore .DS_Store directories
Lee Cantey <lcantey@gmail.com>
parents: 2386
diff changeset
    48
.DS_Store
5693
5d0b94d3ad0c .hgignore += tags & cscope files
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5622
diff changeset
    49
tags
5d0b94d3ad0c .hgignore += tags & cscope files
Kirill Smelkov <kirr@mns.spb.ru>
parents: 5622
diff changeset
    50
cscope.*
22945
3232f92360d4 hgignore: ignore the PyCharm workspace folder
Angel Ezquerra <angel.ezquerra@gmail.com>
parents: 21874
diff changeset
    51
.idea/*
30406
cff0f5926797 perf: add asv benchmarks
Philippe Pepiot <philippe.pepiot@logilab.fr>
parents: 29031
diff changeset
    52
.asv/*
7648
02e358a3a8a7 i18n: let Makefile generate i18n/hg.pot
Martin Geisler <mg@daimi.au.dk>
parents: 7439
diff changeset
    53
i18n/hg.pot
7649
a489e3a94443 i18n: new build_mo command for setup.py
Martin Geisler <mg@daimi.au.dk>
parents: 7648
diff changeset
    54
locale/*/LC_MESSAGES/hg.mo
14538
3818c67a501e setup: add command to generate index of extensions
Yuya Nishihara <yuya@tcha.org>
parents: 13643
diff changeset
    55
hgext/__index__.py
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
    56
35569
964212780daf rust: implementation of `hg`
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35190
diff changeset
    57
rust/target/
964212780daf rust: implementation of `hg`
Gregory Szorc <gregory.szorc@gmail.com>
parents: 35190
diff changeset
    58
32080
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents: 30406
diff changeset
    59
# Generated wheels
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents: 30406
diff changeset
    60
wheelhouse/
fcddcf442e4f packaging: add make target for linux wheels
Boris Feld <boris.feld@octobus.net>
parents: 30406
diff changeset
    61
1270
fc3b41570082 Switch to new syntax for .hgignore files.
Bryan O'Sullivan <bos@serpentine.com>
parents: 981
diff changeset
    62
syntax: regexp
794
cdf61d3d3904 Ignore test error files, protect dot in .pc/
Thomas Arendsen Hein <thomas@intevation.de>
parents: 740
diff changeset
    63
^\.pc/
7439
7dd44ad43914 Ignore eclipse droppings
Brendan Cully <brendan@kublai.com>
parents: 6551
diff changeset
    64
^\.(pydev)?project
15702
64a80204433f ignore: add files present in the hackable-hg windows distribution
Laurens Holst <laurens.hg@grauw.nl>
parents: 14560
diff changeset
    65
64a80204433f ignore: add files present in the hackable-hg windows distribution
Laurens Holst <laurens.hg@grauw.nl>
parents: 14560
diff changeset
    66
# hackable windows distribution additions
16537
5068d0974278 update .hgignore for hackable with Python 2.7
Mads Kiilerich <mads@kiilerich.com>
parents: 15859
diff changeset
    67
^hg-python
15702
64a80204433f ignore: add files present in the hackable-hg windows distribution
Laurens Holst <laurens.hg@grauw.nl>
parents: 14560
diff changeset
    68
^hg.py$