README 25.2 KB
Newer Older
Pierre-Yves David's avatar
Pierre-Yves David committed
1
=============================
Pierre-Yves David's avatar
Pierre-Yves David committed
2
3
4
Mutable History For Mercurial
=============================

5
6
7
Evolve Extension
=================

Pierre-Yves David's avatar
Pierre-Yves David committed
8
9
10
This package supplies the ``evolve`` extension for Mercurial,

**The full implementation of the changeset evolution concept is still in
11
12
13
progress.**  Please subscribe to the `evolve-testers mailing list
<https://www.mercurial-scm.org/mailman/listinfo/evolve-testers>`_ to stay up to
date with changes.
Pierre-Yves David's avatar
Pierre-Yves David committed
14

15
This extension:
Pierre-Yves David's avatar
Pierre-Yves David committed
16

17
* enables the “changeset evolution” feature of Mercurial core,
18
19

* provides a set of commands to mutate your history,
Pierre-Yves David's avatar
Pierre-Yves David committed
20

21
22
23
* issues several warning messages when troubles from some mutable appears in
  your repository,

24
* provides an ``hg evolve`` command to deal with such "troubles",
25

26
* improves performance of obsolescence marker exchanges and discovery during
27
  push and pull.
Pierre-Yves David's avatar
Pierre-Yves David committed
28

29
30
31
32
33
Documentation
-------------

We recommend reading the documentation first. An online version is
available here:
Pierre-Yves David's avatar
Pierre-Yves David committed
34

35
    https://www.mercurial-scm.org/doc/evolution/
Pierre-Yves David's avatar
Pierre-Yves David committed
36

37
38
39
40
41
How to Install
==============

Using Pip
---------
42
43

You can install the latest evolution version usin pip::
44

45
46
47
48
49
50
51
    $ pip install --user hg-evolve

Then just enable it in you hgrc::

    $ hg config --edit # adds the two line below:
    [extensions]
    evolve =
Pierre-Yves David's avatar
Pierre-Yves David committed
52

53
54
From Source
-----------
55

56
57
58
59
To install a local version from source::

    $ hg clone https://www.mercurial-scm.org/repo/evolve/
    $ cd evolve
60
    $ pip install --user .
61

62
63
64
65
66
67
68
69
Then just enable it in you hgrc::

    $ hg config --edit # adds the two line below:
    [extensions]
    evolve =

Documentation lives in ``doc/``.

70
71
Server Only Setup
=================
72

73
74
75
76
It is possible to enable a smaller subset of the extensions aimed at server
serving repository. It skips the additions of the new commands and local UI
messages that might add performance overheads. To use the server only
extension, install the package and use::
77
78

    $ hg config --edit # adds the two line below:
79
    [extensions]
80
    evolve.serveronly =
81
82


83
84
How to Contribute
=================
Pierre-Yves David's avatar
Pierre-Yves David committed
85

86
87
88
Bugs are to be reported on the mercurial's bug tracker (component: `evolution`_):

.. _evolution: https://bz.mercurial-scm.org/buglist.cgi?component=evolution&query_format=advanced&resolution=---
89

90
91
92
Please use the patchbomb extension to send email to `mercurial devel
<https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel>`_. Please make
sure to use the evolve-ext flag when doing so. You can use a command like
93
this::
94

95
    $ hg email --to mercurial-devel@mercurial-scm.org --flag evolve-ext --rev '<your patches>'
96

97
98
99
For guidelines on the patch description, see the `official Mercurial guideline`_.

.. _`official Mercurial guideline`: https://mercurial-scm.org/wiki/ContributingChanges#Patch_descriptions
100
101

Please don't forget to update and run the tests when you fix a bug or
102
add a feature. To run the tests, you need a working copy of Mercurial,
103
say in $HGSRC::
104

105
106
    $ cd tests
    $ python $HGSRC/tests/run-tests.py
107

108
109
110
111
112
113
114
Branch policy
-------------

The evolve test are highly impacted by changes in core. To deal with this, we use named branches.

There are two main branches: "stable" and "default". Tests on these branch are
supposed to pass with the corresponding "default" and "stable" branch from core
115
Mercurial. The documentation is built from the tip of stable.
116
117
118
119

