Fri, 06 Mar 2020 12:44:51 +0100 debuginstall: print if Rust extensions are installed
Raphaël Gomès <rgomes@octobus.net> [Fri, 06 Mar 2020 12:44:51 +0100] rev 44481
debuginstall: print if Rust extensions are installed This should make it easier to use the Rust extensions. Another patch on will be exposing a version and more useful information, but it can only be done on top of this very patch, since it is targeting the stable branch and the API has already changed on the default branch. Differential Revision: https://phab.mercurial-scm.org/D8248
Fri, 06 Mar 2020 13:54:35 -0500 nodemap: fix missing r-prefix on regular expression
Augie Fackler <augie@google.com> [Fri, 06 Mar 2020 13:54:35 -0500] rev 44480
nodemap: fix missing r-prefix on regular expression Looking at this regular expression, it's pretty obvious from reading it that it wanted to match literal ., but since the r was missing on the pattern it was matching any character. I guess we're just lucky nothing bad happened as a result. This was automatically fixed by pyupgrade, but I split it out into its own change because it seemed important. Differential Revision: https://phab.mercurial-scm.org/D8254
Fri, 06 Mar 2020 23:04:58 +0100 tests: use pyflakes module instead of pyflakes executable
Manuel Jacob <me@manueljacob.de> [Fri, 06 Mar 2020 23:04:58 +0100] rev 44479
tests: use pyflakes module instead of pyflakes executable This results in that the pyflakes version specific to the configured Python version is used. This way, both the Python 2-specific and the Python 3-specific pyflakes are run by the test suite (depending on the configured Python version). For downstream projects which are using Mercurial’s test infrastructure and are not yet ported to Python 3 (e.g. hg-git) it ensures that the correct pyflakes version is run even when the system’s default pyflakes is the Python 3-specific one.
Tue, 03 Mar 2020 15:56:00 +0100 copies-tests: add a case where with merge with an overwritten files
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 03 Mar 2020 15:56:00 +0100] rev 44478
copies-tests: add a case where with merge with an overwritten files This is similar to the BF/FB case, but in this case, the other branch updated the file. So an actual merge happens and the two "independant" file history has to be merged. Differential Revision: https://phab.mercurial-scm.org/D8242
Tue, 03 Mar 2020 15:46:28 +0100 copies-tests: add a case where a file is deleted/added but with a merge
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 03 Mar 2020 15:46:28 +0100] rev 44477
copies-tests: add a case where a file is deleted/added but with a merge This is a case similar to DB/BD, but in this case the other branch updated the file. So an actual merge happens and the two "independant" file history has to be merged. Differential Revision: https://phab.mercurial-scm.org/D8241
Tue, 03 Mar 2020 12:35:24 +0100 copies-tests: add a test with a rename overwriting another file
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 03 Mar 2020 12:35:24 +0100] rev 44476
copies-tests: add a test with a rename overwriting another file This is a variation of the "BD" case, but this time, the file is not "new", it is overwritten by another file being renamed. Differential Revision: https://phab.mercurial-scm.org/D8240
Sat, 29 Feb 2020 19:50:05 +0100 copies-tests: add a `h` to the root commit (for chain merge tests)
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 29 Feb 2020 19:50:05 +0100] rev 44475
copies-tests: add a `h` to the root commit (for chain merge tests) This will be useful for incoming new test cases. We need a new file to rename around. Differential Revision: https://phab.mercurial-scm.org/D8239
Sat, 07 Mar 2020 00:03:41 +0100 copies-tests: remove the final summary
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 07 Mar 2020 00:03:41 +0100] rev 44474
copies-tests: remove the final summary The more we add tests, the less useful it is. So after discussion with Martin, we decided to drop it. Differential Revision: https://phab.mercurial-scm.org/D8257
Tue, 03 Mar 2020 13:18:31 +0100 copies-tests: clarify the description of the EA/AE cases
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 03 Mar 2020 13:18:31 +0100] rev 44473
copies-tests: clarify the description of the EA/AE cases The previous description of the merge was just wrong. (It seems the result a non-updated copy-paste) Differential Revision: https://phab.mercurial-scm.org/D8238
Tue, 03 Mar 2020 09:27:31 +0100 copies-tests: update the analysis of the BD/DB cases
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 03 Mar 2020 09:27:31 +0100] rev 44472
copies-tests: update the analysis of the BD/DB cases After thinking more about it, the current change in output between the two merges is not due to an ambiguity, it is introduce by a bug in merge/commit that record a wrong file history. Fixing the bug should fix the output. In the meantime, we have a wrong behavior. In practice the bug is not in the merge code (who does the right things), but in the commit code (who get confused when recording the new file revision). Differential Revision: https://phab.mercurial-scm.org/D8237
Fri, 06 Mar 2020 11:02:02 +0100 copies-tests: swap two branch description
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 06 Mar 2020 11:02:02 +0100] rev 44471
copies-tests: swap two branch description They were swapped and now match their intended block. Differential Revision: https://phab.mercurial-scm.org/D8247
Fri, 06 Mar 2020 13:27:41 -0500 cleanup: run pyupgrade on our source tree to clean up varying things
Augie Fackler <augie@google.com> [Fri, 06 Mar 2020 13:27:41 -0500] rev 44470
cleanup: run pyupgrade on our source tree to clean up varying things Built with: hg files 'set:**.py - mercurial/thirdparty/** - "contrib/python-zstandard/**" - hgext/fsmonitor/pywatchman/**' | xargs pyupgrade --keep-percent-format --keep-extraneous-parens and then blackened. pyupgrade comes from https://github.com/asottile/pyupgrade with a patch to let me preserve extraneous parens (which we use for marking strings that shouldn't be translated), and lets us clean up a bunch of idioms that have cruftily accumulated over the years. # skip-blame no-op automated code cleanups Differential Revision: https://phab.mercurial-scm.org/D8255
Fri, 06 Mar 2020 10:52:44 +0100 tests: avoid implicit conversion of str to unicode
Manuel Jacob <me@manueljacob.de> [Fri, 06 Mar 2020 10:52:44 +0100] rev 44469
tests: avoid implicit conversion of str to unicode On Python 2, str.encode('utf-8') implicitly converts the string to unicode and then back to str. Using _sys2bytes() ensures that opt is only encoded on Python 3, where opt is unicode. Although contrived, before this change, a UnicodeDecodeError could be triggered on Python 2 when passing non-ascii values to --extra-config-opt.
Fri, 06 Mar 2020 09:50:57 +0100 tests: rename _bytespath() to _sys2bytes() and _strpath() to _sys2str()
Manuel Jacob <me@manueljacob.de> [Fri, 06 Mar 2020 09:50:57 +0100] rev 44468
tests: rename _bytespath() to _sys2bytes() and _strpath() to _sys2str() The names were not general enough because e.g. _strpath() was used for converting IP addresses.
Thu, 05 Mar 2020 18:19:21 +0100 tests: avoid implicit conversion of str to unicode
Manuel Jacob <me@manueljacob.de> [Thu, 05 Mar 2020 18:19:21 +0100] rev 44467
tests: avoid implicit conversion of str to unicode On Python 2, str.encode('ascii') implicitly converts the string to unicode and then back to str. Since the converted value is a path, _bytespath can be used instead.
Thu, 05 Mar 2020 18:10:19 +0100 tests: avoid implicit conversion of str to unicode
Manuel Jacob <me@manueljacob.de> [Thu, 05 Mar 2020 18:10:19 +0100] rev 44466
tests: avoid implicit conversion of str to unicode On Python 2, str.encode('ascii') implicitly converts the string to unicode and then back to str. Since the point of this expression is to convert a bool to a str, the '%r' conversion specifier can be used instead in the format string.
Tue, 18 Feb 2020 19:11:13 +0100 nodemap: warm the persistent nodemap on disk with debugupdatecache
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 18 Feb 2020 19:11:13 +0100] rev 44465
nodemap: warm the persistent nodemap on disk with debugupdatecache When appropriate, the nodemap cache file will be created. Differential Revision: https://phab.mercurial-scm.org/D8173
Sat, 29 Feb 2020 19:31:33 +0100 copies-tests: update to null after setup for output stability
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 29 Feb 2020 19:31:33 +0100] rev 44464
copies-tests: update to null after setup for output stability This avoid having '@' moving around in graph output when the graph evolves. after this change, graph evolution is still noisy, but less. Differential Revision: https://phab.mercurial-scm.org/D8236
Tue, 03 Mar 2020 08:55:27 +0100 copies-tests: remove extra log call at the end of the chain-merge test file
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 03 Mar 2020 08:55:27 +0100] rev 44463
copies-tests: remove extra log call at the end of the chain-merge test file We do not actually need theses as the graph is displayed earlier anyway. I think they are the remain of me trying to understand that case better. Differential Revision: https://phab.mercurial-scm.org/D8235
Thu, 05 Mar 2020 08:37:08 -0800 commit: print debug message when clearing dirstate and wdir clean
Martin von Zweigbergk <martinvonz@google.com> [Thu, 05 Mar 2020 08:37:08 -0800] rev 44462
commit: print debug message when clearing dirstate and wdir clean This case is a little weird, so let's have a debug message. Differential Revision: https://phab.mercurial-scm.org/D8231
Thu, 05 Mar 2020 10:46:31 -0800 merge with stable
Martin von Zweigbergk <martinvonz@google.com> [Thu, 05 Mar 2020 10:46:31 -0800] rev 44461
merge with stable
Thu, 05 Mar 2020 10:52:51 -0500 merge with stable
Augie Fackler <augie@google.com> [Thu, 05 Mar 2020 10:52:51 -0500] rev 44460
merge with stable
Wed, 04 Mar 2020 14:21:23 -0500 commands: switch one call of check_at_most_one_arg to strings
Augie Fackler <augie@google.com> [Wed, 04 Mar 2020 14:21:23 -0500] rev 44459
commands: switch one call of check_at_most_one_arg to strings This opts hasn't been through the byteskwargs mulcher, so we can just use strings here instead of bytes. Fixes the test changes from D8204 on Python 3, which was the only place this was a problem. Differential Revision: https://phab.mercurial-scm.org/D8222
Fri, 28 Feb 2020 11:32:27 -0800 cleanup: remove redundant clearing of mergestate in rebase and shelve
Martin von Zweigbergk <martinvonz@google.com> [Fri, 28 Feb 2020 11:32:27 -0800] rev 44458
cleanup: remove redundant clearing of mergestate in rebase and shelve `repo.commit()` now clears the merge state even if it ends up not creating a commit because there were no changes to commit. Differential Revision: https://phab.mercurial-scm.org/D8197
Fri, 28 Feb 2020 11:32:02 -0800 commit: clear resolved mergestate even if working copy is clean
Martin von Zweigbergk <martinvonz@google.com> [Fri, 28 Feb 2020 11:32:02 -0800] rev 44457
commit: clear resolved mergestate even if working copy is clean If the mergestate has resolved conflicts and a commit is successfully created (either because there are changes in the working copy or because ui.allowemptycommit=yes), we will also clear the merge state. However, if the working copy is clean (and ui.allowemptycommit=no), we leave the mergestate there. The user may notice it in `hg resolve -l` output (but not in `hg status -v` output). It's not clear how the user should clear it, but probably via `hg co -C .`. It's also quite likely that they won't even notice it and it will get cleared by a later `hg commit` (of unrelated changes). This patch makes it so that `hg commit` also clears resolved merge conflicts even if the command doesn't end up writing a commit because the working copy was empty. That's probably a little weird (commands that abort should generally avoid changing the repo), but it still seems mostly harmless, and it reduces the risk of more bugs like https://bz.mercurial-scm.org/show_bug.cgi?id=5494. I just ran into a version of that bug in the Evolve extension and that's what triggered this series. Differential Revision: https://phab.mercurial-scm.org/D8196
Wed, 04 Mar 2020 00:45:54 -0500 phabricator: avoid a stacktrace when command arguments are missing
Matt Harbison <matt_harbison@yahoo.com> [Wed, 04 Mar 2020 00:45:54 -0500] rev 44456
phabricator: avoid a stacktrace when command arguments are missing Previously, the TypeError wasn't properly converted to a SignatureError when improper arguments were supplied to the inner function, because the stack depth is 2 inside the vcrcommand decorator. The `__name__` and `__doc__` attributes need to be reassigned to the new wrapper so that the help summary is available. Differential Revision: https://phab.mercurial-scm.org/D8209
Fri, 24 Jan 2020 15:51:19 -0800 mq: don't tell user to commit merge that we already committed
Martin von Zweigbergk <martinvonz@google.com> [Fri, 24 Jan 2020 15:51:19 -0800] rev 44455
mq: don't tell user to commit merge that we already committed Differential Revision: https://phab.mercurial-scm.org/D8000
Fri, 24 Jan 2020 15:28:37 -0800 merge: make hg.merge() take a context instead of a node
Martin von Zweigbergk <martinvonz@google.com> [Fri, 24 Jan 2020 15:28:37 -0800] rev 44454
merge: make hg.merge() take a context instead of a node Many callers already have a repo, so we might as well pass that. `merge.update()` will look up the context object later. This patch is part of making it so we pass around the context object all the way down instead. I also removed the `repo` argument since it can be retrieved from the context. Differential Revision: https://phab.mercurial-scm.org/D7999
Fri, 17 Jan 2020 21:22:23 +0300 debugbackupbundle: introduce command to interact with strip backups
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 17 Jan 2020 21:22:23 +0300] rev 44453
debugbackupbundle: introduce command to interact with strip backups This vendors backups extension from hg-experimental. Listing backups and having some utility to apply them is nice. I know we have obsmarkers now, but this will help a lot of end users who still uses strip until we get evolve out of experimental. Differential Revision: https://phab.mercurial-scm.org/D7932
Thu, 20 Feb 2020 10:56:40 -0500 phabricator: also check parent fctx for binary where it is checked for UTF-8
Matt Harbison <matt_harbison@yahoo.com> [Thu, 20 Feb 2020 10:56:40 -0500] rev 44452
phabricator: also check parent fctx for binary where it is checked for UTF-8 I don't know that this is necessary, but it seems obvious from the code checking both the current and parent file for UTF-8 content that this was the intent. Differential Revision: https://phab.mercurial-scm.org/D8221
Thu, 20 Feb 2020 10:46:43 -0500 phabricator: don't infer the old `fctx` in `notutf8()`
Matt Harbison <matt_harbison@yahoo.com> [Thu, 20 Feb 2020 10:46:43 -0500] rev 44451
phabricator: don't infer the old `fctx` in `notutf8()` This is used along with `fctx.isbinary()` to gate `addoldbinary()`, so it seems like a good idea to provide the caller similar control over the current and parent filecontext. Unlike `addoldbinary()`, it doesn't need both previous and current contexts at the same time, so make the caller responsible for testing both cases, as appropriate. I haven't worked out all of the problems around marking files as binary for move/remove/copy, but this will definitely help with `--no-stack` too. It also turns out to have been doing too much- in the remove case, it tested not just the removed file in the parent context (which is what gets passed in that case), but also in the parent of the parent context (which should be irrelevant). The previous code also required the `fctx.parents()` check to work in the add (but without rename) case. Now the add and remove cases test only what they need to. But now that it is written this way, the fact that only the current `fctx` is checked to be binary in the case of modification or being renamed seems wrong. Differential Revision: https://phab.mercurial-scm.org/D8220
Thu, 20 Feb 2020 12:42:07 -0500 phabricator: rename a variable to clarify that it is the parent filecontext
Matt Harbison <matt_harbison@yahoo.com> [Thu, 20 Feb 2020 12:42:07 -0500] rev 44450
phabricator: rename a variable to clarify that it is the parent filecontext Differential Revision: https://phab.mercurial-scm.org/D8219
Wed, 19 Feb 2020 13:33:58 -0500 phabricator: pass old `fctx` to `addoldbinary()` instead of inferring it
Matt Harbison <matt_harbison@yahoo.com> [Wed, 19 Feb 2020 13:33:58 -0500] rev 44449
phabricator: pass old `fctx` to `addoldbinary()` instead of inferring it Currently, removed binaries aren't marked as binaries on the left side, which sends the raw file view to a bad URL in the web interface. (See D8009) In order to handle marking the file as binary in the removed case, both contexts need to be provided by the caller, since there is no current fctx in the removed case. Having an explicit old fctx will also be useful to support a `--no-stack` option that rolls up the commit stack into a single review. The bug isn't fixed with this change- there's a missing call to it in `addremoved()` as well. But instead of spamming the list with a bunch of test diffs, all of the missing binary issues will be fixed at once later. Differential Revision: https://phab.mercurial-scm.org/D8218
Wed, 04 Mar 2020 10:25:07 -0500 phabricator: make `hg phabread` work outside of a repository
Matt Harbison <matt_harbison@yahoo.com> [Wed, 04 Mar 2020 10:25:07 -0500] rev 44448
phabricator: make `hg phabread` work outside of a repository This is similar to 16312ea45a8b and 2513f0f70a26- we don't need a repo, but will load .hg/hgrc if inside one. Differential Revision: https://phab.mercurial-scm.org/D8214
Sun, 16 Feb 2020 15:06:20 -0500 phabricator: refactor `phabread` to write all patches at once
Matt Harbison <matt_harbison@yahoo.com> [Sun, 16 Feb 2020 15:06:20 -0500] rev 44447
phabricator: refactor `phabread` to write all patches at once This will be necessary to create a first class `phabimport` command. That command requires a transaction, and will import all named patches within a single transaction. But if Phabricator queries also happen within the transaction, that leaves open the chance that an exception is raised, the transaction is abandoned, and the next command that is run will complain about needing to run `hg recover`. Differential Revision: https://phab.mercurial-scm.org/D8135
Mon, 17 Feb 2020 13:14:44 -0500 phabricator: make `hg phabupdate` work outside of a repository
Matt Harbison <matt_harbison@yahoo.com> [Mon, 17 Feb 2020 13:14:44 -0500] rev 44446
phabricator: make `hg phabupdate` work outside of a repository This is similar to 16312ea45a8b- we don't need a repo, but will load .hg/hgrc if inside one. Differential Revision: https://phab.mercurial-scm.org/D8208
Mon, 17 Feb 2020 13:28:40 -0500 phabricator: pass ui instead of repo to `userphids()`
Matt Harbison <matt_harbison@yahoo.com> [Mon, 17 Feb 2020 13:28:40 -0500] rev 44445
phabricator: pass ui instead of repo to `userphids()` Also not a repository operation. Differential Revision: https://phab.mercurial-scm.org/D8207
Mon, 17 Feb 2020 13:08:01 -0500 phabricator: pass ui instead of repo to `querydrev()`
Matt Harbison <matt_harbison@yahoo.com> [Mon, 17 Feb 2020 13:08:01 -0500] rev 44444
phabricator: pass ui instead of repo to `querydrev()` Also not a repository operation. Differential Revision: https://phab.mercurial-scm.org/D8206
Mon, 17 Feb 2020 13:01:16 -0500 phabricator: pass ui instead of repo to `readpatch()`
Matt Harbison <matt_harbison@yahoo.com> [Mon, 17 Feb 2020 13:01:16 -0500] rev 44443
phabricator: pass ui instead of repo to `readpatch()` This makes it a little clearer that it isn't a repository operation. Differential Revision: https://phab.mercurial-scm.org/D8205
Mon, 02 Mar 2020 14:36:20 -0500 logtoprocess: avoid traceback when running long commands
Valentin Gatien-Baron <vgatien-baron@janestreet.com> [Mon, 02 Mar 2020 14:36:20 -0500] rev 44442
logtoprocess: avoid traceback when running long commands $ hg log -r "present($(yes | tr -d '\n' | head -c 130000))" "$(yes | tr -d '\n' | head -c 5000)" --config extensions.logtoprocess= --config logtoprocess.commandfinish=whatever Traceback (most recent call last): File "/usr/bin/hg", line 67, in <module> dispatch.run() File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 111, in run status = dispatch(req) File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 290, in dispatch canonical_command=req.canonical_command, File "/usr/lib64/python2.7/site-packages/mercurial/ui.py", line 1991, in log logger.log(self, event, msg, opts) File "/usr/lib64/python2.7/site-packages/hgext/logtoprocess.py", line 72, in log procutil.runbgcommand(script, fullenv, shell=True) File "/usr/lib64/python2.7/site-packages/mercurial/utils/procutil.py", line 597, in runbgcommand b'error running %r: %s' % (cmd, os.strerror(returncode)), OSError: [Errno 7] error running 'whatever': Argument list too long This can happen if you pass a bunch of filenames to hg commit, for instance. This is due to a size limit on individual env vars (on linux, but I imagine there are similar limits in other OSes): $ FOO=$(yes | head -c 131000) /usr/bin/true $ FOO=$(yes | head -c 132000) /usr/bin/true -bash: /usr/bin/true: Argument list too long I propose to avoid this by truncating the message. I didn't make the limit configurable as it doesn't seem particularly convenient to customize this. I'm not sure if various OSes would want radically different limits here? Differential Revision: https://phab.mercurial-scm.org/D8203
Mon, 24 Feb 2020 17:57:57 +0100 rust-cpython: make `NonNormalEntires` iterable to fix `fsmonitor` (issue6276)
Raphaël Gomès <rgomes@octobus.net> [Mon, 24 Feb 2020 17:57:57 +0100] rev 44441
rust-cpython: make `NonNormalEntires` iterable to fix `fsmonitor` (issue6276) This fixes a bug when using `fsmonitor` that tries to iterate on the non normal set, by adding a shared iterator interface. Differential Revision: https://phab.mercurial-scm.org/D8143
Sat, 07 Sep 2019 14:50:39 +0200 hgext: start building a library for simple hooks
Joerg Sonnenberger <joerg@bec.de> [Sat, 07 Sep 2019 14:50:39 +0200] rev 44440
hgext: start building a library for simple hooks Many workflows depend on hooks to enforce certain policies, e.g. to prevent forced pushes. The Mercurial Guide includes some cases and Google can help finding others, but it can save users a lot of time if hg itself has a couple of examples for further customization. Differential Revision: https://phab.mercurial-scm.org/D6825
Tue, 25 Feb 2020 20:27:39 -0500 exchange: turn on option that makes concurrent pushes work better
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Tue, 25 Feb 2020 20:27:39 -0500] rev 44439
exchange: turn on option that makes concurrent pushes work better The motivation is simply to make hg work better out of the box. This is a slight backwards compatibility break, because client extensions could have assumed that the list of heads the client sees during discovery will be the list of heads during the entirety of the push. It seems unlikely to matter, and not worth mentioning. There's a fair amount of diff in tests, but this is just due to sending a few more bytes on the wire, except for test-acl.t. The extra "invalid branch cache" lines in test-acl.t don't seem to indicate a problem: the branchcache now get computed during the bundle application (because of the check:updated-heads bundle part), but doesn't get rolled back when transactions rollback, thus causing a message in the next operation computing the branch cache. Before this change, I assume the branchcache was only computed on transaction commit, so not computed at all when the transactions roll back, thus no messages. Differential Revision: https://phab.mercurial-scm.org/D8202
Mon, 02 Mar 2020 15:34:51 -0500 update: simplify slightly
Valentin Gatien-Baron <vgatien-baron@janestreet.com> [Mon, 02 Mar 2020 15:34:51 -0500] rev 44438
update: simplify slightly Differential Revision: https://phab.mercurial-scm.org/D8204
Sun, 01 Mar 2020 21:16:45 -0500 help: clarify behavior of server.concurrent-push-mode
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Sun, 01 Mar 2020 21:16:45 -0500] rev 44437
help: clarify behavior of server.concurrent-push-mode So it doesn't seemingly say that old clients cannot talk to server configured with concurrent-push-mode=check-related. They can, they just don't get the benefit. Differential Revision: https://phab.mercurial-scm.org/D8201
Fri, 28 Feb 2020 10:30:18 -0800 commit: error out on unresolved files even if commit would be empty
Martin von Zweigbergk <martinvonz@google.com> [Fri, 28 Feb 2020 10:30:18 -0800] rev 44436
commit: error out on unresolved files even if commit would be empty Differential Revision: https://phab.mercurial-scm.org/D8195
Fri, 28 Feb 2020 10:49:13 -0800 tests: add test of committing with conflicts but no changes in wdir
Martin von Zweigbergk <martinvonz@google.com> [Fri, 28 Feb 2020 10:49:13 -0800] rev 44435
tests: add test of committing with conflicts but no changes in wdir I'm about to change the behavior slightly here, so let's have a test that shows that. Differential Revision: https://phab.mercurial-scm.org/D8194
Fri, 28 Feb 2020 00:17:26 +0100 transaction: clarify the logic around pre-finalize/post-finalize
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Feb 2020 00:17:26 +0100] rev 44434
transaction: clarify the logic around pre-finalize/post-finalize I am taking a bit more verbose route, but I find it easier to follow for people who (re)discover the code. (This is a gratuitous cleanup I did while looking at something else.) Differential Revision: https://phab.mercurial-scm.org/D8176
Fri, 28 Feb 2020 00:02:03 +0100 transaction: move constant to upper case
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 28 Feb 2020 00:02:03 +0100] rev 44433
transaction: move constant to upper case These constant are internal to the module and can be safely renamed. Having them upper case help to clarify their "constant" status. (This is a gratuitous cleanup I did while looking at something else.) Differential Revision: https://phab.mercurial-scm.org/D8175
Wed, 26 Feb 2020 22:26:28 +0100 tests: handle In-Reply-To headers for line wrapping
Joerg Sonnenberger <joerg@bec.de> [Wed, 26 Feb 2020 22:26:28 +0100] rev 44432
tests: handle In-Reply-To headers for line wrapping Python 3 tends to insert a newline for both Message-ID and In-Reply-To headers, so unwrap both. Just check the wrapped line format explicitly without regular expression. Differential Revision: https://phab.mercurial-scm.org/D8171
Wed, 26 Feb 2020 10:48:56 -0800 tests: use new, use-case-specific methods from merge module
Martin von Zweigbergk <martinvonz@google.com> [Wed, 26 Feb 2020 10:48:56 -0800] rev 44431
tests: use new, use-case-specific methods from merge module Differential Revision: https://phab.mercurial-scm.org/D8169
Wed, 26 Feb 2020 10:40:31 -0800 merge: introduce a merge() for that use-case
Martin von Zweigbergk <martinvonz@google.com> [Wed, 26 Feb 2020 10:40:31 -0800] rev 44430
merge: introduce a merge() for that use-case In the same vein as some earlier patches like f546d2170b0f (merge: introduce a clean_update() for that use-case, 2020-01-15). Differential Revision: https://phab.mercurial-scm.org/D8168
Wed, 26 Feb 2020 11:00:50 -0800 merge: drop redundant mergeforce argument from hg.merge()
Martin von Zweigbergk <martinvonz@google.com> [Wed, 26 Feb 2020 11:00:50 -0800] rev 44429
merge: drop redundant mergeforce argument from hg.merge() The only caller that passed a value for either `force` or `mergeforce` passed the same value for both, so let's simplify the interface by accepting only `force`. Differential Revision: https://phab.mercurial-scm.org/D8167
Wed, 26 Feb 2020 10:54:17 -0800 merge: change default of hg.merge()'s "force" argument from None to False
Martin von Zweigbergk <martinvonz@google.com> [Wed, 26 Feb 2020 10:54:17 -0800] rev 44428
merge: change default of hg.merge()'s "force" argument from None to False The argument is only passed to `mergemode.update()`, and that function treats `None` just like `False`, so `False` seems clearer. Differential Revision: https://phab.mercurial-scm.org/D8166
Thu, 13 Feb 2020 21:14:20 -0800 debugmergestate: make templated
Martin von Zweigbergk <martinvonz@google.com> [Thu, 13 Feb 2020 21:14:20 -0800] rev 44427
debugmergestate: make templated Our IntelliJ team wants to be able to read the merge state in order to help the user resolve merge conflicts. They had so far been reading file contents from p1() and p2() and their merge base. That is not ideal for several reasons (merge base is not necessarily the "graft base", renames are not handled, commands like `hg update -m` is not handled). It will get especially bad as of my D7827. This patch makes the output s a templated. I haven't bothered to make it complete (e.g. merge driver states are not handled), but it's probably good enough as a start. I've done a web search for "debugmergestate" and I can't find any indication that any tools currently rely on its output. If it turns out that we get bug reports for it once this is released, I won't object to backing this patch out on the stable branch (and then perhaps replace it by a separate command, or put it behind a new flag). The changes in test-backout.t are interesting, in particular this: ``` - other path: foo (node not stored in v1 format) + other path: (node foo) ``` I wonder if that means that we actually read v1 format incorrectly. That seems to be an old format that was switched away from in 2014, so it doesn't matter now anyway. Differential Revision: https://phab.mercurial-scm.org/D8120
Thu, 13 Feb 2020 21:55:38 -0800 tests: add tests of debugmergestate with unresolved/resolved path conflicts
Martin von Zweigbergk <martinvonz@google.com> [Thu, 13 Feb 2020 21:55:38 -0800] rev 44426
tests: add tests of debugmergestate with unresolved/resolved path conflicts I'm about to change `hg debugmergestate` and it broke on these "pu" and "pr" records on my first attempt (D8113), so let's add test coverage. Differential Revision: https://phab.mercurial-scm.org/D8119
Thu, 13 Feb 2020 17:15:08 -0800 mergestate: determine if active without looking for state files on disk
Martin von Zweigbergk <martinvonz@google.com> [Thu, 13 Feb 2020 17:15:08 -0800] rev 44425
mergestate: determine if active without looking for state files on disk I couldn't think of a reason that we need to check state files on disk to determine if a merge is active. I could imagine them being for there for detecting broken state files that would then be cleaned up by some later command, but we always delete the entire `.hg/merge/` tree, so that doesn't seem to be it. The checks were added in 4e932dc5c113 (resolve: abort when not applicable (BC), 2014-04-18). Perhaps there were needed for that and then made obsolete by 6062593d8b06 (resolve: don't abort resolve -l even when no merge is in progress, 2014-05-23). The reason I want to delete the checks is that I think `ms = mergestate.read(repo); ms.active() and ms.local` should be a valid pattern, but it crashes when the merge state file is an empty file if we consider mere presence of the file as "active". Differential Revision: https://phab.mercurial-scm.org/D8118
Wed, 26 Feb 2020 14:43:02 -0500 phabricator: update the protocol documentation
Matt Harbison <matt_harbison@yahoo.com> [Wed, 26 Feb 2020 14:43:02 -0500] rev 44424
phabricator: update the protocol documentation The `branch` property wasn't added to the `hg:meta` example when it was added to the metadata in d49ab47be8a6. Additionally, `properties` in the Differential Revision dict is a dinctionary, not a list. While here, also alphabetize the responses from Phabricator because that's how it is being printed with `hg debugcallconduit`, and this makes it easier to compare. Differential Revision: https://phab.mercurial-scm.org/D8170
Wed, 26 Feb 2020 10:56:27 -0500 relnotes: move entry to the right spot
Valentin Gatien-Baron <vgatien-baron@janestreet.com> [Wed, 26 Feb 2020 10:56:27 -0500] rev 44423
relnotes: move entry to the right spot It appears a conflict resolution went wrong. Differential Revision: https://phab.mercurial-scm.org/D8151
Wed, 26 Feb 2020 17:16:25 +0100 revlog-compression: release note entry for update the config to be a list
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 26 Feb 2020 17:16:25 +0100] rev 44422
revlog-compression: release note entry for update the config to be a list I updated the changeset, but forgot to phabsend apparently. Differential Revision: https://phab.mercurial-scm.org/D8165
(0) -30000 -10000 -3000 -1000 -300 -100 -60 +60 +100 +300 +1000 +3000 tip