- Jul 31, 2018
-
-
Martijn Pieters authored
Reconstructing the manifest from the revlog takes time, so much so that there already is a LRU cache to avoid having to load a manifest multiple times. This patch persists that LRU cache in the .hg/cache directory, so we can re-use this cache across hg commands. Commit benchmark (run on Macos 10.13 on a 2017-model Macbook Pro with Core i7 2.9GHz and flash drive), testing without and with patch run 5 times, baseline is r2a227782e754: * committing to an existing file, against the mozilla-central repository. Baseline real time average 1.9692, with patch 1.3786. A new debugcommand "hg debugmanifestfulltextcache" lets you inspect the cache, clear it, or add specific manifest nodeids to it. When calling repo.updatecaches(), the manifest(s) for the working copy parents are added to the cache. The hg perfmanifest command has an additional --clear-disk switch to clear this cache when testing manifest loading performance. Using this command to test performance on the firefox repository for revision f947d902ed91, whose manifest has a delta chain length of 60540, we see: $ hg perfmanifest f947d902ed91 --clear-disk ! wall 0.972253 comb 0.970000 user 0.850000 sys 0.120000 (best of 10) $ hg debugmanifestfulltextcache -a `hg log --debug -r f947d902ed91 | grep manifest | cut -d: -f3` Cache contains 1 manifest entries, in order of most to least recent: id: 0294517df4aad07c70701db43bc7ff24c3ce7dbc, size 25.6 MB Total cache data size 25.6 MB, on-disk 0 bytes $ hg perfmanifest f947d902ed91 ! wall 0.036748 comb 0.040000 user 0.020000 sys 0.020000 (best of 100) Worst-case scenario: a manifest text loaded from a single delta; in the firefox repository manifest node 9a1246ff762e is the chain base for the manifest attached to revision f947d902ed91. Loading this from a full cache file is just as fast as without the cache; the extra node ids ensure a big full cache: $ for node in 9a1246ff762e 1a1922c14a3e 54a31d11a36a 0294517df4aa; do > hgd debugmanifestfulltextcache -a $node > /dev/null > done $ hgd perfmanifest -m 9a1246ff762e ! wall 0.077513 comb 0.080000 user 0.030000 sys 0.050000 (best of 100) $ hgd perfmanifest -m 9a1246ff762e --clear-disk ! wall 0.078547 comb 0.080000 user 0.070000 sys 0.010000 (best of 100)
-
Martijn Pieters authored
-
- Jul 20, 2018
-
-
Martin von Zweigbergk authored
This also fixes the out-of-range "len(repo)" that weirdly works (and gets the nullid). I suspect it wasn't intentional to include the timing of reading the null revision. Differential Revision: https://phab.mercurial-scm.org/D4017
-
Martin von Zweigbergk authored
This was an odd side effect of the nullid entry that's in the index. The existing callers (mostly repair.py) seem to have handled it fine. It doesn't seem intentional, and it's pretty surprising, so let's remove that surprise. Differential Revision: https://phab.mercurial-scm.org/D4015
-
- Jul 16, 2018
-
-
Augie Fackler authored
This lets test-patch-bookmark.t only fail with some harmless header output changes on Python 3, so I think patchbomb might be basically useful on Python 3 now. Differential Revision: https://phab.mercurial-scm.org/D3952
-
- Jul 30, 2018
-
-
Martin von Zweigbergk authored
Obsolete since 91618801d5c3 (context: raise ProgrammingError on repo['my-tag'], 2018-07-06). Differential Revision: https://phab.mercurial-scm.org/D4002
-
- Jul 27, 2018
-
-
Martin von Zweigbergk authored
Differential Revision: https://phab.mercurial-scm.org/D4001
-
Martin von Zweigbergk authored
Differential Revision: https://phab.mercurial-scm.org/D4000
-
Martin von Zweigbergk authored
Differential Revision: https://phab.mercurial-scm.org/D3999
-
Martin von Zweigbergk authored
Differential Revision: https://phab.mercurial-scm.org/D3998
-
Martin von Zweigbergk authored
Differential Revision: https://phab.mercurial-scm.org/D3997
-
Martin von Zweigbergk authored
Differential Revision: https://phab.mercurial-scm.org/D3996
-
- Jul 20, 2018
-
-
Rodrigo Damazio Bovendorp authored
This allows abortions to be highlighted specially and separately from warnings - for instance, red is a reasonable color for when hg aborts, but is overly dramatic for most warnings produced elsewhere. Differential Revision: https://phab.mercurial-scm.org/D3967
-
- Jul 19, 2018
-
-
Augie Fackler authored
This is harmless, unless you try and run hg with HGUNICODEPEDANTRY enabled. It's technically wrong, so let's go ahead and fix it. Differential Revision: https://phab.mercurial-scm.org/D3989
-
- Aug 01, 2018
-
-
Augie Fackler authored
-
durin42 authored
-
durin42 authored
-
Boris Feld authored
Fix the descendant deprecated method introduced earlier in this cycle. This was caught by Yuya, thank you.
-
- Jul 31, 2018
-
-
Gregory Szorc authored
commands.status.terse=u can add significant overhead when operating on large repositories. Using the Firefox repository: HGRCPATH= hg --time status time: real 1.340 secs (user 0.960+0.000 sys 0.380+0.000) HGRCPATH= hg --time --config commands.status.terse=u status time: real 2.420 secs (user 2.070+0.000 sys 0.360+0.000) HGRCPATH= hg --time --config extensions.fsmonitor= status time: real 0.080 secs (user 0.050+0.010 sys 0.040+0.000) HGRCPATH= ~/src/hg/hg --time --config extensions.fsmonitor= --config commands.status.terse=u status time: real 2.470 secs (user 2.080+0.000 sys 0.390+0.000) The performance regression - especially when fsmonitor is being used - is too much to stomach for the 4.7 release. We've decided to remove commands.status.terse=u from ui.tweakdefaults until we can improve its performance, hopefully in the 4.8 cycle. This commit effectively backs out 6acf41bb8d40.
-
- Jul 25, 2018
-
-
Pulkit Goyal authored
Subversion can have a file as executable link. When using hgsubversion, we will have both islink and isexec True. This will lead to _flags being set to `lx`. However, manifest expects flag to be one-byte so it will crash if 'lx' is passed. Also it's impossible to have an executable link. This patch will safegaurd us from having 'lx' being a possible value. This was authored by Ivan Lezhankin from Yandex. Differential Revision: https://phab.mercurial-scm.org/D3985
-
- Jul 31, 2018
-
-
Boris Feld authored
This come as an extra security, better safe than sorry.
-
- Jul 30, 2018
-
-
Boris Feld authored
Sparse revlog rely on general delta, so we should make sure it is used.
-
- Jul 29, 2018
-
-
Yuya Nishihara authored
On Windows, EACCES is raised in place of EISDIR. This patch simply adds EACCES to the list of errors to be ignored since I think it's okay for filesets to treat inaccessible working-copy files as not existing.
-
- Jul 27, 2018
-
-
Pulkit Goyal authored
In merge, we do trivial resolution for files which were deleted on one side and changed on other. When sparse extension in involved that file might not be present in wdir and trivial resolution can lead to file not found error. This patch make sure we updates the sparse checkout before doing the trivial resolution. This fixes the test failure demonstrated in previous patch. Differential Revision: https://phab.mercurial-scm.org/D3984
-
Pulkit Goyal authored
This patch adds a test to demonstrate that `hg merge` is broken in some cases while using sparse extension. The case is when you have a file which is: * modified between current wdir parent and merge base * deleted between merge base and merge destination * excluded from sparse checkout Doing `hg merge` results in file not found error. Next patch will fix this. Differential Revision: https://phab.mercurial-scm.org/D3983
-
- Jul 30, 2018
-
-
Martin von Zweigbergk authored
I went a little too far in my cleanup in 9231148ea599 (context: convert to hex for error message only for 20-byte changeid, 2018-04-06). I missed that the case where a binary nodeid refers to a filtered node. Differential Revision: https://phab.mercurial-scm.org/D3987
-
- Jul 31, 2018
-
-
Boris Feld authored
This was an error in the initial commit. Thanks go to Marcel Svitalský for reporting the bug.
-
- Jul 30, 2018
-
-
Boris Feld authored
In theory, checkout is expected to be a node here because it was returned by peer.lookup. In practice, multiple important extensions (like hg-git, hg-subversion) use peers not backed by a mercurial repository where lookup cannot return a node. Allowing arbitrary symbols is necessary to make these extensions working with 4.7. We should probably introduce a new API in Core to have these extensions to work without abusing the lookup API. In the meantime, a small change to restore compatibility in 4.7 seems in order.
-
Augie Fackler authored
The sed invocation was failing on OS X and FreeBSD. I'm far too lazy to diagnose that, so just use some inline Python to fix the build.
-
Augie Fackler authored
This fixes mercurial/context.py:593: SyntaxError: cannot mix bytes and nonbytes literals (context.py, line 593) in Python 3.
-
- Jul 28, 2018
-
-
Yuya Nishihara authored
Otherwise it wouldn't be caught by a fast path of pathutil.canonpath(), and fall back to file identity checks.
-
- Jul 30, 2018
-
-
Yuya Nishihara authored
-
- Jul 28, 2018
-
-
Yuya Nishihara authored
I don't know if it is a feature or a bug, but it appears that environment variables passed to a shell function persist on /bin/sh.
-
Yuya Nishihara authored
It just worked by accident on some Linux sh.
-
- Jul 26, 2018
-
-
Gregory Szorc authored
error.tmpl wasn't consistent with other templates in gitweb in that it was missing a "graph" link. This commit makes it consistent.
-
- Jul 25, 2018
-
-
Cédric Krier authored
Differential Revision: https://phab.mercurial-scm.org/D3978
-
- Jul 20, 2018
-
-
Boris Feld authored
The idea was suggested by Gregory Szorc on IRC. It is more generic and seems better. It is probably best to rename the section before it ever makes into an official (non-rc) release. The only config option currently in this section have been prefixed with `revlog` to clarify it applies to `revlog` related storage.
-
- Jul 19, 2018
-
-
durin42 authored
-
durin42 authored
-
Gregory Szorc authored
913ca175c4ae broke BC by dropping support for reading format.aggressivemergedeltas. Let's restore it. Differential Revision: https://phab.mercurial-scm.org/D3966
-