In addition, we have compatibility branches to check tests on older version of
Mercurial. They are the "mercurial-x.y" branches. They are used to apply
expected test change only, no code change should happen there.
Pierre-Yves David's avatar
Pierre-Yves David committed
120

121
Changelog
122
=========
123

124
6.7.0 -- 2017-09-27
125
126
-------------------

Pierre-Yves David's avatar
Pierre-Yves David committed
127
  * compatibility with change in future 4.4 at this release date,
128
  * documentation: improvement to content, wording and graphs,
Pierre-Yves David's avatar
Pierre-Yves David committed
129
  * obslog: improved templatability,
130
  * obslog/log: improve verb used to describe and evolution,
Pierre-Yves David's avatar
Pierre-Yves David committed
131
132
  * pstatus/pdiff: update to full command. They now appears in the help,
  * uncommit: add a --interactive option (4.3+ only).
133

Pierre-Yves David's avatar
Pierre-Yves David committed
134
135
136
137
138
139
140
141
142
  * push: add a --topic option to mirror --bookmark and --branch,
  * stack: improve display of interleaved topic,
  * stack: improve display of merge commit,
  * topic: add a new 'debugconvertbookmark' commands (4.3+ only),
    It helps migrating from bookmark feature branch to topic feature branch,
  * topic: --age flag also shows the user who last touched the topic,
  * topic: be more informative about topic activation and deactivation,
  * topic: gain a --current flag,
  * topic: small clarification and cleanup on various output.
143

144
6.6.0 -- 2017-07-25
145
146
-------------------

147
  - amend: add a --extract flag to move change back to the working copy,
148
    (same as uncommit, but accessible through the amend commit)
149
150
151
152
153
154
155
  - split: now properly refuse to split public changeset,
  - commands: unify and improve the pre-rewrite validation and error message,
  - uncommit: add support for --current-date and --current-user option,
  - fold: add support for --current-date and --current-user option,
  - metaedit: add support for --current-date and --current-user option,
  - split: add support for --current-date and --current-user option,
  - compat: use various new API instead of the one deprecated in 4.3,
156
    (when available)
157
158
159
  - documentation: various minor documentation update.

topic (0.2.0):
Pierre-Yves David's avatar
Pierre-Yves David committed
160
161

  - topic: add --age option to sort topic by the most recently touched,
162
163
  - topic: add a 't0' to access the root of a topic while keeping it active,
  - topic: allow 'hg prev' to me move to 't0',
164
  - topic: add a config option to enforce topic on new commit,
165
    (experimental.enforce-topic)
166
  - topic: make command names valid as expected, even if ui.strict=true.
167

168
6.5.0 -- 2017-07-02
169
170
-------------------

171
172
features:

Pierre-Yves David's avatar
Pierre-Yves David committed
173
174
 - obslog: gain a --patch flag to display changes introduced by the evolution
  (Currently limited to in simple case only)
175
176
 - log: display obsolescence fate by default, (future 4.3 only)
 - doc: various minor improvement.
Pierre-Yves David's avatar
Pierre-Yves David committed
177

178
179
180
181
182
183
184
bugfixes:

 - evolve: fix branch preservation for merge,
 - obsfate: improve support for advanced template reformating,
 - split: preserve author of the splitted changeset.
 - grab: properly fix hg executable on windows.

185
topic (0.1.0):
186
187

 - stack: also show the unstable status for the current changeset, (issue5553)
188
 - stack: properly abort when and unknown topic is requested,
189
190
 - stack: add basic and raw support for named branches,
 - topic: changing topic on revs no longer adds extra instability, (issue5441)
191
 - topic: topics: rename '--change' flag to '--rev' flag,
Pierre-Yves David's avatar
Pierre-Yves David committed
192
 - topic: multiple large performance improvements,
193
 - topic: various small output improvement,
194
 - topic: improved topic preservation for various commands.
Boris Feld's avatar
Boris Feld committed
195
196


197
6.4.0 -- 2017-06-16
198
-------------------
199

