comparison README @ 2020:143c8e4dc22d

topic: merge the topic extension in the evolve repository There is a lot of synergy between the two concepts. Topic is expected to be able to smooth multiple of evolution sharp edge. Having them both in the same repository will make this collaboration easier.
author Pierre-Yves David <pierre-yves.david@ens-lyon.org>
date Thu, 02 Mar 2017 18:07:46 +0100
parents 542693605fe5
children e6db5d48ebc5
comparison
equal deleted inserted replaced
2019:996a562b6c9f 2020:143c8e4dc22d
1 =============================
2 Mutable History For Mercurial
3 =============================
4
5 This package supplies the ``evolve`` extension for Mercurial, which
6 provides several commands to mutate history and deal with the
7 resulting issues.
8
9 It also:
10
11 - enables the "changeset obsolescence" feature of Mercurial
12 - issues several warning messages when trouble appears in your repository
13
14 **This extension is experimental and not yet meant for production.**
15
16 You can enable it by adding the line below to the ``extensions``
17 section of your hgrc::
18
19 evolve = PATH/TO/evolve-main/hgext/evolve.py
20
21 We recommend reading the documentation first. An online version is
22 available here:
23
24 https://www.mercurial-scm.org/doc/evolution/
25
26 Or see the ``doc/`` directory for a local copy.
27
28 topic
29 =====
30
31 Topics are an experiment to see if maybe the workflow defined by git
32 branches and hg bookmarks is only partially what users want - perhaps
33 something that feels more like a traditional VCS branch is right, but
34 that it should "dissolve" upon being finished. This extension exists
35 to be a sandbox for that experimentation.
36
37 # install
38
39 Enable topics like any mercurial extension: download the source code to a
40 local directory, and add that directory to your `.hgrc`:
41
42 [extensions]
43 topics=PATH/TO/evolve-main/hgext3rd/topic/
44
45 # help
46
47 See 'hg help -e topic' for a generic help.
48 See 'hg help topics' and 'hg help stack' for help on specific commands.
49 See the 'tests/test-topic-tutorial.t' file for a quick tutorial.
50
51 Contribute
52 ==========
53
54 Bugs are to be reported on the mercurial's bug tracker (component: evolution):
55 https://bz.mercurial-scm.org/buglist.cgi?component=evolution&query_format=advanced&resolution=---
56
57 Please use the patchbomb extension to send email to mercurial devel. Please
58 make sure to use the evolve-ext flag when doing so. You can use a command like
59 this:
60
61 hg email --to mercurial-devel@mercurial-scm.org --flag evolve-ext --rev '<your patches>'
62
63 See also
64 https://mercurial-scm.org/wiki/ContributingChanges#Patch_descriptions
65 for guidelines on the patch description.
66
67 Please don't forget to update and run the tests when you fix a bug or
68 add a feature. To run the tests, you need a working copy of Mercurial,
69 say in $HGSRC:
70
71 cd tests
72 python $HGSRC/tests/run-tests.py
73
74 (evolve's stable and default branches correspond to Mercurial's stable
75 and default branches. So to test evolve from default, you need
76 Mercurial on default.)
77
78
79 Changelog
80 =========
81
82 6.0.0 --
83
84 - drop compatibility for Mercurial < 3.8
85 - removed old (unpackaged) pushexperiment extension.
86 - move all extensions in the official 'hgext3rd' namespace package
87
88 5.6.1 -- 2017-02-28
89
90 - fix a crash that sometime happened when evolving merges.
91
92 5.6.0 -- 2017-02-01
93
94 - compatibility with Mercurial 4.1.
95 - improvement of prune error message.
96 - fold: require --from flag for folding revisions to working copy
97 - fix crash when trying to fold an empty revision set (issue5453)
98 - uncommit: preserve copy information of remaining files (issue5403)
99
100 5.5.0 -- 2016-10-30
101
102 - The {obsolete} template now yield "obsolete" or "".
103 - compatibility with Mercurial 4.0
104 - Fix erroneous manifest computation when solving 'bumped' changeset.
105 - split: avoid crash on empty commit (issue5191),
106 - next: improve locking to avoid issue with working copy parent (issue5244)
107 - prev: improve locking to avoid issue with working copy parent (issue5244)
108 - evolve: fix abort suggestion to include '.' in 'hg update -C .'
109
110 5.4.1 -- 2016-08-01
111
112 - compat with Mercurial 3.9
113
114 5.4.0 -- 2016-05-06
115
116 - Some collaboration with the topic experimental extensions,
117 - hg evolve --all with consider all troubles in your current topic,
118 - preserve 'topic' during evolve,
119 - 'next' and 'prev' restrict themself to the current topic by default,
120 - remove the dangerous 'kill' alias for 'prune' (because 'hg kill -1' without
121 the leading 'hg' will give you an hardtime)
122 - during 'hg evolve' skip unsupported merge instead of aborting
123 - various documentation fix and update
124 - hg summary now suggest 'hg evolve --continue when appropriate`
125 - compatibility with Mercurial 3.8 'hgext' namespace package.
126 - small improvement to the `hg split` instruction
127 - add a 'metaedit' command to rewrite changeset meta data.
128
129 5.3.0 -- 2016-02-11
130
131 - split: add a new command to split changesets,
132 - tests: drop our copy of 'run-tests.py' use core one instead,
133 - bookmark: do all bookmark movement within a transaction.
134 - evolve: compatibility with Mercurial 3.7
135 - evolve: support merge with a single obsolete parent (hg-3.7+ only)
136 - evolve: prevent added file to be marked as unknown if evolve fails (issue4966)
137 - evolve: stop relying on graftstate file for save evolve state
138 (for `hg evolve --continue`)
139 - evolve: fix divergence resolution when it result in an empty commit
140 (issue4950) (hg-3.5+ only)
141 - no longer lock the repository for `hg parents` (issue4895)
142 - updated help for the `evolve` command
143
144 5.2.1 -- 2015-11-02
145
146 - add compatibility with Mercurial 3.6
147 - prune: fixed possible issue with lock and bookmark
148 - next/prev: fixed possible issue with lock and bookmark
149 - add some progress data during changesets discovery
150 - take advantage of dirstate/transaction collaboration
151
152 5.2.0 -- 2015-06-25
153
154 - evolve: gain a --rev option to control what revisions to evolve (issue4391)
155 - evolve: revision are processed in the order they stack on destination
156 - evolve: properly skip unstable revision with non-evolved unstable parent
157 - evolve: gain --unstable --divergent --bumped flag to select the trouble
158 - evolve: issue more useful error message and hint when evolve has nothing to
159 do as invocated.
160 - evolve: bare `hg evolve` commands now abort when multiple changesets could be
161 a target.
162 - evolve: `hg evolve --all` only evolve changeset that will end up as
163 descendant of the current working copy. The old behavior of `--all`
164 in now in `--all --any`.
165 - evolve: add a 'experimental.evolutioncommands' for fine grained commands
166 enabling
167 - next/prev: requires `--merge` to move with uncommitted changes
168 - next: significantly reword error messages
169 - next: add a --evolve flag to evolve aspiring children when on a head
170
171 5.1.5 -- 2015-06-23
172
173 - minor documentation cleanup
174 - support -i option for `hg amend` if commit supports it (3.4)
175 - fix the `debugrecordpruneparents` utility
176 - fix some possible crash during command abort (release nonexistent transaction)
177 - fix simple4server bug tracker URL
178 - compatibility with bookmark API change in future Mercurial 3.5
179 - prune no longer move the active bookmark for no reason (issue4559)
180 - evolve: stop reporting divergence base as missing when we actually have it
181 - significant performance improvement for all revsets.
182 - provide a hint of how to update to the successor of an obsolete working copy
183 parent.
184
185 5.1.4 -- 2015-04-23
186
187 - significant documentation update
188 - fix issue4616: pulling with bundle2 would crash if common marker when
189 discovered on non-served changesets.
190 - fix the debugobsrelsethashtree command
191
192 5.1.3 -- 2015-04-20
193
194 - discovery: fix misbehaving discovery across python version
195 - pull: properly install the bundle2 par generator
196 (avoid sending all markers for each pull)
197 - commit: avoid potential deadlock (acquires wlock before lock)
198 - graft: avoid potential deadlock (acquires wlock before lock)
199
200 5.1.2 -- 2015-04-01
201
202 - evolve: prevent a crash in httpclient_pushobsmarkers() when pushing
203
204 5.1.1 -- 2015-03-05
205
206 - debugobsconvert: fix invalid markers during conversion
207 - discovery: cache some of the obs hash computation to improve performance (issue4518)
208 - revset: fix some crash with (issue4515)
209
210 5.1 -- 2015-01-30
211
212 - evolve: explicitly disable bookmark on evolve (issue4432)
213 - evolve: don't abort Mercurial on version mismatch
214 - compatibility with mercurial 3.3
215
216 5.0.2 -- 2014-12-14
217
218 - evolve: remove dependency to the rebase extension
219
220 5.0.1 -- 2014-11-25
221
222 - amend: fix --logfile argument
223 - evolve: preserve branch change when evolving
224 - evolve: fix potential crash while solving `bumped` changesets.
225 - uncommit: abort when rev specifies the current changeset
226 - evolve: various message improvement
227 - evolve: fix selection of changeset to evolve from the middle of a stack (issue4434)
228 - evolve: make next/prev only move bookmarks optionally
229 - evolve: tell user which "base of divergent changeset" is not found
230
231
232
233 5.0.0 -- 2014-10-22
234
235 - drop compat with Mercurial pre 3.2
236 - uncommit: add a --rev argument
237 - evolve: add a `working directory now at xxxxxxxxxx` message
238 - evolve: automatically translate obsolete hashes when evolving
239 - properly skip marker creating if patch apply cleanly
240 - prune: work around a massive slowdown from lazy revset
241 - grab: "fix" the grab alias on window
242
243 - fix an issue where prune performance were quadratic with the number of
244 changesets pruned.
245 - pull: use discovery to pull less obsmarkers through bundle2
246
247
248 4.1.0 -- 2014-08-08
249
250 - amend: add -D/--current-date option
251 - amend: add -U/--current-user option
252 - evolve: add a --tool option
253 - evolve: add a --confirm option
254 - mark "commit -o", "graft -o" and "graft -O" as deprecated since they are
255 unlikely to eventually make it into core.
256 - push obsmarkers and phases in the same transaction than changesets
257 (when using hg >= 3.1 and bundle2-exp is enabled)
258 - hide message about the obsolescence marker exchange behind a
259 `experimental.verbose-obsolescence-exchange` variable (default to False).
260
261 4.0.1 -- 2014-08-08
262
263 - createmarkers() accept an iterable (for compat with other extension)
264
265 4.0.0 -- 2014-06-03
266
267 - require Mercurial version 3.0.1 or above
268 - some compatibility fixes with future 3.1.0
269 - deprecated `gup` and `gdown` in favor of prev and next
270 - record parent of pruned parent at prune time
271 - added a `debugobsstorestat` command to gather data on obsmarker content.
272 - added a `debugrecordpruneparents` command to upgrade existing prune marker
273 with parent information. Please run it once per repo after upgrading.
274 - improvement to obsolescence marker exchange:
275 - added progress when pushing obsmarkers
276 - added multiple output during obsolescence markers exchange
277 - only push markers relevant to pushed subset
278 - add a new experimental way to exchange marker (when server support):
279 - added progress when pulling obsmarkers
280 - only pull markers relevant to pulled subset
281 - avoid exchanging common markers in some case
282 - use bundle2 as transport when available.
283 - add a hook related to the new commands
284
285 3.3.2 -- 2014-05-14
286
287 - fix a bug where evolve were creating changeset with 2 parents on windows
288 (fix issues #16, #35 and #42)
289 - adds a --obsolete flag to import (requires Mercurial 3.0)
290 - prune: update to successor rather than parent when pruning '.' with -s
291 - fold: add missing --message and --logfile option
292 - fold: add squash as an alias
293
294 3.3.1 -- 2014-04-23
295
296 - various language fix
297 - active bookmark now move when using prev/next (#37)
298 - fix some preservation of rename information on evolve (#33)
299 - abort when evolve tries to move a node on top of itself (will helps on the #35 front)
300 - fold: enable --date and --user options
301
302 3.3.0 -- 2014-03-04
303
304 - raise Mercurial's minimal requirement to 2.7
305 - drop `latercomer` and `conflicting` compatibility. Those old alias are
306 deprecated for a long time now.
307 - add verbose hint about how to handle corner case by hand.
308 This should help people until evolve is able to to it itself.
309 - removed the qsync extension. The only user I knew about (logilab) is not
310 using it anymore. It not compatible with coming Mercurial version 2.9.
311 - add progress indicator for long evolve command
312 - report troubles creation from `hg import`
313
314 3.2.0 -- 2013-11-15
315
316 - conform to the Mercurial custom of lowercase messages
317 - added a small extension to experiment with obsolescence marker push
318 - amend: drop the deprecated note option
319 - amend: use core mechanism for amend (fix multiple bugs)
320 - parents command: add "working directory parent is obsolete" message
321 - evolve command: allow updating to the successor if the parent is
322 obsolete
323 - gdown and gup commands: add next and previous alias, respectively
324 - make grab aliases compatible with Mercurial 2.8
325 - Tested with 2.6, 2.7 and 2.8
326
327 3.1.0 -- 2013-02-11
328
329 - amend: drop deprecated --change option for amend
330 - alias: add a grab alias to be used instead of graft -O
331 - touch: add a --duplicate option to *not* obsolete the old version
332 - touch: fix touching multiple revision at the same time
333 - evolve: add a --all option
334 - prune: various minor improvements
335 - prune: add option to prune a specific bookmark
336 - prune: add -u and -d option to control metadata
337
338 3.0.0 -- 2013-02-02
339
340 - compatibility with 2.5
341
342 2.2.0 --
343
344 - make evolve smarter at picking next troubled to solved without --any
345
346 2.1.0 -- 2012-12-03
347
348 - qsync fixes
349 - have qfold ask for commit message
350
351 2.0.0 -- 2012-10-26
352
353 - compat with mercurial 2.4
354
355 1.1.0 -- 2012-10-26
356
357 - fix troubles creation reporting from rebase
358 - rename latecomer to bumped
359 - renamed conflicting to divergent
360 - smarter divergent handling
361
362 1.0.2 -- 2012-09-19
363
364 - fix hg fold bug
365 - fix hg pull --rebase
366 - fix detection of conflict with external tools
367 - adapt to core movement (caches and --amend)
368
369 1.0.1 -- 2012-08-31
370
371 - documentation improvement
372 - fix a performance bug with hgweb
373
374 1.0 -- 2012-08-29
375
376 - Align with Mercurial version 2.3 (drop 2.2 support).
377 - stabilize handle killed parent
378 - stabilize handle late comer
379 - stabilize handle conflicting
380 - stabilize get a --continue switch
381 - merge and update ignore extinct changeset in most case.
382 - new "troubled()" revset
383 - summary now reports troubles changesets
384 - new touch command
385 - new fold command
386 - new basic olog alias
387
388 - rebase refuse to work on public changeset again
389 - rebase explicitly state that there is nothing to rebase because everything is
390 extinct() when that happen.
391 - amend now cleanly abort when --change switch is misused
392
393
394 0.7 -- 2012-08-06
395
396 - hook: work around insanely huge value in obsolete pushkey call
397 - pushkey: properly handle abort during obsolete markers push
398 - amend: wrap the whole process in a single transaction.
399 - evolve: tweak and add EOL to kill warning
400 - obsolete: fix doc, rebase no longer aborts with --keep
401 - obsolete/evolve: fix grammar in prerequisite messages
402 - evolve: avoid duplication in graft wrapper
403 - evolve: graft --continue is optional, test
404
405 0.6 -- 2012-07-31
406
407 - obsolete: change warning output to match mercurial core on
408 - qsync: ignore nonexistent nodes
409 - make compat server both compatible with "dump" and "dump%i" version
410
411 0.5 -- 2012-07-16
412
413 - obsolete: Detect conflicting changeset!
414 - obsolete: adapt to core: marker are written in transaction now
415 - evolve: add the solve alias to obsolete
416 - doc: big update of terms and summary of the concept
417 - evolve: switch the official name for "kill" to prune
418
419
420 0.4.1 -- 2012-07-10
421
422 - [convert] properly exclude null successors from conversion
423 - Ignore buggy marker in newerversion
424
425
426 0.4.0 -- 2012-07-06
427
428 - obsolete: public changeset are no longer latecomer.
429 - obsolete: move to official binary format
430 - adapt for new mercurial
431 - obsolete: we are not compatible with 2.1 any more
432
433 0.3.0 -- 2012-06-27
434
435 - obsolete: Add "latecomer" error detection (stabilize does not handle resolution yet)
436 - evolve: Introduce a new `uncommit` command to remove change from a changeset
437 - rebase: allow the use of --keep again
438 - commit: --amend option create obsolete marker (but still strip)
439 - obsolete: fewer marker are created when collapsing revision.
440 - revset: add, successors(), allsuccessors(), precursors(), allprecursors(),
441 latecomer() and hidden()
442 - evolve: add `prune` alias to `kill`.
443 - stabilize: clearly state that stabilize does not handle conflict
444 - template: add an {obsolete} keyword
445
446 0.2.0 -- 2012-06-20
447
448 - stabilize: improve choice of the next changeset to stabilize
449 - stabilize: improve resolution of several corner case
450 - rebase: handle removing empty changesets
451 - rebase: handle --collapse
452 - evolve: add `obsolete` alias to `kill`
453 - evolve: add `evolve` alias to `stabilize`
454
455