Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Mercurial 4.5 Released

47 views
Skip to first unread message

Gregory Szorc

unread,
Feb 1, 2018, 2:29:22 PM2/1/18
to dev-version-control
Mercurial 4.5 has been released.

As usual, release notes, etc are available at the following links:

https://www.mercurial-scm.org/wiki/WhatsNew
https://www.mercurial-scm.org/wiki/Release4.5
https://www.mercurial-scm.org/wiki/UpgradeNotes#A4.5

Mozilla-tailored instructions for installing/upgrading live at
http://mozilla-version-control-tools.readthedocs.io/en/latest/hgmozilla/installing.html
.

Some widely-used Mozilla Mercurial extensions (such as reviewboard and
push-to-try) experienced breakage due to changes in 4.5. **You will need to
update to a revision of version-control-tools from this week for those
extensions to continue working with 4.5.** You can do that by running `mach
mercurial-setup` from a Firefox checkout. Or from your
version-control-tools clone: `hg pull && hg up @`.

The following is a list of changes and improvements in 4.5 that are
relevant to Mozillians.

* New "githelp" extension that provides the `hg githelp` command, which
attempts to convert a Git command into its Mercurial equivalent and help
Git users learn Mercurial.
* New "lfs" extension that allows Mercurial repositories to speak the
git-lfs protocol, allowing repositories to offload large blob storage to
outside the repository. (We don't yet have plans to deploy this on
hg.mozilla.org. But if we want to start committing large files to
mozilla-central, it is something to explore.)
* New "split" extension that provides the `hg split` command, which can be
used to split a changeset into multiple changesets. It automatically
rebases children changesets. That means you can `hg split` a changeset in
the middle of a series without having to worry about what happens to the
changesets after it.
* hgweb (the HTML interface) has received a ton of visual improvements.
Changeset phase, obsolescence status, etc. You can see this today by
running `hg serve` locally. It will eventually be deployed on hg.mozilla.org
.
* A new experimental config option (rebase.experimental.inmemory=true)
enables rebases to be performed in-memory. Historically, Mercurial (and
Git) touch the working directory when doing history rewriting. On large
repositories or for rebases when the working directory and changesets in
the rebase have many changes, this can make rebase very slow. In-memory
rebasing removes a lot of that overhead.
* A new experimental config option (experimental.worddiff=true). When
enabled, color output for diffs is aware of word boundaries, allowing you
to more easily see where the differences are within a line.
* Performance improvements to bundle transfer, which will cut down on
memory and CPU usage during `hg pull` and `hg push` and other commands that
create/apply bundles.
* Improvements to "discovery" mechanism of the wire protocol will result in
faster `hg push` operations if the destination has many heads. This will
make pushes to the Try and MozReview repositories significantly faster.
* A new, faster mechanism for performing "stream clones" was introduced.
Sadly, it landed too late in the release cycle to be enabled for 4.5.
However, it might be stable enough for us to hack something together so `hg
clone` operations in CI make use of the new feature before the next
Mercurial release.
* `hg merge` now has an `--abort` flag to abort an in-progress merge
operation.
* `hg revert` now has an `--interactive` flag to interactively perform a
revert of a previous changeset.

As a reminder, periodically run `mach mercurial-setup` to get the
latest/greatest versions of Mozilla's extensions and recommended Mercurial
configuration settings.
0 new messages