200
201
 - template: signifiant improvement to the '{obsfate}' template (now 4.2+ only)
 - template: fix 'successors' and 'precursors' template to expose hex-node
202
203
 - effect flag: the experiment is now active by default,
   (see 'hg help -e evolve' to opt out)
204
 - effect flag: fix a small bug related to hidden changeset,
205
 - obscache: reduce impact on large repository
206
 - obshashrange: install a '.max-revs' option see extension help for details
207

Pierre-Yves David's avatar
Pierre-Yves David committed
208
6.3.1 -- 2017-06-01
209
210
211
212
-------------------

 - also backport the "revelant-markers" fix when using "evolve.serveronly"

213
6.3.0 -- 2017-05-31
214
215
216
-------------------

 - olog: add an 'obslog' alias
217
 - olog: add an '--all' option to show the whole obsolescence history tree.
218
219
 - evolution: add an experiment to track the effect of rewrites.
   (See hg help - evolve for details)
220
221
222
223
224
 - exchange: fix the "relevant-markers" algorithm to include inline prune.
   This will impact discovery of obsmarkers between server and client if one
   still uses the old algorithm. Please upgrade both clients and servers as
   soon as possible.
   (See changeset 176d1a0ce385 in core Mercurial for details)
225
226
 - obsdiscovery: add a config flag to disable all obsmarkers discovery
   (See hg help - evolve for details)
Boris Feld's avatar
Boris Feld committed
227
 - template: add a 'precursors' template that display the closests precursors of changesets
Boris Feld's avatar
Boris Feld committed
228
 - template: add a 'successors' template that display the closests successors of changesets
229
 - template: add a 'obsfate' template that display how a changeset has evolved
230
231
 - new discovery experiment: add options to restrict memory consumption on
   large repository (see "hg help -e evolve" for details).
232
 - evolve: fix --rev handling in --list mode
233

234
6.2.1 -- 2017-05-23
235
236
-------------------

237
238
 - prune: fix a crash related to color handling,
 - next: fix a crash related to color handling,
239
 - discovery: document the 'obshashrange' experiment,
240
 - cache: reduce the warming load in case of reset,
241
242
 - cache: add a 'experimental.obshashcache.warm-cache' option to allow
   disabling post transaction cache warming.
243

244
6.2.0 -- 2017-05-18
245
246
-------------------

247
 - olog: a new command to inspect the obs-history of a changeset (hg-4.0 + only),
248
 - topic: have thg display topic name if possible,
249
 - blackbox: log more information about discovery and cache computation,
250
 - obscache: more efficient update in the (rare) case of a transaction adding
251
252
253
   markers without changesets,
 - obscache: fix more cache invalidation propagation,
 - obscache: also enable the new cache (from 6.1.0) for 'evolve.server-only',
254
255
 - obshashrange-cache: update incrementally in the (common) case of a
   transaction not affecting existing range,
256
 - obshashrange-cache: keep the cache warm after each transaction,
257
 - topic: now requires Mercurial 4.0 or above,
258
259
 - stack: now display if current revision is in bad state (issue5533),
 - stack: fix json output to be valid json.
260

261
6.1.0 -- 2017-05-03
262
263
-------------------

264
 - improve message about obsolete working copy parent,
265
 - improve message issued  when accessing hidden nodes (4.2 only),
266
 - introduce a new caches to reduce the impact of evolution on read-only commands,
267
 - add a 'experimental.auto-publish' config. See `hg help -e evolve` for details.
268
269
 - fix the propagation of some some cache invalidation,

Pierre-Yves David's avatar
Pierre-Yves David committed
270
6.0.1 -- 2017-04-20
271
272
-------------------

273
 - template: adapt to change in 4.2,
274
 - fix 'debugrecordpruneparents' (outdated API usage)
275
 - checkheads: give priority to updated 4.2 code,
Pierre-Yves David's avatar
Pierre-Yves David committed
276
 - serveronly: fix repository initialization.
277

278
6.0.0 -- 2017-03-31
279
-------------------
280

