Matt Harbison <matt_harbison@yahoo.com> [Wed, 15 Jul 2020 14:03:55 -0400] rev 45136
phabupdate: allows revisions to be marked "request-review"
Differential Revision: https://phab.mercurial-scm.org/D8752
Matt Harbison <matt_harbison@yahoo.com> [Wed, 15 Jul 2020 13:27:55 -0400] rev 45135
phabupdate: allow revisions to be marked with "plan changes"
Differential Revision: https://phab.mercurial-scm.org/D8751
Joerg Sonnenberger <joerg@bec.de> [Thu, 16 Jul 2020 15:56:13 +0200] rev 45134
status: match category text in the option description
The ! category in the main status help text is defined as "missing", so
use the same text for the help text of --delete.
Differential Revision: https://phab.mercurial-scm.org/D8759
Martin von Zweigbergk <martinvonz@google.com> [Wed, 15 Jul 2020 13:19:09 -0700] rev 45133
purge: classify as a "working directory management" command in help
It seems to me that `hg purge` is clearly a "working directory
management" command and not a "repository management" command. The
working copy is all that's affected, after all; the repo is not
affected at all.
Differential Revision: https://phab.mercurial-scm.org/D8757
Martin von Zweigbergk <martinvonz@google.com> [Wed, 15 Jul 2020 22:24:02 -0700] rev 45132
extensions: make `hg help extensions` list disabled extensions with PyOxidizer
`setup.py` has a mechanism for generating a list of bundled extensions
and their documenation and putting it in a `hgext/__index__.py`
file. That file is then read from `extensions.py`, which makes `hg
help extensions` work in py2exe binaries. This patch makes it so
`setup.py` produces the `hgext/__index__.py` file also when called by
PyOxidizer.
Thanks to Matt Harbison for pointing out the existence of
`__index__.py`!
Differential Revision: https://phab.mercurial-scm.org/D8758
Joerg Sonnenberger <joerg@bec.de> [Wed, 08 Jul 2020 00:36:36 +0200] rev 45131
phases: sparsify phaseroots and phasesets
As final step of dealing with the holes in the phase numbers, make
phaseroots and phasesets both dictionaries indexed by the phase number.
Further adjust the interface of the C module by pushing the node to
revision mapping down as it is cheaper on the C side to deal with
revision numbers.
Overall, the patch series improves a no-change "hg up" for my NetBSD test
repository from 4.7s to 1.3s.
Differential Revision: https://phab.mercurial-scm.org/D8698
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 07 Jul 2020 14:01:12 +0530] rev 45130
extdiff: add some comments in diffrevs()
It was not obvious to understand the code so I added some comments.
Differential Revision: https://phab.mercurial-scm.org/D8690
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 07 Jul 2020 13:26:57 +0530] rev 45129
extdiff: add comments and minor variable renames diffpatch()
Some variable names were now confusing as we refactored the code in a separate
function. For example, `node1a` leads to ideas why `1a` and not `1`. The
variable storing path to patch file was named as `dirX` instead of `fileX`.
Renamed these variables and added couple of comments.
Differential Revision: https://phab.mercurial-scm.org/D8689
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 07 Jul 2020 13:24:13 +0530] rev 45128
extdiff: remove unrequired do3way argument to diffpatch()
When we are diffing patches, there is no 3 way diff.
Differential Revision: https://phab.mercurial-scm.org/D8688
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 07 Jul 2020 13:13:18 +0530] rev 45127
extdiff: refactor logic to diff revs of versions of files
Now that code for both cases, diffing patches or files is in separate function,
it will be better to refactor them more and understand.
Differential Revision: https://phab.mercurial-scm.org/D8687
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 07 Jul 2020 12:42:39 +0530] rev 45126
extdiff: refactor logic which does diff of patches
The current extdiff code is hard to understand on first look. Took me few hours
to grasp the code. Before adding more things, decided to do some refactoring.
Differential Revision: https://phab.mercurial-scm.org/D8686
Manuel Jacob <me@manueljacob.de> [Mon, 01 Jun 2020 09:55:31 +0200] rev 45125
absorb: make it explicit if empty changeset was created
If the config rewrite.empty-successor=skip is set, a message "became empty and
was dropped" is shown if the changeset became empty. If the config
rewrite.empty-successor=keep is set, absorb may create changesets even if they
became empty. It’s probably a good idea to make that explicit. Therefore the
message is changed to be a combination of both: "became empty and became ...".
Repeating the word "became" is not very elegant. This results from the fact
that "became" was and is overloaded to indicate both the change from non-empty
to empty and the successor relation. In the combinated message, both meanings
are used in one sentence.
Manuel Jacob <me@manueljacob.de> [Mon, 01 Jun 2020 09:42:41 +0200] rev 45124
absorb: consider rewrite.empty-successor configuration
This adds support for the recently added rewrite.empty-successor configuration.
Manuel Jacob <me@manueljacob.de> [Mon, 01 Jun 2020 08:38:42 +0200] rev 45123
rebase: consider rewrite.empty-successor configuration
This adds support for the recently added rewrite.empty-successor configuration.
Manuel Jacob <me@manueljacob.de> [Sun, 12 Jul 2020 06:06:06 +0200] rev 45122
rewriteutil: add utility to check whether empty successors should be skipped
Manuel Jacob <me@manueljacob.de> [Sat, 11 Jul 2020 23:53:27 +0200] rev 45121
config: add option to control creation of empty successors during rewrite
The default for many history-rewriting commands (e.g. rebase and absorb) is
that changesets which would become empty are not created in the target branch.
This makes sense if the source branch consists of small fix-up changes. For
more advanced workflows that make heavy use of history-editing to create
curated patch series, dropping empty changesets is not as important or even
undesirable.
Some users want to keep the meta-history, e.g. to make finding comments in a
code review tool easier or to avoid that divergent bookmarks are created. For
that, obsmarkers from the (to-be) empty changeset to the changeset(s) that
already made the changes should be added. If a to-be empty changeset is pruned
without a successor, adding the obsmarkers is hard because the changeset has to
be found within the hidden part of the history.
If rebasing in TortoiseHg, it’s easy to miss the fact that the to-be empty
changeset was pruned. An empty changeset will function as a reminder that
obsmarkers should be added.
Martin von Zweigbergk mentioned another advantage. Stripping the successor will
de-obsolete the predecessor. If no (empty) successor is created, this won’t be
possible.
In the future, we may want to consider other behaviors, like e.g. creating the
empty successor, but pruning it right away. Therefore this configuration
accepts 'skip' and 'keep' instead of being a boolean configuration.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 31 Aug 2019 14:33:26 +0200] rev 45120
commands: use any() instead of `if a or b or c`
Small cleanup for future when we have an option to show configs from shared rc.
Differential Revision: https://phab.mercurial-scm.org/D8658
Joerg Sonnenberger <joerg@bec.de> [Mon, 06 Jul 2020 14:49:19 +0200] rev 45119
manifest: use the same logic for handling flags in _parse as elsewhere
Differential Revision: https://phab.mercurial-scm.org/D8684
Joerg Sonnenberger <joerg@bec.de> [Mon, 06 Jul 2020 03:43:32 +0200] rev 45118
manifest: tigher manifest parsing and flag use
In the manifest line, flags are put directly after the hash, so the
parser has been guessing the presence of flags based on the length of
the hash. Replace this assumption by an enumeration of the valid flags
and removing them from the hash first as they are distinct input values.
Consistently handle the expected 256bit length of the SHA1-replacement
in the pure Python parser. Check that setting flags will use one of the
blessed values.
Extend write logic in the C version to handle 256bit hashes as well.
Verify that hashes always have exactly the expected length. Since
1070df141718 we should no longer depend on the old extra-byte hack.
Differential Revision: https://phab.mercurial-scm.org/D8679
Joerg Sonnenberger <joerg@bec.de> [Wed, 08 Jul 2020 00:15:15 +0200] rev 45117
phases: sparsify phase lists
When the internal and archived phase was added, allphase became a large,
sparsely populated list. This dramatically increased the number of
lookup operations for public relations in `phasecache.phase`. As a first
step, define allphases and related lists explicitly to contain only the
actual phases. Make phasenames a dictionary and create corresponding
dictionaries for mapping phase names back to numbers. Adjust various
list to be sparse as well with the exception of phaseroots and phasesets
members of phasecache. Keep those as a separate step as it involves
changes to the C module.
Differential Revision: https://phab.mercurial-scm.org/D8697
Joerg Sonnenberger <joerg@bec.de> [Tue, 07 Jul 2020 22:00:02 +0200] rev 45116
phases: updatephases should not skip internal phase
Historically, updatephases used to skip the secret phase, but wasn't
updated when archived and internal were added.
Differential Revision: https://phab.mercurial-scm.org/D8696
Joerg Sonnenberger <joerg@bec.de> [Sun, 28 Jun 2020 01:08:13 +0200] rev 45115
repoview: use the phasecache directly to determine mutable revisions
This speeds up no-change updates from 1.3s to 0.85s for my NetBSD test
repository.
Differential Revision: https://phab.mercurial-scm.org/D8670
Joerg Sonnenberger <joerg@bec.de> [Tue, 07 Jul 2020 21:45:10 +0200] rev 45114
phases: provide a test and accessor for non-public phase roots
This decouples users from the implementation details of the phasecache.
Also document a historic artifact about the stored phaseroots.
Differential Revision: https://phab.mercurial-scm.org/D8694
Raphaël Gomès <rgomes@octobus.net> [Wed, 24 Jun 2020 17:53:44 +0200] rev 45113
hg-core: define a `dirstate_status` `Operation`
This is 3/3 in a series of patches to improve dirstate status' code.
Following in the footsteps of
a46e36b82461, we move the main status
functionality to an `Operation`. This will most likely be subject to change in
the future (what function signature, what parameters, etc., but we will see
when `rhg` gets `hg status` support.
Differential Revision: https://phab.mercurial-scm.org/D8663
Raphaël Gomès <rgomes@octobus.net> [Wed, 24 Jun 2020 17:20:39 +0200] rev 45112
rust-status: improve documentation and readability
This patch is 2/3 in the series to improve the dirstate status code. It adds a
number of common type aliases to add more obvious semantics to function
signatures, improves/adds documentation where necessary and improves one or two
patterns to be more idiomatic.
Differential Revision: https://phab.mercurial-scm.org/D8662
Raphaël Gomès <rgomes@octobus.net> [Wed, 24 Jun 2020 16:12:45 +0200] rev 45111
rust-status: refactor status into a struct
The code for `dirstate/status` has grown too large for comfort, this is the
first of three patches that try to improve maintainability.
In this patch, refactoring dirstate's status into a struct allows for slimming
down function signatures drastically, keeping the mental (and maintenance)
burden lower, since pretty much all of them shared a few common arguments.
This had the pleasant side-effect of simplifying lifetimes a little. This has
no observable impact on performance.
The next patch will add/improve documentation and refactor some types. I tried
to keep new code down to a minimum in this patch because it's already pretty
big.
Differential Revision: https://phab.mercurial-scm.org/D8661
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Dec 2019 22:20:03 -0800] rev 45110
tests: avoid "magic" nodeids in test-rebase-legacy.t
This helps with readability.
Differential Revision: https://phab.mercurial-scm.org/D8735
Martin von Zweigbergk <martinvonz@google.com> [Fri, 13 Dec 2019 22:08:18 -0800] rev 45109
tests: avoid a "magic" nodeid in test-wireproto-command-lookup.t
This helps with readability.
Differential Revision: https://phab.mercurial-scm.org/D8734
Pulkit Goyal <7895pulkit@gmail.com> [Mon, 22 Jun 2020 13:51:48 +0530] rev 45108
run-tests: replace '#' with '-' in temp path of repos created for tests
If we have multiple cases in a test, that leads us to a temp path of
format "<temp-path>-<case1>#<case2>".
This leads to hg.parseurl() parsing the path and take part
after `#` as a branch name.
I encountered this bug while adding support for share-safe case in next patch.
Differential Revision: https://phab.mercurial-scm.org/D8647
Pulkit Goyal <7895pulkit@gmail.com> [Tue, 14 Apr 2020 17:06:11 +0530] rev 45107
debugcommands: introduce new debugrequirements command
This for now just prints out the list of current requirements. In future this
will be helpful in reading requirements from couple of sources, and checking
which requirement comes from where.
Differential Revision: https://phab.mercurial-scm.org/D8632