NEWS.rst 10.2 KB
Newer Older
1
2
3
hg-git 1.1b1 (unreleased)
=========================

4
5
6
7
8
9
10
Upcoming feature release.

Changes to behaviour:

* The ``gclear`` command is inherently dangerous, and has been
  replaced with a debug command instead.

11
12
Enhancements:

13
14
* Minor adjustments to categorisation of internal commands, and ensure
  that they all start with ``git-*``.
15
16
* Move configuration from the ``README`` file to contained within the
  extension, so that it is now self-documenting like Mercurial.
17
18
19
20
* The ``-B/--bookmark`` flag for ``push`` will now restrict bookmarks
  by name rather than revision. (Please note that this is unsupported
  when the ``git.branch_bookmark_suffix`` configuration option is
  set.)
21
22
23
* Pushing an unknown bookmark with the ``-B/--bookmark`` option now
  has the same effect as when pushing to a Mercurial repository, and
  will delete the remote Git branch.
24
25
26
27
28
29
30
* You can now specify what to publish with the ``paths`` section. For
  example::

    [paths]
    default = https://github.com/example/test
    default:pushurl = git+ssh://git@github.com/example
    default:hg-git.publish = yes
31

32
This release requires Mercurial 5.4 or later and Python 3.7 or later.
33

34
35
36
37
38
hg-git 1.0.2 (unreleased)
=========================

This is a minor release, focusing on bugs and compatibility.

39
40
* Fix ``--source``/``-s`` argument to ``transplant`` with Hg-Git
  enabled. (#392)
41
42
* Fix cloning repositories using the old static HTTP support with
  Hg-Git enabled.
43
44
* Handle pushing tags to Git that cannot be stored as references such
  as double-quotes on Windows. (#397)
45
* Avoid converting unrelated refs on pull, such as Github PR-related refs. (#386)
46
47
* Fix tests with GNU Grep 3.8 and later, by avoiding the ``egrep``
  alias (#400)
48
* Support reading remote refs even if packed.
49

50
Thanks to @icp1994 for contributing changes to the release!
51

52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
hg-git 1.0.1 (2022-11-04)
=========================

This is a minor release, focusing on bugs and compatibility.

* Ignore any ``GIT_SSH_COMMAND`` environment variable, rather than
  dying with an error. (#369)
* Fix bug with unusual progress lines from Azure Repo (#391)
* Fix incorrect use of localisation APIs (#387)
* Fix pushing with Dulwich 0.2.49 or later.
* Fix tests with Git 2.37.
* Fix bug with tags or remote refs in the local Git repository that
  point to missing commits.
* Mark Mercurial 6.2 and 6.3 as supported and tested.

Thanks to Pierre Augier and Aay Jay Chan for contributing to this
release!

70
hg-git 1.0.0 (2022-04-01)
71
72
=========================

73
74
This is the first stable release in the 1.0 series. In addition to all
the features and fixes in the betas, it includes:
75

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

83
84
85
86
87
Other changes:

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

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

90
91
92
93
94
95
96
97
98
99
100
101
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.

102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
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``.
138
139
140

Enhancements:

141
142
143
144
145
146
147
148
149
150
151
152
153
* 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.
154
155
156

Bug fixes:

157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
* 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)
176
177
178

Other changes:

179
180
181
* Require ``setuptools`` for building, and use ``setuptools_scm`` for
  determining the version of the extension.
* Refactoring and reformatting of the code base.
182

183
hg-git 0.10.4 (2022-01-26)
184
185
186
187
188
189
190
191
192
193
==========================

This is a minor release, focusing on bugs and compatibility.

Bug fixes:

* Fix compatibility with the ``mercurial_keyring`` extension. (#360)
* Add missing test files to the source archive. (#375)
* Fix tests with Git 2.34.

194
195
196
197
198
199
200
201
202
hg-git 0.10.3 (2021-11-16)
==========================

This is a minor release, focusing on bugs and compatibility.

Enhancements:

* Add support for Mercurial 6.0.

203
hg-git 0.10.2 (2021-07-31)
204
205
206
207
208
209
210
211
212
213
214
215
==========================

This is a minor release, focusing on bugs and compatibility.

Enhancements:

* Add support for Mercurial 5.9.

Bug fixes:

* Fix the ``git.authors`` configuration option, broken in Python 3.

216
hg-git 0.10.1 (2021-05-12)
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
==========================

This is a minor release, focusing on bugs and compatibility.

Enhancements:

* Add support for Mercurial 5.8.

Bug fixes:

* Fix some documentation issues.
* Don't overwrite annotated tags on push.
* Fix an issue where pushing a repository without any bookmarks would
  push secret changesets.

232
hg-git 0.10.0 (2021-02-01)
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
==========================

The 0.10.x series will be the last one supporting Python 2.7 and
Python 3.5. Future feature releases will only support Python 3.6 and
later and Mercurial 5.2 or later.

Enhancements:

* Add support for proper HTTP authentication, using either
  ``~/.git-credentials`` or just as with any other Mercurial remote
  repository. Previously, the only place to specify credentials was in
  the URL.
* Add ``--git`` option to ``hg tag`` for creating lightweight Git tags.
* Always show Git tags and remotes in ``hg log``, even if marked as
  obsolete.
* Support ``{gitnode}`` keyword in templates for incoming changes.
* Support HTTP authentication using either the Mercurial
  configuration, ``git-credentials`` or a user prompt.
* Support accessing Git repositories using ``file://`` URIs.
* Optimise writing the map between Mercurial and Git commits.
* Add ``debuggitdir`` command that prints the path to the cached Git
  repository.

Bug fixes:

* Fix pulling changes that build on obsoleted changesets.
* Fix using ``git-cleanup`` from a shared repository.
* Fix scp-style “URIs” on Windows.
* Fix ``hg status`` crashing when using ``.gitignore`` and a directory
  is not readable.
* Fix support for ``.gitignore`` from shared repositories and when
  using a Mercurial built with Rust extensions.
* Add ``brotli`` to list of modules ignored by Mercurial's
  ``demandimport``, so ``urllib3`` can detect its absence on Python 2.7.
* Fix the ``git`` protocol on Python 3.
* Address a deprecation in Dulwich 0.20.6 when pushing to Git.
* Fix configuration path sub-options such as ``remote:pushurl``.
* Fix pushing to Git when invalid references exist by disregarding
  them.
* Always save the commit map after an import.
* Add support for using Python 3 on Windows.
* Mark ``gimport``, ``gexport`` and ``gclear`` as advanced as they are
  either complicated to understand or dangerous.
* Handle backslashes in ``.gitignore`` correctly on Windows.
* Fix path auditing on Windows, so that e.g. ``.hg`` and ``.git``
  trigger the appropriate behaviour.

Other changes:

* More robust tests and CI infrastructure.
* Drop support for Mercurial 4.3.
* Updated documentation.