Martin von Zweigbergk <martinvonz@google.com> [Fri, 30 Oct 2020 13:26:18 -0700] rev 45881
help: document the new [command-templates] config section
Differential Revision: https://phab.mercurial-scm.org/D9265
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Sun, 08 Nov 2020 16:23:35 -0500] rev 45880
strip: move into core
As discussed at the 5.2 sprint, replace strip extension by a core
command, debugstrip. Obviously, the extension stays for backwards
compatibility.
As an implementation note, I moved the strip file as is into core,
which is not done elsewhere, AFAIK. I could have inlined it into
debugcommands, but that doesn't sound great.
Differential Revision: https://phab.mercurial-scm.org/D9285
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 07 Nov 2020 16:36:19 -0800] rev 45879
revlog: pass sidedata argument to flagutil.processflagswrite()
Bug found through pytype.
Differential Revision: https://phab.mercurial-scm.org/D9280
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 07 Nov 2020 16:45:58 -0800] rev 45878
pure: guard against empty blocks
If blocks is empty, we append `None` to the returned list, which is
incorrect.
This subtle issue was caught by pytype, which correctly identified
the return value as List[Optional[Tuple]] because of this possibility.
Differential Revision: https://phab.mercurial-scm.org/D9279
Raphaël Gomès <rgomes@octobus.net> [Mon, 16 Nov 2020 16:38:57 +0100] rev 45877
rust-status: don't bubble up os errors, translate them to bad matches
In the rare cases when either the OS/filesystem throws an error on an otherwise
valid action, or because a path is not representable on the filesystem, or
because of concurrent actions in the filesystem, we want to warn the user about
said path instead of bubbling up the error, causing an exception to be raised
in the Python layer.
Differential Revision: https://phab.mercurial-scm.org/D9320
Raphaël Gomès <rgomes@octobus.net> [Mon, 16 Nov 2020 16:36:00 +0100] rev 45876
rust-status: properly translate OSError to Python
This is probably never going to be called after the next few patches, but we
might as well make sure this is done correctly for the future rewrite.
Differential Revision: https://phab.mercurial-scm.org/D9319
Martin von Zweigbergk <martinvonz@google.com> [Mon, 16 Nov 2020 21:28:42 -0800] rev 45875
shelve: clear merge state after partial shelve
Differential Revision: https://phab.mercurial-scm.org/D9335
Martin von Zweigbergk <martinvonz@google.com> [Mon, 16 Nov 2020 22:38:36 -0800] rev 45874
tests: show that interactive shelve can leave the repo with a merge state
If part of a file is shelved (as we already do in a test), there will
be an unfinished merge state left after `hg shelve` finishes. There
should never be a merge conflict and there should never be a reason
that the user would like to re-resolve conflicts, so we should clear
that state (see next patch).
Differential Revision: https://phab.mercurial-scm.org/D9334
Martin von Zweigbergk <martinvonz@google.com> [Mon, 16 Nov 2020 10:30:53 -0800] rev 45873
histedit: disable color while rendering template for use in plan
Differential Revision: https://phab.mercurial-scm.org/D9324
Martin von Zweigbergk <martinvonz@google.com> [Mon, 16 Nov 2020 10:30:06 -0800] rev 45872
tests: show how `hg histedit` can put color codes in histedit plan
Differential Revision: https://phab.mercurial-scm.org/D9323
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Nov 2020 09:41:49 -0800] rev 45871
split: disable color while rendering template for use in commit message
Differential Revision: https://phab.mercurial-scm.org/D9322
Martin von Zweigbergk <martinvonz@google.com> [Thu, 12 Nov 2020 17:06:45 -0800] rev 45870
tests: show how `hg split` can put color codes in commit template
With D9255, I made it so `hg split` respects the
`commmand-templates.oneline-summary` config. I don't think I realized
that the output I modified was being put in a commit message
template. The result was that if you have coloring enabled, you get
colors in the commit template. This patch show that. The test is
unfortunately pretty verbose (like most other `hg split` tests) and
shows a bunch of irrelevant "color codes" (templater labels).
Differential Revision: https://phab.mercurial-scm.org/D9321
Martin von Zweigbergk <martinvonz@google.com> [Mon, 16 Nov 2020 16:00:13 -0800] rev 45869
dispatch: move some helper functions down into scmutil
I plan to reuse `formatparse()` in the next patch.
Differential Revision: https://phab.mercurial-scm.org/D9331
Martin von Zweigbergk <martinvonz@google.com> [Mon, 16 Nov 2020 15:11:51 -0800] rev 45868
errors: raise more specific errors from rewriteutil
Differential Revision: https://phab.mercurial-scm.org/D9330
Yuya Nishihara <yuya@tcha.org> [Tue, 17 Nov 2020 19:29:08 +0900] rev 45867
chgserver: backport py3 buffered I/O workarounds from procutil
I've recently switched to new machine and I found chg's stdout is fully
buffered.
Even though chg server is a daemon process, it inherits the environment
where the chg client originally forked the server. This means the server's
stdout might have been wrapped by LineBufferedWrapper. That's why we need
to do wrap/unwrap in both ways.
The "if" condition in _restoreio() looks weird, but I'm not willing to
clean things up because stdio behavior is fundamentally different between
py2 and py3, and py2 support will be dropped anyway.
Martin von Zweigbergk <martinvonz@google.com> [Thu, 12 Nov 2020 15:28:06 -0800] rev 45866
errors: use InputError for some errors on `hg clone`
Differential Revision: https://phab.mercurial-scm.org/D9329
Martin von Zweigbergk <martinvonz@google.com> [Thu, 12 Nov 2020 13:22:40 -0800] rev 45865
errors: raise InputError when given non-existent paths etc
Differential Revision: https://phab.mercurial-scm.org/D9328
Martin von Zweigbergk <martinvonz@google.com> [Thu, 12 Nov 2020 10:35:33 -0800] rev 45864
errors: use InputError for errors about bad label names (tags etc)
Differential Revision: https://phab.mercurial-scm.org/D9327
Martin von Zweigbergk <martinvonz@google.com> [Thu, 12 Nov 2020 09:53:14 -0800] rev 45863
errors: use InputError for errors about bad paths
Differential Revision: https://phab.mercurial-scm.org/D9326
Martin von Zweigbergk <martinvonz@google.com> [Tue, 10 Nov 2020 09:14:01 -0800] rev 45862
destutil: raise more specific error when histedit.defaultrev is empty
Differential Revision: https://phab.mercurial-scm.org/D9313
Martin von Zweigbergk <martinvonz@google.com> [Tue, 20 Oct 2020 08:56:00 -0700] rev 45861
errors: raise more specific errors when default remote not configured
Differential Revision: https://phab.mercurial-scm.org/D9312
Martin von Zweigbergk <martinvonz@google.com> [Thu, 22 Oct 2020 13:56:01 -0700] rev 45860
errors: set detailed exit code to 30 for config errors
This is per https://www.mercurial-scm.org/wiki/ErrorCategoriesPlan.
Differential Revision: https://phab.mercurial-scm.org/D9311
Martin von Zweigbergk <martinvonz@google.com> [Mon, 12 Oct 2020 12:44:18 -0700] rev 45859
errors: introduce StateError and use it from commands and cmdutil
This very similar to an earlier patch (which was for `InputError`).
In this patch, I also updated the transplant extension only because
`test-transplant.t` would otherwise have needed a `#if continueflag`.
Differential Revision: https://phab.mercurial-scm.org/D9310
Martin von Zweigbergk <martinvonz@google.com> [Thu, 22 Oct 2020 13:31:34 -0700] rev 45858
errors: set detailed exit code to 100 for some remote errors
This is per https://www.mercurial-scm.org/wiki/ErrorCategoriesPlan.
Differential Revision: https://phab.mercurial-scm.org/D9309
Martin von Zweigbergk <martinvonz@google.com> [Thu, 12 Nov 2020 21:56:52 -0800] rev 45857
errors: catch urllib errors specifically instead of using safehasattr()
Before this patch, we would catch `IOError` and `OSError` and check if
the instance had a `.code` member (indicates `HTTPError`) or a
`.reason` member (indicates the more generic `URLError`). It seems to
me that can simply catch those exception specifically instead, so
that's what this code does. The existing code is from fbe8834923c5
(commands: report http exceptions nicely, 2005-06-17), so I suspect
it's just that there was no `urllib2` (where `URLError` lives) back
then.
The old code mentioned `SSLError` in a comment. The new code does
*not* try to catch that. The documentation for `ssl.SSLError` says
that it has a `.reason` property, but `python -c 'import ssl;
print(dir(ssl.SSLError("foo", Exception("bar"))))` doesn't mention
that property on either Python 2 or Python 3 on my system. It also
seems that `sslutil` is pretty careful about converting `ssl.SSLError`
to `error.Abort`. It also is carefult to not assume that instances of
the exception have a `.reason`. So I at least don't want to catch
`ssl.SSLError` and handle it the same way as `URLError` because that
would likely result in a crash. I also wonder if we don't need to
handle it at all (because `sslutil` might handle all the cases). It's
now early in the release cycle, so perhaps we can just see how it
goes?
Differential Revision: https://phab.mercurial-scm.org/D9318
Martin von Zweigbergk <martinvonz@google.com> [Thu, 12 Nov 2020 08:29:55 -0800] rev 45856
errors: raise InputError in fancyopts
If a value of wrong type is passed to a command line flag, that's
cleary an InputError.
Differential Revision: https://phab.mercurial-scm.org/D9308
Mathias De Mare <mathias.de_mare@nokia.com> [Fri, 06 Nov 2020 17:32:23 +0100] rev 45855
packaging: switch centos 7 packaging to python 3
Differential Revision: https://phab.mercurial-scm.org/D9293
Mathias De Mare <mathias.de_mare@nokia.com> [Fri, 06 Nov 2020 11:24:54 +0100] rev 45854
packaging: remove centos5 and centos6 support
Differential Revision: https://phab.mercurial-scm.org/D9292
Mathias De Mare <mathias.de_mare@nokia.com> [Wed, 11 Nov 2020 22:01:45 +0100] rev 45853
test-filecache: use sys.executable to call python
As was mentioned in c102b704edb5, test scripts calling 'python' or 'python3'
might use the wrong python.
For test-filecache.py, this causes a failed test on CentOS 7.
Differential Revision: https://phab.mercurial-scm.org/D9295
Augie Fackler <augie@google.com> [Tue, 01 Sep 2020 11:03:47 -0400] rev 45852
make: add a pyoxidizer target
Differential Revision: https://phab.mercurial-scm.org/D9291
Augie Fackler <augie@google.com> [Tue, 10 Nov 2020 12:44:15 -0500] rev 45851
pyoxidizer: switch to modern config using run_command instead of run_mode
Differential Revision: https://phab.mercurial-scm.org/D9290
Augie Fackler <augie@google.com> [Tue, 03 Nov 2020 16:25:33 -0500] rev 45850
pyoxidizer: default to one-file binary on non-Windows platforms
Windows has some extra constraints that require a multi-file install,
but we expect folks to use an MSI or similar installer there so it's
less of a big deal.
Differential Revision: https://phab.mercurial-scm.org/D9289