281
- push: improved detection of obsoleted remote branch (issue4354),
282
283
284
- drop compatibility for Mercurial < 3.8,
- removed old (unpackaged) pushexperiment extension,
- move all extensions in the official 'hgext3rd' namespace package,
285
- add the "topic" experimental extensions. See the README.topic file for details
286
287
- officially ship 'evolve.serveronly' extensions. That extensions contains
  only the part related to exchange and is intended to be used by server.
288

289
290
291
  Using the extension will enable evolution, use 'experimental.evolution=!'
  to disable obsmarkers echange.  The old '__temporary__.advertiseobsolete'
  option is no longer supported.
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306

- a new prototype of obsmarker discovery is available. The prototype is still
  at early stage and not recommended for production.
  Examples of current limitations:

  - write access to the repo is highly recommanded for all operation,
  - large memory footprint,
  - initial caching is slow,
  - unusable on large repo (because of various issue pointed earlier),
  - likely to constains various bugs.

  It can be tested by setting `experimental.obshashrange=1` on both client and
  server. It is recommanded to get in touch with the evolve maintainer if you
  decide to test it.

307
308
309
- the 'debugrecordpruneparents' have been moved into the 'evolve.legacy'
  separate extension. enable that extentions if you need to convert/update
  markers in an old repository.
310

311
5.6.1 -- 2017-02-28
312
-------------------
313

314
- fix a crash that sometime happened when evolving merges.
315

316
5.6.0 -- 2017-02-01
317
-------------------
318

319
320
321
322
323
- compatibility with Mercurial 4.1.
- improvement of prune error message.
- fold: require --from flag for folding revisions to working copy
- fix crash when trying to fold an empty revision set (issue5453)
- uncommit: preserve copy information of remaining files (issue5403)
324

Pierre-Yves David's avatar
Pierre-Yves David committed
325
5.5.0 -- 2016-10-30
326
-------------------
327

328
329
330
331
332
333
334
- The {obsolete} template now yield "obsolete" or "".
- compatibility with Mercurial 4.0
- Fix erroneous manifest computation when solving 'bumped' changeset.
- split: avoid crash on empty commit (issue5191),
- next: improve locking to avoid issue with working copy parent (issue5244)
- prev: improve locking to avoid issue with working copy parent (issue5244)
- evolve: fix abort suggestion to include '.' in 'hg update -C .'
335

Pierre-Yves David's avatar
Pierre-Yves David committed
336
5.4.1 -- 2016-08-01
337
-------------------
Pierre-Yves David's avatar
Pierre-Yves David committed
338
339
340

 - compat with Mercurial 3.9

341
5.4.0 -- 2016-05-06
342
-------------------
343

344
- Some collaboration with the topic experimental extensions,
345
  - hg evolve --all with consider all troubles in your current topic,
346
347
  - preserve 'topic' during evolve,
  - 'next' and 'prev' restrict themself to the current topic by default,
348
- remove the dangerous 'kill' alias for 'prune' (because 'hg kill -1' without
Pierre-Yves David's avatar
Pierre-Yves David committed
349
  the leading 'hg' will give you an hardtime)
350
351
352
353
- during 'hg evolve' skip unsupported merge instead of aborting
- various documentation fix and update
- hg summary now suggest 'hg evolve --continue when appropriate`
- compatibility with Mercurial 3.8 'hgext' namespace package.
354
- small improvement to the `hg split` instruction
355
- add a 'metaedit' command to rewrite changeset meta data.
356

Pierre-Yves David's avatar
Pierre-Yves David committed
357
5.3.0 -- 2016-02-11
358
-------------------
359

360
361
362
- split: add a new command to split changesets,
- tests: drop our copy of 'run-tests.py' use core one instead,
- bookmark: do all bookmark movement within a transaction.
363
- evolve: compatibility with Mercurial 3.7
364
- evolve: support merge with a single obsolete parent (hg-3.7+ only)
365
- evolve: prevent added file to be marked as unknown if evolve fails (issue4966)
366
367
- evolve: stop relying on graftstate file for save evolve state
          (for `hg evolve --continue`)
368
369
- evolve: fix divergence resolution when it result in an empty commit
          (issue4950) (hg-3.5+ only)
370
371
372
- no longer lock the repository for `hg parents` (issue4895)
- updated help for the `evolve` command

