Sun, 15 Apr 2018 22:28:03 -0400 configitems: register server.zstdlevel
Matt Harbison <matt_harbison@yahoo.com> [Sun, 15 Apr 2018 22:28:03 -0400] rev 37710
configitems: register server.zstdlevel Somehow, I managed to trigger a devel-warn running `hg serve` outside the test suite on one of the repos generated by running test-lfs-serve-access.t --keep. (I'm not hitting it now after doing a `make local`.) The only reference to this in all of the history is the help text added in e75463e3179f, and the translations. (It looks like the string is built dynamically with '%slevel', which is probably how this was missed. I wonder if this isn't getting routed to error.log for some reason.) In any event, server.zliblevel is registered, and that's required to pick up the documented default.
Sat, 14 Apr 2018 00:13:08 -0700 scmutil: make shortesthexnodeidprefix() take a full binary nodeid
Martin von Zweigbergk <martinvonz@google.com> [Sat, 14 Apr 2018 00:13:08 -0700] rev 37709
scmutil: make shortesthexnodeidprefix() take a full binary nodeid The shortest() template function depended on the behavior of revlog._partialmatch() for these types of inputs: * non-hex strings * ambiguous strings * too long strings revlog._partialmatch() seems to return the input unchanged in these cases, but we shouldn't depend on such a low-level function to match the behavior we want in the user-facing template function. Instead, let's handle these cases in the template function and always pass a binary nodeid to _partialmatch(). Differential Revision: https://phab.mercurial-scm.org/D3371
Fri, 13 Apr 2018 10:36:03 -0700 scmutil: make shortesthexnodeidprefix() use unfiltered repo
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Apr 2018 10:36:03 -0700] rev 37708
scmutil: make shortesthexnodeidprefix() use unfiltered repo Both callers were doing this, and resolvehexnodeidprefix() was also working on the unfiltered repo, so it makes more sense to have it all in one place. Differential Revision: https://phab.mercurial-scm.org/D3313
Sun, 15 Apr 2018 19:41:34 +0800 templates: adjust white space amount in the output of {whyunstable}
Anton Shestakov <av6@dwimlabs.net> [Sun, 15 Apr 2018 19:41:34 +0800] rev 37707
templates: adjust white space amount in the output of {whyunstable} There used to be 2 spaces between divergent nodes (when not using custom template for divergentnodes) because divergentnodes is a hybrid list, which means it gets ' '.join()ed, but formatnode() already had a space. Now it doesn't, which requires extra effort in writing custom templates for whyunstable, but at least it looks correctly by default. Test output needs to be sorted for stability.
Sun, 15 Apr 2018 19:28:01 +0800 tests: split long templates that use {whyunstable} and put them in hgrc
Anton Shestakov <av6@dwimlabs.net> [Sun, 15 Apr 2018 19:28:01 +0800] rev 37706
tests: split long templates that use {whyunstable} and put them in hgrc
Sun, 15 Apr 2018 18:37:22 +0800 tests: make custom templates that use {whyunstable} terser
Anton Shestakov <av6@dwimlabs.net> [Sun, 15 Apr 2018 18:37:22 +0800] rev 37705
tests: make custom templates that use {whyunstable} terser These templates demonstrate that {whyunstable} is fully template-friendly, but they don't need to produce such long lines of output.
Sun, 15 Apr 2018 18:27:49 +0800 tests: hg log shouldn't need --hidden to show whyunstable template keyword
Anton Shestakov <av6@dwimlabs.net> [Sun, 15 Apr 2018 18:27:49 +0800] rev 37704
tests: hg log shouldn't need --hidden to show whyunstable template keyword
Sat, 14 Apr 2018 15:39:57 +0200 makefile: add Ubuntu Bionic docker targets (.deb and ppa)
Antonio Muci <a.mux@inwind.it> [Sat, 14 Apr 2018 15:39:57 +0200] rev 37703
makefile: add Ubuntu Bionic docker targets (.deb and ppa) Bionic Beaver is an LTS release, supported until 2023-04.
Sat, 14 Apr 2018 18:23:57 +0200 makefile: reformat .PHONY targets
Antonio Muci <a.mux@inwind.it> [Sat, 14 Apr 2018 18:23:57 +0200] rev 37702
makefile: reformat .PHONY targets The list of make targets is likely to evolve over time. This reformats streamlines future patches.
Sat, 14 Apr 2018 15:57:55 +0200 makefile: mkdir is not needed on templatized docker builds
Antonio Muci <a.mux@inwind.it> [Sat, 14 Apr 2018 15:57:55 +0200] rev 37701
makefile: mkdir is not needed on templatized docker builds This imitates e63dfbbdbd07 and is a small addition to 231690dba9b4 and 5c1283713293
Sun, 01 Apr 2018 23:50:34 +0900 hgweb: convert _siblings to a factory function of mappinggenerator
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Apr 2018 23:50:34 +0900] rev 37700
hgweb: convert _siblings to a factory function of mappinggenerator IIUC, only reason it was a class is to make the generator restartable, which is now served by the mappinggenerator.
Sun, 01 Apr 2018 23:47:43 +0900 hgweb: extract a generator function of _siblings class
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Apr 2018 23:47:43 +0900] rev 37699
hgweb: extract a generator function of _siblings class _siblings will be converted to a plain function.
Sun, 01 Apr 2018 23:40:08 +0900 hgweb: wrap {changenav} and {nav} with mappinglist
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Apr 2018 23:40:08 +0900] rev 37698
hgweb: wrap {changenav} and {nav} with mappinglist
Sun, 01 Apr 2018 23:34:29 +0900 hgweb: make revnav.gen() simply build a list of mappings by one pass
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Apr 2018 23:34:29 +0900] rev 37697
hgweb: make revnav.gen() simply build a list of mappings by one pass There was actually no lazy stuff.
Sun, 01 Apr 2018 23:12:37 +0900 hgweb: lift {sessionvars} to a wrapped type
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Apr 2018 23:12:37 +0900] rev 37696
hgweb: lift {sessionvars} to a wrapped type Since a sessionvars object is updated in-place, we can't simply wrap it by mappinglist.
Sun, 01 Apr 2018 23:03:58 +0900 hgweb: make sessionvars class less dense
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Apr 2018 23:03:58 +0900] rev 37695
hgweb: make sessionvars class less dense
Sun, 01 Apr 2018 23:03:02 +0900 hgweb: prefix private variables of sessionvars with '_'
Yuya Nishihara <yuya@tcha.org> [Sun, 01 Apr 2018 23:03:02 +0900] rev 37694
hgweb: prefix private variables of sessionvars with '_'
Fri, 13 Apr 2018 16:32:33 -0400 lfs: update the HTTP status codes in error cases
Matt Harbison <matt_harbison@yahoo.com> [Fri, 13 Apr 2018 16:32:33 -0400] rev 37693
lfs: update the HTTP status codes in error cases I'm not bothering with validating PUT requests (for now), because the spec doesn't explicitly call out a Content-Type (though the example transcript does use the sensible 'application/octet-stream').
Sun, 25 Feb 2018 14:07:13 -0500 lfs: gracefully handle aborts on the server when corrupt blobs are detected
Matt Harbison <matt_harbison@yahoo.com> [Sun, 25 Feb 2018 14:07:13 -0500] rev 37692
lfs: gracefully handle aborts on the server when corrupt blobs are detected The aborts weren't killing the server, but this seems cleaner. I'm not sure if it matters to handle the remaining IOError in the test like this, for consistency. The error code still feels wrong (especially if the client is trying to download a corrupt blob) but I don't see anything better in the RFCs, and this is already used elsewhere because the Batch API spec specifically mentioned this as a "Validation Error".
Fri, 13 Apr 2018 14:16:30 -0400 lfs: fix the inferred remote store path when using a --prefix
Matt Harbison <matt_harbison@yahoo.com> [Fri, 13 Apr 2018 14:16:30 -0400] rev 37691
lfs: fix the inferred remote store path when using a --prefix This wasn't appending the '.git/info/lfs' path in this case.
Fri, 13 Apr 2018 12:39:54 -0400 lfs: log information about Internal Server Errors reported in the Batch API
Matt Harbison <matt_harbison@yahoo.com> [Fri, 13 Apr 2018 12:39:54 -0400] rev 37690
lfs: log information about Internal Server Errors reported in the Batch API Reporting a 500 and then not leaving any traces on the server seems like a receipe for frustration. There's similar log writing in hgweb.server.do_POST(). That doesn't write directly to the wsgi.errors object, so it doesn't seem worth trying to refactor. It does seem like earlier stack frames are missing for some reason.
Sat, 07 Apr 2018 12:48:21 -0400 test-lfs: add tests to force server error path coverage
Matt Harbison <matt_harbison@yahoo.com> [Sat, 07 Apr 2018 12:48:21 -0400] rev 37689
test-lfs: add tests to force server error path coverage The tests are somewhat fragile in that the extension that forces the errors is counting how many times some of the functions are being called, so it depends heavily on the content of the repo. Maybe we can do something clever like load an extension on the client, and have it send over instructions in the HTTP header how to fail. (I'm trying to avoid killing and restarting the server, because Windows seems to have issues with doing that a lot.) But I'd rather fix issues than polish tests before the freeze.
Sat, 14 Apr 2018 10:43:19 -0400 keepalive: add ** overlooked in 83250442dc81
Augie Fackler <augie@google.com> [Sat, 14 Apr 2018 10:43:19 -0400] rev 37688
keepalive: add ** overlooked in 83250442dc81 Caught by Yuya in D3326. Differential Revision: https://phab.mercurial-scm.org/D3372
Sat, 14 Apr 2018 17:27:32 +0900 test-check-commit: don't run hg per commit
Yuya Nishihara <yuya@tcha.org> [Sat, 14 Apr 2018 17:27:32 +0900] rev 37687
test-check-commit: don't run hg per commit We aren't stress testing CPU. $ time ./run-tests.py -l test-check-commit.t --timeout 600 (orig) 162.59s user 17.98s system 101% cpu 2:58.55 total (new) 5.85s user 0.99s system 98% cpu 6.939 total
Sat, 14 Apr 2018 20:34:14 +0800 templates: make divergentnodes in whyunstable keyword be a hybrid list
Anton Shestakov <av6@dwimlabs.net> [Sat, 14 Apr 2018 20:34:14 +0800] rev 37686
templates: make divergentnodes in whyunstable keyword be a hybrid list
Mon, 26 Mar 2018 17:00:12 +0800 templates: add whyunstable template keyword
Anton Shestakov <av6@dwimlabs.net> [Mon, 26 Mar 2018 17:00:12 +0800] rev 37685
templates: add whyunstable template keyword
Sat, 14 Apr 2018 00:41:44 -0400 commands: drop spurious r'' on dry_run in forget
Augie Fackler <augie@google.com> [Sat, 14 Apr 2018 00:41:44 -0400] rev 37684
commands: drop spurious r'' on dry_run in forget Fixes test-add.t on Python 3. Differential Revision: https://phab.mercurial-scm.org/D3365
Sat, 14 Apr 2018 00:56:53 -0400 tests: port inline extension in test-http-bundle1.t to py3
Augie Fackler <augie@google.com> [Sat, 14 Apr 2018 00:56:53 -0400] rev 37683
tests: port inline extension in test-http-bundle1.t to py3 # skip-blame just b prefixes Differential Revision: https://phab.mercurial-scm.org/D3366
Sat, 14 Apr 2018 01:35:44 -0400 tests: add all missing b prefixes in reactor tests
Augie Fackler <augie@google.com> [Sat, 14 Apr 2018 01:35:44 -0400] rev 37682
tests: add all missing b prefixes in reactor tests Both of these tests now pass on Python 3. # skip-blame just b prefixes. So many b prefixes. Differential Revision: https://phab.mercurial-scm.org/D3369
Sat, 14 Apr 2018 01:34:44 -0400 stringutil: ast.literal_eval needs a unicode on py3
Augie Fackler <augie@google.com> [Sat, 14 Apr 2018 01:34:44 -0400] rev 37681
stringutil: ast.literal_eval needs a unicode on py3 Fortunately for us, this is really only used internally, so we can be lazy about the encoding here. test-wireproto-framing.py now passes on Python 3. Differential Revision: https://phab.mercurial-scm.org/D3368
Fri, 13 Apr 2018 22:55:01 -0700 scmutil: introduce shortesthexnodeidprefix()
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Apr 2018 22:55:01 -0700] rev 37680
scmutil: introduce shortesthexnodeidprefix() We have scmutil.resolvehexnodeidprefix() for resolving a prefix to a full nodeid, so it makes sense to have the inverse method next to it. For now it just delegates to changelog.shortest(), but it will soon also make sure it's called on the unfiltered repo, to match resolvehexnodeidprefix(). Note that the change in show.py also makes it so the conversion from revnum to nodeid is done on the filtered repo, but that should be inconsequential since the revs are all from the filtered repo anyway. Differential Revision: https://phab.mercurial-scm.org/D3370
Fri, 13 Apr 2018 11:00:30 -0700 scmutil: use resolvehexnodeidprefix() from revsymbol()
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Apr 2018 11:00:30 -0700] rev 37679
scmutil: use resolvehexnodeidprefix() from revsymbol() I should have copied this from changectx.__init__ into in 35b34202dd3b (context: handle partial nodeids in revsymbol(), 2018-04-08). Differential Revision: https://phab.mercurial-scm.org/D3310
Fri, 13 Apr 2018 22:46:37 -0700 scmutil: rename resolvepartialhexnodeid() to resolvehexnodeidprefix()
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Apr 2018 22:46:37 -0700] rev 37678
scmutil: rename resolvepartialhexnodeid() to resolvehexnodeidprefix() I'm going to wrap revlog.shortest() in scmutil. I plan on calling it shortesthexnodeidprefix(). resolvehexnodeidprefix() matches that better. Also, "prefix" carries more information than "partial". Differential Revision: https://phab.mercurial-scm.org/D3309
Fri, 13 Apr 2018 09:48:22 -0700 scmutil: document that isrevsymbol() raises on ambiguous node prefix
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Apr 2018 09:48:22 -0700] rev 37677
scmutil: document that isrevsymbol() raises on ambiguous node prefix Differential Revision: https://phab.mercurial-scm.org/D3308
Fri, 13 Apr 2018 09:19:38 -0700 context: set stack level for deprecation warning
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Apr 2018 09:19:38 -0700] rev 37676
context: set stack level for deprecation warning This patch makes the deprecation warning print the caller of repo.__getitem__. That's not quite correct, since there could also be other callers of changectx.__init__, but it seems like the most helpful stack level in practice. Differential Revision: https://phab.mercurial-scm.org/D3307
Fri, 13 Apr 2018 14:18:26 -0700 util: set correct stack level on deprecation warnings
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Apr 2018 14:18:26 -0700] rev 37675
util: set correct stack level on deprecation warnings Without this patch, you'll get something like this: <path>/mercurial/util.py:3784: DeprecationWarning: 'util.hgexecutable' is deprecated, use 'utils.procutil.hgexecutable' (but on one line) Differential Revision: https://phab.mercurial-scm.org/D3331
Sat, 14 Apr 2018 12:57:32 +0900 revset: pass in lookup function instead of repo (API)
Yuya Nishihara <yuya@tcha.org> [Sat, 14 Apr 2018 12:57:32 +0900] rev 37674
revset: pass in lookup function instead of repo (API) And document that it's only for legacy lookup. If we have a repo, we're likely to do more things where that shouldn't be done.
Sat, 14 Apr 2018 12:44:40 +0900 revset: drop support for posttreebuilthook() (API)
Yuya Nishihara <yuya@tcha.org> [Sat, 14 Apr 2018 12:44:40 +0900] rev 37673
revset: drop support for posttreebuilthook() (API) AFAIK, the only user was the directaccess extension, which is in core now.
Sat, 14 Apr 2018 02:07:42 +0530 py3: make values bytes before passing into server.runservice()
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 14 Apr 2018 02:07:42 +0530] rev 37672
py3: make values bytes before passing into server.runservice() The values of opts dict still needed to be converted to bytes. Differential Revision: https://phab.mercurial-scm.org/D3330
Fri, 13 Apr 2018 18:44:18 -0400 py3: two more passing tests
Augie Fackler <augie@google.com> [Fri, 13 Apr 2018 18:44:18 -0400] rev 37671
py3: two more passing tests Differential Revision: https://phab.mercurial-scm.org/D3338
Fri, 13 Apr 2018 18:28:58 -0400 localrepo: add some overlooked strkwargs love for py3
Augie Fackler <augie@google.com> [Fri, 13 Apr 2018 18:28:58 -0400] rev 37670
localrepo: add some overlooked strkwargs love for py3 Differential Revision: https://phab.mercurial-scm.org/D3337
Fri, 13 Apr 2018 18:17:45 -0400 py3: paper over differences in future exception handling
Augie Fackler <augie@google.com> [Fri, 13 Apr 2018 18:17:45 -0400] rev 37669
py3: paper over differences in future exception handling It looks like Python 3's futures library lacks set_exception_info entirely. We'll just give up and use set_exception in that case. # no-check-commit because the underbar naming is just saner here Differential Revision: https://phab.mercurial-scm.org/D3336
Sat, 14 Apr 2018 02:06:03 +0530 py3: add b'' prefixes to make values bytes
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 14 Apr 2018 02:06:03 +0530] rev 37668
py3: add b'' prefixes to make values bytes # skip-blame beacuse just b'' prefixes Differential Revision: https://phab.mercurial-scm.org/D3329
Sat, 14 Apr 2018 02:04:19 +0530 py3: use b"%d" instead of str() to convert int to bytes
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 14 Apr 2018 02:04:19 +0530] rev 37667
py3: use b"%d" instead of str() to convert int to bytes While I was here, I added 'and None' to suppress return values of .write() calls. Differential Revision: https://phab.mercurial-scm.org/D3328
Sat, 14 Apr 2018 02:03:02 +0530 py3: add b'' prefixes to make values bytes
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 14 Apr 2018 02:03:02 +0530] rev 37666
py3: add b'' prefixes to make values bytes # skip-blame because just b'' prefixes Differential Revision: https://phab.mercurial-scm.org/D3327
Sat, 14 Apr 2018 02:02:11 +0530 py3: use str variables to check keys in request header
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 14 Apr 2018 02:02:11 +0530] rev 37665
py3: use str variables to check keys in request header The values in header are of str type. Differential Revision: https://phab.mercurial-scm.org/D3326
Sat, 14 Apr 2018 02:00:43 +0530 py3: make sure curses.tigetstr() first argument is a str
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 14 Apr 2018 02:00:43 +0530] rev 37664
py3: make sure curses.tigetstr() first argument is a str Differential Revision: https://phab.mercurial-scm.org/D3325
Sat, 14 Apr 2018 01:59:55 +0530 py3: use stringutil.forcebytestr() instead of str()
Pulkit Goyal <7895pulkit@gmail.com> [Sat, 14 Apr 2018 01:59:55 +0530] rev 37663
py3: use stringutil.forcebytestr() instead of str() We need to convert errors to bytes using stringutil.forcebytestr() Differential Revision: https://phab.mercurial-scm.org/D3324
(0) -30000 -10000 -3000 -1000 -300 -100 -48 +48 +100 +300 +1000 +3000 +10000 tip