hg-git 1.0.0 released

Dan Villiom Podlaski Christiansen danchr at gmail.com
Sat Apr 2 19:53:10 UTC 2022


Hi,

I've just pushed the first stable release of the 1.0 series to PyPI and 
Heptapod:

https://pypi.org/project/hg-git/1.0.0
https://foss.heptapod.net/mercurial/hg-git/-/releases/1.0.0

Relative to the earlier betas, this release also includes the following 
bug fixes:

* Handle errors in ``.gitmodules`` gracefully, allowing the conversion
   to continue. (#329)
* Don't die with an error when ``.hgsub`` contains comments. (#128)
* Suppress errors on export related to history editing of certain
   commits with unusual authorship and messages. (#383)
* Fix tests with Git 2.35.

Other changes:

* Increase test coverage by using different versions of Alpine Linux
   and Dulwich.

This release requires Mercurial 5.2 or later and Python 3.6 or later.

The full list of changes in 1.0 includes those in the betas, included 
below. Thanks to everyone who helped review and test the changes in this 
release!

- Dan

--

hg-git 1.0b2 (2022-03-10)
=========================

This is a follow-up to the previous beta, that fixes the following
bugs:

* Fix tests with Mercurial 6.1.
* Avoid prompting for authentication after a successful push, by
   storing the authenticated client. (#379)

This release requires Mercurial 5.2 or later and Python 3.6 or later.

hg-git 1.0b1 (2022-01-26)
=========================

This is a preview of an upcoming major release that contains changes
to user-facing behaviour, as well as a fair amount of internal
changes. The primary focus is on adjusting the user experience to be
more intuitive and consistent with Git and Mercurial. The internal
changes are mainly refactoring to make the code more consistent and
maintainable. Performance should also be much better; a simple clone
of a medium-sized repository is about 40% faster.

This release requires Mercurial 5.2 or later and Python 3.6 or later.

Changes to behaviour:

* When a pull detects that a Git remote branch vanishes, it will
   remove the corresponding local tags, such as ``default/branch``.
   This is equivalent to using ``git fetch --prune``, and adjustable
   using the ``git.pull-prune-remote-branches`` configuration option.
* Similarly, delete the actual bookmarks corresponding to a remote
   branch, unless the bookmarks was moved since the last pull from Git.
   This is enabled by default and adjustable using the
   ``git.pull-prune-bookmarks`` configuration option.
* Speed up ``pull`` by using a single transaction per map save
   interval.
* Similarly, speed up ``hg clone`` by always using a single
   transaction and map save interval, as Mercurial will delete the
   repository on errors.
* Change the default ``hggit.mapsavefrequency`` to 1,000 commits rather
   than just saving at the end.
* Abort with a helpful error when a user attempts to push to Git from
   a Mercurial repository without any bookmarks nor tags. Previously,
   that would either invent a bookmark —— *once* — or just report that
   nothing was found.
* Only update e.g. ``default/master`` when actually pulling from
   ``default``.

Enhancements:

* Add a ``gittag()`` revset.
* Print a message describing which bookmarks changed during a pull.
* Let Mercurial report on the incoming changes once each transaction
   is saved, similar to when pulling from a regular repository.
* Remove some unnecessary caching in an attempt to decrease memory
   footprint.
* Advance phases during the pull rather than at the end.
* With ``hggit.usephases``, allow publishing tags and specific remotes
   on pull, as well as publishing the remote ``HEAD`` on push.
* Change defaults to drop illegal paths rather than aborting the
   conversion; this is adjustable using the ``hggit.invalidpaths``
   configuration option.
* Allow updating bookmarks from obsolete commits to their successors.

Bug fixes:

* Adjust publishing of branches to correspond to the documentation.
   Previously, e.g. listing ``master`` would publish a local bookmark
   even if diverged from the remote.
* Handle corrupt repositories gracefully in the ``gverify`` command,
   and allow checking repository integrity.
* Only apply extension wrappers when the extension is actually
   enabled rather than just loaded.
* Fix pulling with ``phases.new-commit`` set to ``secret``. (#266)
* Detect divergence with a branch bookmark suffix.
* Fix flawed handling of remote messages on pull and push, which
   caused most such messages to be discarded.
* Report a helpful error when attempting to push or convert with
   commits missing in the Git repository. Also, issue a warning when
   creating a new Git repository with a non-empty map, as that may lead
   to the former.
* Ensure that ``gimport`` also synchronises tags.
* Address a bug where updating bookmarks might fail with certain
   obsolete commits.
* Handle missing Git commits gracefully. (#376)

Other changes:

* Require ``setuptools`` for building, and use ``setuptools_scm`` for
   determining the version of the extension.
* Refactoring and reformatting of the code base.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_0xA2ACC81B41CF4E34.asc
Type: application/pgp-keys
Size: 22460 bytes
Desc: OpenPGP public key
URL: <http://www.mercurial-scm.org/pipermail/mercurial/attachments/20220402/22415452/attachment.key>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 236 bytes
Desc: OpenPGP digital signature
URL: <http://www.mercurial-scm.org/pipermail/mercurial/attachments/20220402/22415452/attachment.sig>


More information about the Mercurial mailing list