Pierre-Yves David's avatar
Pierre-Yves David committed
373
5.2.1 -- 2015-11-02
374
-------------------
375

376
- add compatibility with Mercurial 3.6
377
- prune: fixed possible issue with lock and bookmark
378
- next/prev: fixed possible issue with lock and bookmark
Pierre-Yves David's avatar
Pierre-Yves David committed
379
380
- add some progress data during changesets discovery
- take advantage of dirstate/transaction collaboration
381

Pierre-Yves David's avatar
Pierre-Yves David committed
382
5.2.0 -- 2015-06-25
383
-------------------
384
385
386
387

- evolve: gain a --rev option to control what revisions to evolve (issue4391)
- evolve: revision are processed in the order they stack on destination
- evolve: properly skip unstable revision with non-evolved unstable parent
388
- evolve: gain --unstable --divergent --bumped flag to select the trouble
389
- evolve: issue more useful error message and hint when evolve has nothing to
390
391
392
          do as invocated.
- evolve: bare `hg evolve` commands now abort when multiple changesets could be
          a target.
393
394
395
- evolve: `hg evolve --all` only evolve changeset that will end up as
          descendant of the current working copy. The old behavior of `--all`
          in now in `--all --any`.
396
397
- evolve: add a 'experimental.evolutioncommands' for fine grained commands
          enabling
timeless developer's avatar
timeless developer committed
398
- next/prev: requires `--merge` to move with uncommitted changes
Pierre-Yves David's avatar
Pierre-Yves David committed
399
- next: significantly reword error messages
400
- next: add a --evolve flag to evolve aspiring children when on a head
401

Pierre-Yves David's avatar
Pierre-Yves David committed
402
5.1.5 -- 2015-06-23
403
-------------------
Pierre-Yves David's avatar
Pierre-Yves David committed
404
405

- minor documentation cleanup
406
- support -i option for `hg amend` if commit supports it (3.4)
Pierre-Yves David's avatar
Pierre-Yves David committed
407
- fix the `debugrecordpruneparents` utility
Anton Shestakov's avatar
Anton Shestakov committed
408
- fix some possible crash during command abort (release nonexistent transaction)
409
- fix simple4server bug tracker URL
410
- compatibility with bookmark API change in future Mercurial 3.5
Pierre-Yves David's avatar
Pierre-Yves David committed
411
- prune no longer move the active bookmark for no reason (issue4559)
412
- evolve: stop reporting divergence base as missing when we actually have it
413
- significant performance improvement for all revsets.
414
415
- provide a hint of how to update to the successor of an obsolete working copy
  parent.
Pierre-Yves David's avatar
Pierre-Yves David committed
416

Pierre-Yves David's avatar
Pierre-Yves David committed
417
5.1.4 -- 2015-04-23
418
-------------------
419
420

- significant documentation update
421
422
- fix issue4616: pulling with bundle2 would crash if common marker when
  discovered on non-served changesets.
423
- fix the debugobsrelsethashtree command
424

Pierre-Yves David's avatar
Pierre-Yves David committed
425
5.1.3 -- 2015-04-20
426
-------------------
Pierre-Yves David's avatar
Pierre-Yves David committed
427

Anton Shestakov's avatar
Anton Shestakov committed
428
- discovery: fix misbehaving discovery across python version
Pierre-Yves David's avatar
Pierre-Yves David committed
429
430
- pull: properly install the bundle2 par generator
  (avoid sending all markers for each pull)
431
- commit: avoid potential deadlock (acquires wlock before lock)
432
- graft: avoid potential deadlock (acquires wlock before lock)
Pierre-Yves David's avatar
Pierre-Yves David committed
433

Pierre-Yves David's avatar
Pierre-Yves David committed
434
5.1.2 -- 2015-04-01
435
-------------------
436
437
438

- evolve: prevent a crash in httpclient_pushobsmarkers() when pushing

Pierre-Yves David's avatar
Pierre-Yves David committed
439
5.1.1 -- 2015-03-05
440
-------------------
Pierre-Yves David's avatar
Pierre-Yves David committed
441
442
443
444
445

