Matt Harbison <matt_harbison@yahoo.com> [Wed, 10 Jan 2018 22:23:34 -0500] rev 35616
fileset: add a lightweight file filtering language
This patch was inspired by one that Jun Wu authored for the fb-experimental
repo, to avoid using matcher for efficiency[1]. We want a way to specify what
files will be converted to LFS at commit time. And per discussion, we also want
to specify what files to skip, text diff, or merge in another config option.
The current `lfs.threshold` config option could not satisfy complex needs. I'm
putting it in a core package because Augie floated the idea of also using it for
narrow and sparse.
Yuya suggested farming out to fileset.parse(), which added support for more
symbols. The only fileset element not supported here is 'negate'. (List isn't
supported by filesets either.) I also changed the 'always' token to the 'all()'
predicate for consistency, and introduced 'none()' to improve readability in a
future tracked file based config. The extension operator was changed from '.'
to '**', to match how recursive path globs are specified. Finally, I changed
the path matcher from '/' to 'path:' at Yuya's suggestion, for consistency with
matcher. Unfortunately, ':' is currently reserved in filesets, so this has to
be quoted to be processed as a string instead of a symbol[2]. We should
probably revisit that, because it's seriously ugly. But it's only used by an
experimental extension, and I think using a file based config for LFS may drive
some more tweaks, so I'm settling for this for now.
I reserved all of the glob characters in fileset except '.' and '_' for the
extension test because those are likely valid extension characters.
Sample filter settings:
all() # everything
size(">20MB") # larger than 20MB
!**.txt # except for .txt files
**.zip | **.tar.gz | **.7z # some types of compressed files
"path:bin" # files under "bin" in the project root
[1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2017-December/109387.html
[2] https://www.mercurial-scm.org/pipermail/mercurial-devel/2018-January/109729.html
Matt Harbison <matt_harbison@yahoo.com> [Wed, 10 Jan 2018 22:35:08 -0500] rev 35615
fileset: split the logic for matching a size expression to a separate method
This will be used in the next patch to build a simple filtering language, but
where we won't have an mctx.
Matt Harbison <matt_harbison@yahoo.com> [Fri, 12 Jan 2018 23:13:38 -0500] rev 35614
lfs: drop deprecated remote store config options
The last of these were removed from fb-experimental in 86884a51e9aa, and we
might as well clean this up before the freeze.
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 12 Jan 2018 18:11:05 +0530] rev 35613
py3: use bytes instead of pycompat.bytestr
Follow up for 35fb3367f72d.
Differential Revision: https://phab.mercurial-scm.org/D1854
Joerg Sonnenberger <joerg@bec.de> [Fri, 12 Jan 2018 17:10:55 +0100] rev 35612
test-pull-r: explicitly kill server processes
Differential Revision: https://phab.mercurial-scm.org/D1855
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 05 Jan 2018 22:28:06 +0530] rev 35611
bookmarks: add bookmarks to hidden revs if directaccess config is set
This patch adds support to add bookmarks to hidden revs if
`experimental.directaccessi=True` config is set. A warning is also printed
saying "accessing hidden changeset <revhash>".
Differential Revision: https://phab.mercurial-scm.org/D1813
Boris Feld <boris.feld@octobus.net> [Fri, 12 Jan 2018 11:15:41 +0000] rev 35610
visibility: pass a normal repo to _getfilteredreason
There is no reason to pass an unfiltered-repo to _getfilteredreason and
successorssets, so use a normal repo instead.
Differential Revision: https://phab.mercurial-scm.org/D1853
Boris Feld <boris.feld@octobus.net> [Fri, 12 Jan 2018 11:10:18 +0000] rev 35609
visibility: make the filtered message translatable
Introduce a filtered message table to ease translation of these messages.
Differential Revision: https://phab.mercurial-scm.org/D1852
Boris Feld <boris.feld@octobus.net> [Fri, 12 Jan 2018 11:09:04 +0000] rev 35608
visibility: fix a comment introduced before which is not up-to-date
265cd9e19d26 introduced a comment in _filterederror that was not updated with
the latest iterations of the patch, fix the comment.
Differential Revision: https://phab.mercurial-scm.org/D1851
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 10 Jan 2018 19:24:58 -0800] rev 35607
rust: avoid redundant 'static lifetime
'static is apparently automatic for const variables.
Differential Revision: https://phab.mercurial-scm.org/D1846
Boris Feld <boris.feld@octobus.net> [Thu, 11 Jan 2018 11:57:59 +0000] rev 35606
pull: hold wlock for the full operation when --update is used
With now, the wlock is not held between the pull and the update. This can lead
to race condition and make logic checking to post pull results more complicated
(eg: with _afterlock).
Anton Shestakov <av6@dwimlabs.net> [Thu, 11 Jan 2018 18:20:08 +0800] rev 35605
hgweb: drop support of browsers that don't understand <canvas> (BC)
Internet Explorer 8 and below need excanvas aka ExplorerCanvas to support
canvas tag at all. We used to vendor the library in Mercurial, but IE8 was
discontinued and all support for it ceased in January 2016. We should do the
same and remove excanvas library.
Apart from just cleaning up code, this will also make downstream Debian
packages stop depending on libjs-excanvas, for example.
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 10 Jan 2018 19:36:45 -0800] rev 35604
rust: add TODO about lifetime of program_name variable
Per review comment in D1581.
Differential Revision: https://phab.mercurial-scm.org/D1847
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 10 Jan 2018 19:23:36 -0800] rev 35603
rust: move import of PathBuf
By moving it to the single function that uses it, we eliminate a
#cfg.
Differential Revision: https://phab.mercurial-scm.org/D1845
Jun Wu <quark@fb.com> [Wed, 10 Jan 2018 21:09:57 -0800] rev 35602
perf: do not import util.queue
This was added by af25237be091. But util.queue is not a module and is not
importable. I guess it wasn't noticed because of demandimport.
Differential Revision: https://phab.mercurial-scm.org/D1848
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 10 Jan 2018 19:08:51 -0800] rev 35601
rust: move Cargo.lock
If you do a `cargo build` in rust/, Cargo will create rust/Cargo.lock.
Furthermore, the previous rust/hgcli/Cargo.lock appears to not even be
consulted because the auto-generated rust/Cargo.lock varied from
rust/hgcli/Cargo.lock.
This commit moves Cargo.lock to where Cargo expects it to be.
While we're here, bump the version of libc to the latest available.
Differential Revision: https://phab.mercurial-scm.org/D1844
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 10 Jan 2018 19:04:52 -0800] rev 35600
run-tests: fix regular expression for path test
The previous regexp would match the empty string. This fixes
a mistake added in 964212780daf.
Differential Revision: https://phab.mercurial-scm.org/D1843
Boris Feld <boris.feld@octobus.net> [Sun, 17 Dec 2017 04:31:27 +0100] rev 35599
perf: add threading capability to perfbdiff
Since we are releasing the GIL during diffing, it is interesting to see how a
thread pool would perform on diffing. We add a new `--threads` argument to
commands. Synchronizing the thread pool is a bit complex because we want to be
able to reuse it from one run to another.
On my computer (i7 with 4 cores + hyperthreading), I get the following data for
about 12000 revisions:
threads wall comb wall gain comb overhead
none 31.596715 31.59 0.00% 0.00%
1 31.621228 31.62 -0.08% 0.09%
2 16.406202 32.8 48.08% 3.83%
3 11.598334 34.76 63.29% 10.03%
4 9.205421 36.77 70.87% 16.40%
5 8.517604 42.51 73.04% 34.57%
6 7.94645 47.58 74.85% 50.62%
7 7.434972 51.92 76.47% 64.36%
8 7.070638 55.34 77.62% 75.18%
Compared to the feature disabled (threads=0), the overhead is negligible with
the threading code (threads=1), and the gain is already 48% with two threads.
Paul Morelle <paul.morelle@octobus.net> [Wed, 10 Jan 2018 17:24:25 +0100] rev 35598
upgraderepo: select correct deltareuse depending on actions
Only 'redeltafulladd' was taken into account because of a small typo.
Yuya Nishihara <yuya@tcha.org> [Tue, 02 Jan 2018 18:35:11 +0900] rev 35597
revsetlang: add %p specifier to format list of function arguments
This will be used to construct parameters passed to _matchfiles().
Yuya Nishihara <yuya@tcha.org> [Tue, 02 Jan 2018 21:05:40 +0900] rev 35596
revsetlang: unnest inner functions from formatspec()
Yuya Nishihara <yuya@tcha.org> [Sat, 01 Apr 2017 17:51:56 +0900] rev 35595
revsetlang: fix quoting of %ls string
Before, "'" wasn't escaped appropriately. This also changes the separator
'\0' to '\\0', but that's okay as a string token is unescaped.
Yuya Nishihara <yuya@tcha.org> [Sat, 01 Apr 2017 17:44:07 +0900] rev 35594
revsetlang: catch invalid value passed to formatspec()
The scope of AttributeError is narrowed because it's more likely to be
triggered by mistake.
Yuya Nishihara <yuya@tcha.org> [Sat, 01 Apr 2017 17:28:28 +0900] rev 35593
revsetlang: check incomplete revspec format character
Yuya Nishihara <yuya@tcha.org> [Sat, 01 Apr 2017 17:25:45 +0900] rev 35592
revsetlang: check number of arguments passed to formatspec()
Yuya Nishihara <yuya@tcha.org> [Sat, 01 Apr 2017 17:18:31 +0900] rev 35591
revsetlang: catch invalid format character with %l prefix
listexp() could call argtype() with an invalid format character, but that
wasn't checked before.
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 29 Dec 2017 06:32:17 +0530] rev 35590
py3: add 8 new passing tests to the whitelist
Differential Revision: https://phab.mercurial-scm.org/D1800
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 29 Dec 2017 05:33:36 +0530] rev 35589
py3: use list() to get a list of items using dict.items()
dict.items() on Python 3 returns a generator over the values of the dictionary,
hence we can't delete elements while iterating over dict.items() in Python 3.
Differential Revision: https://phab.mercurial-scm.org/D1799
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 29 Dec 2017 05:31:27 +0530] rev 35588
py3: convert dict keys' to str before passing as kwargs
We have pycompat.strkwargs() which converts the keys of a dict to str and
returns that.
Differential Revision: https://phab.mercurial-scm.org/D1798
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 29 Dec 2017 05:29:57 +0530] rev 35587
py3: make sure we open the file to write in bytes mode
Differential Revision: https://phab.mercurial-scm.org/D1797