Manuel Jacob <me@manueljacob.de> [Fri, 10 Jul 2020 10:12:04 +0200] rev 45093
procutil: distribute code for stdout
It makes sense to have the distinction between Python 2 and 3 at the top level,
as we have to fight a different kind of battle on each: On Python 3, we get
consistent behavior on all platforms, but need to create correctly-behaving
binary streams. On Python 2, we have to account for platform differences.
Manuel Jacob <me@manueljacob.de> [Tue, 14 Jul 2020 10:25:41 +0200] rev 45092
convert: use bytes for value in extra dict
The keys and values of the extra dict are expected to be bytes. Before this
fix, there was a crash in mercurial.changelog.encodeextra().
Manuel Jacob <me@manueljacob.de> [Sat, 11 Jul 2020 03:17:42 +0200] rev 45091
overlayworkingctx: remove unused `nofilechanges()` and `_compact()` methods
Differential Revision: https://phab.mercurial-scm.org/D8733
Manuel Jacob <me@manueljacob.de> [Sat, 11 Jul 2020 03:10:23 +0200] rev 45090
rebase: correctly check for empty commit in in-memory mode
The new code has a small overhead in the empty commit case, as a `memctx` object
is always created, but I don’t think it’s justified here to duplicate code
to optimize a relatively unlikely code path.
Differential Revision: https://phab.mercurial-scm.org/D8732
Manuel Jacob <me@manueljacob.de> [Sat, 11 Jul 2020 02:13:19 +0200] rev 45089
memctx: make `parents()` return list of one element if it’s not a merge
It is part of the contract of `parents()` that non-merges return a list of one
element. `self._parents` is always a list of two elements in `memctx`.
Differential Revision: https://phab.mercurial-scm.org/D8731
Manuel Jacob <me@manueljacob.de> [Sat, 11 Jul 2020 01:14:00 +0200] rev 45088
commit: factor out empty commit check to `basectx.isempty()`
This enables reuse in other places, e.g. those dealing with `memctx`.
Differential Revision: https://phab.mercurial-scm.org/D8729
Manuel Jacob <me@manueljacob.de> [Sat, 11 Jul 2020 00:53:34 +0200] rev 45087
overlayworkingctx: rename misleadingly named `isempty()` method
This method is only about whether there are file changes, not about whether the
commit will be empty or not.
One user of the method was incorrectly assuming the latter meaning, leading to
the bug for which a test case was added in D8727. I’ve added a FIXME to the
code.
The original motivation for the rename was that I want to add
`committablectx.isempty()`, that properly checks if a commit will be empty,
using the exact same logic as in `repo.commit()`, and I wanted to avoid a name
clash.
Differential Revision: https://phab.mercurial-scm.org/D8728
Manuel Jacob <me@manueljacob.de> [Fri, 10 Jul 2020 01:36:19 +0200] rev 45086
rebase: add test case that shows that inmemory rebase does not preserve merges
Differential Revision: https://phab.mercurial-scm.org/D8727
Manuel Jacob <me@manueljacob.de> [Thu, 09 Jul 2020 07:00:32 +0200] rev 45085
rebase: remove now unnecessary logic to allow empty commit when branch changes
This was a workaround for a bug in the empty commit check in repo.commit(),
where the parent branch name was incorrectly compared with the wdir branch name
instead of the branch name passed via `extra`. The bug was fixed in D8724.
The workaround was introduced in
b2415e94b2f5.
Differential Revision: https://phab.mercurial-scm.org/D8725
Manuel Jacob <me@manueljacob.de> [Fri, 10 Jul 2020 00:44:18 +0200] rev 45084
commit: check branch change on to-be-committed changeset
This makes a difference when a branch name is passed via the `extra` argument,
which will be used as the branch name for the created changeset. The empty
commit check should use that branch name instead of whatever was set on the
working directory.
Besides fixing the bug for which a test case was extended, it enables to remove
a workaround in the rebase extension, which will be done in a follow-up patch
(D8725).
Differential Revision: https://phab.mercurial-scm.org/D8724