- debugobsconvert: fix invalid markers during conversion
- discovery: cache some of the obs hash computation to improve performance (issue4518)
- revset: fix some crash with (issue4515)

446
5.1 -- 2015-01-30
447
-------------------
448

449
- evolve: explicitly disable bookmark on evolve (issue4432)
450
- evolve: don't abort Mercurial on version mismatch
Anton Shestakov's avatar
Anton Shestakov committed
451
- compatibility with mercurial 3.3
452

Pierre-Yves David's avatar
Pierre-Yves David committed
453
5.0.2 -- 2014-12-14
454
-------------------
455
456
457

- evolve: remove dependency to the rebase extension

458
5.0.1 -- 2014-11-25
459
-------------------
460
461

- amend: fix --logfile argument
462
- evolve: preserve branch change when evolving
463
- evolve: fix potential crash while solving `bumped` changesets.
Pierre-Yves David's avatar
Pierre-Yves David committed
464
465
466
467
468
469
- uncommit: abort when rev specifies the current changeset
- evolve: various message improvement
- evolve: fix selection of changeset to evolve from the middle of a stack (issue4434)
- evolve: make next/prev only move bookmarks optionally
- evolve: tell user which "base of divergent changeset" is not found

470
5.0.0 -- 2014-10-22
471
-------------------
472
473

- drop compat with Mercurial pre 3.2
474
- uncommit: add a --rev argument
475
- evolve: add a `working directory now at xxxxxxxxxx` message
476
- evolve: automatically translate obsolete hashes when evolving
477
- properly skip marker creating if patch apply cleanly
478
- prune: work around a massive slowdown from lazy revset
479
- grab: "fix" the grab alias on window
480

481
482
483
484
485
- fix an issue where prune performance were quadratic with the number of
  changesets pruned.
- pull: use discovery to pull less obsmarkers through bundle2


Pierre-Yves David's avatar
Pierre-Yves David committed
486
4.1.0 -- 2014-08-08
487
-------------------
488
489

- amend: add -D/--current-date option
490
- amend: add -U/--current-user option
Pierre-Yves David's avatar
Pierre-Yves David committed
491
- evolve: add a --tool option
492
- evolve: add a --confirm option
493
494
- mark "commit -o", "graft -o" and "graft -O" as deprecated since they are
  unlikely to eventually make it into core.
495
496
- push obsmarkers and phases in the same transaction than changesets
  (when using hg >= 3.1 and bundle2-exp is enabled)
497
498
- hide message about the obsolescence marker exchange behind a
  `experimental.verbose-obsolescence-exchange` variable (default to False).
499

500
4.0.1 -- 2014-08-08
501
-------------------
Pierre-Yves David's avatar
Pierre-Yves David committed
502
503
504

- createmarkers() accept an iterable (for compat with other extension)

505
4.0.0 -- 2014-06-03
506
-------------------
507

508
- require Mercurial version 3.0.1 or above
509
- some compatibility fixes with future 3.1.0
510
511
512
513
514
- deprecated `gup` and `gdown` in favor of prev and next
- record parent of pruned parent at prune time
- added a `debugobsstorestat` command to gather data on obsmarker content.
- added a `debugrecordpruneparents` command to upgrade existing prune marker
  with parent information. Please run it once per repo after upgrading.
515
516
517
518
519
- improvement to obsolescence marker exchange:
  - added progress when pushing obsmarkers
  - added multiple output during obsolescence markers exchange
  - only push markers relevant to pushed subset
  - add a new experimental way to exchange marker (when server support):
Pierre-Yves David's avatar
Pierre-Yves David committed
520

521
522
523
    - added progress when pulling obsmarkers
    - only pull markers relevant to pulled subset
    - avoid exchanging common markers in some case
524
    - use bundle2 as transport when available.
Pierre-Yves David's avatar
Pierre-Yves David committed
525

526
 - add a hook related to the new commands
527

Pierre-Yves David's avatar
Pierre-Yves David committed
528
3.3.2 -- 2014-05-14
529
-------------------
530
531
532

- fix a bug where evolve were creating changeset with 2 parents on windows
  (fix issues #16, #35 and #42)
Anton Shestakov's avatar
Anton Shestakov committed
533
- adds a --obsolete flag to import (requires Mercurial 3.0)
534
- prune: update to successor rather than parent when pruning '.' with -s
535
- fold: add missing --message and --logfile option
536
- fold: add squash as an alias
537

Pierre-Yves David's avatar
Pierre-Yves David committed
538
3.3.1 -- 2014-04-23
539
-------------------
540
541

- various language fix
542
543
544
- active bookmark now move when using prev/next (#37)
- fix some preservation of rename information on evolve (#33)
- abort when evolve tries to move a node on top of itself (will helps on the #35 front)
545
- fold: enable --date and --user options
546

Pierre-Yves David's avatar
Pierre-Yves David committed
547
3.3.0 -- 2014-03-04
548
-------------------
549

550
- raise Mercurial's minimal requirement to 2.7
551
552
- drop `latercomer` and `conflicting` compatibility. Those old alias are
  deprecated for a long time now.
553
554
- add verbose hint about how to handle corner case by hand.
  This should help people until evolve is able to to it itself.
555
556
- removed the qsync extension. The only user I knew about (logilab) is not
  using it anymore. It not compatible with coming Mercurial version 2.9.
557
- add progress indicator for long evolve command
558
- report troubles creation from `hg import`
559

Pierre-Yves David's avatar
Pierre-Yves David committed
560
3.2.0 -- 2013-11-15
561
-------------------
Pierre-Yves David's avatar
Pierre-Yves David committed
562
563
564
565
566

- conform to the Mercurial custom of lowercase messages
- added a small extension to experiment with obsolescence marker push
- amend: drop the deprecated note option
- amend: use core mechanism for amend (fix multiple bugs)
567
- parents command: add "working directory parent is obsolete" message
568
569
- evolve command: allow updating to the successor if the parent is
  obsolete
570
- gdown and gup commands: add next and previous alias, respectively
571
- make grab aliases compatible with Mercurial 2.8
Pierre-Yves David's avatar
Pierre-Yves David committed
572
- Tested with 2.6, 2.7 and 2.8
Pierre-Yves David's avatar
Pierre-Yves David committed
573

Pierre-Yves David's avatar
Pierre-Yves David committed
574
3.1.0 -- 2013-02-11
575
-------------------
Pierre-Yves David's avatar
merge  
Pierre-Yves David committed
576

Pierre-Yves David's avatar
Pierre-Yves David committed
577
- amend: drop deprecated --change option for amend
Anton Shestakov's avatar
Anton Shestakov committed
578
- alias: add a grab alias to be used instead of graft -O
579
- touch: add a --duplicate option to *not* obsolete the old version
580
- touch: fix touching multiple revision at the same time
581
- evolve: add a --all option
Levi Bard's avatar
Levi Bard committed
582
583
- prune: various minor improvements
- prune: add option to prune a specific bookmark
584
- prune: add -u and -d option to control metadata
585
586

3.0.0 -- 2013-02-02
587
-------------------
588

Pierre-Yves David's avatar
merge  
Pierre-Yves David committed
589
590
- compatibility with 2.5

591
2.2.0 --
592
-------------------
593
594
595

- make evolve smarter at picking next troubled to solved without --any

Pierre-Yves David's avatar
Pierre-Yves David committed
596
2.1.0 -- 2012-12-03
597
-------------------
Pierre-Yves David's avatar
Pierre-Yves David committed
598
599
600
601
602

- qsync fixes
- have qfold ask for commit message

2.0.0 -- 2012-10-26
603
-------------------
Pierre-Yves David's avatar
Pierre-Yves David committed
604
605
606

- compat with mercurial 2.4

Pierre-Yves David's avatar
Pierre-Yves David committed
607
1.1.0 -- 2012-10-26
608
-------------------
609
610

- fix troubles creation reporting from rebase
611
612
613
- rename latecomer to bumped
- renamed conflicting to divergent
- smarter divergent handling
614

Pierre-Yves David's avatar
Pierre-Yves David committed
615
1.0.2 -- 2012-09-19
616
-------------------
Pierre-Yves David's avatar
Pierre-Yves David committed
617
618
619
620
621
622

- fix hg fold bug
- fix hg pull --rebase
- fix detection of conflict with external tools
- adapt to core movement (caches and --amend)

Pierre-Yves David's avatar
Pierre-Yves David committed
623
1.0.1 -- 2012-08-31
624
-------------------
Pierre-Yves David's avatar
Pierre-Yves David committed
625
626
627
628
629

- documentation improvement
- fix a performance bug with hgweb

1.0 -- 2012-08-29
630
-------------------
631
632
633
634

- Align with Mercurial version 2.3 (drop 2.2 support).
- stabilize handle killed parent
- stabilize handle late comer
Pierre-Yves David's avatar
Pierre-Yves David committed
635
- stabilize handle conflicting
636
637
638
- stabilize get a --continue switch
- merge and update ignore extinct changeset in most case.
- new "troubled()" revset
639
- summary now reports troubles changesets
Pierre-Yves David's avatar
Pierre-Yves David committed
640
641
- new touch command
- new fold command
642
- new basic olog alias
643
644
645
646
647
648
649

- rebase refuse to work on public changeset again
- rebase explicitly state that there is nothing to rebase because everything is
  extinct() when that happen.
- amend now cleanly abort when --change switch is misused


650
0.7 -- 2012-08-06
651
-------------------
652
653
654
655
656
657
658
659
660
661
662

- hook: work around insanely huge value in obsolete pushkey call
- pushkey: properly handle abort during obsolete markers push
- amend: wrap the whole process in a single transaction.
- evolve: tweak and add EOL to kill warning
- obsolete: fix doc, rebase no longer aborts with --keep
- obsolete/evolve: fix grammar in prerequisite messages
- evolve: avoid duplication in graft wrapper
- evolve: graft --continue is optional, test

0.6 -- 2012-07-31
663
-------------------
664
665

- obsolete: change warning output to match mercurial core on
Anton Shestakov's avatar
Anton Shestakov committed
666
- qsync: ignore nonexistent nodes
667
668
669
- make compat server both compatible with "dump" and "dump%i" version

0.5 -- 2012-07-16
670
-------------------
671

672
673
674
675
676
677
678
679
- obsolete: Detect conflicting changeset!
- obsolete: adapt to core: marker are written in transaction now
- evolve: add the solve alias to obsolete
- doc: big update of terms and summary of the concept
- evolve: switch the official name for "kill" to prune


0.4.1 -- 2012-07-10
680
-------------------
681

Anton Shestakov's avatar
Anton Shestakov committed
682
- [convert] properly exclude null successors from conversion
683
684
685
686
- Ignore buggy marker in newerversion


0.4.0 -- 2012-07-06
687
-------------------
688
689
690
691
692
693
694

- obsolete: public changeset are no longer latecomer.
- obsolete: move to official binary format
- adapt for new mercurial
- obsolete: we are not compatible with 2.1 any more

0.3.0 -- 2012-06-27
695
-------------------
696
697

- obsolete:  Add "latecomer" error detection (stabilize does not handle resolution yet)
698
699
700
701
- evolve:    Introduce a new `uncommit` command to remove change from a changeset
- rebase:    allow the use of --keep again
- commit:    --amend option create obsolete marker (but still strip)
- obsolete:  fewer marker are created when collapsing revision.
Pierre-Yves David's avatar
Pierre-Yves David committed
702
703
- revset:    add, successors(), allsuccessors(), precursors(), allprecursors(),
             latecomer() and hidden()
704
- evolve:    add `prune` alias to `kill`.
Anton Shestakov's avatar
Anton Shestakov committed
705
- stabilize: clearly state that stabilize does not handle conflict
Pierre-Yves David's avatar
Pierre-Yves David committed
706
- template:  add an {obsolete} keyword
707
708

0.2.0 -- 2012-06-20
709
-------------------
710
711
712
713
714
715
716

- stabilize: improve choice of the next changeset to stabilize
- stabilize: improve resolution of several corner case
- rebase:    handle removing empty changesets
- rebase:    handle --collapse
- evolve:   add `obsolete` alias to `kill`
- evolve:   add `evolve` alias to `stabilize`