# HG changeset patch # User Pierre-Yves David # Date 1345464809 -7200 # Node ID 4a039a8c1cf369eb6356ecae99f9a6463a0e1c12 # Parent d88c761f97c481dc1c864761bafb89604c7855f8 stabilize: --continue support !!! Based on graft one. diff -r d88c761f97c4 -r 4a039a8c1cf3 hgext/evolve.py --- a/hgext/evolve.py Mon Aug 20 12:31:43 2012 +0200 +++ b/hgext/evolve.py Mon Aug 20 14:13:29 2012 +0200 @@ -226,7 +226,8 @@ @command('^stabilize|evolve|solve', [('n', 'dry-run', False, 'do not perform actions, print what to be done'), - ('A', 'any', False, 'stabilize any unstable changeset'),], + ('A', 'any', False, 'stabilize any unstable changeset'), + ('c', 'continue', False, 'continue an interrupted stabilized'), ], _('[OPTIONS]...')) def stabilize(ui, repo, **opts): """rebase an unstable changeset to make it stable again @@ -240,6 +241,15 @@ The working directory is updated to the rebased revision. """ + contopt = opts['continue'] + anyopt = opts['any'] + + if contopt: + if anyopt: + raise util.Abort('can not specify both "--any" and "--continue"') + graftcmd = commands.table['graft'][0] + return graftcmd(ui, repo, old_obsolete=True, **{'continue': True}) + obsolete = extensions.find('obsolete') orig = None @@ -290,9 +300,9 @@ try: relocate(repo, orig, target) except MergeFailure: - repo.ui.write_err(_('/!\\ stabilize failed /!\\\n')) - repo.ui.write_err(_('/!\\ Their is no "hg stabilize --continue" /!\\\n')) - repo.ui.write_err(_('/!\\ use "hg up -C . ; hg stabilize --dry-run" /!\\\n')) + repo.opener.write('graftstate', orig.hex() + '\n') + repo.ui.write_err(_('stabilize failed!\n')) + repo.ui.write_err(_('fix conflict and run "hg stabilize --continue"\n')) raise finally: lock.release() diff -r d88c761f97c4 -r 4a039a8c1cf3 tests/test-stabilize-result.t --- a/tests/test-stabilize-result.t Mon Aug 20 12:31:43 2012 +0200 +++ b/tests/test-stabilize-result.t Mon Aug 20 14:13:29 2012 +0200 @@ -49,3 +49,50 @@ 41ad4fe8c79565a06c89f032ef0937b3cbd68a04 1447e1c4828d2347df8f858aa041305fa4cf7db1 0 {'date': '* *', 'user': 'test'} (glob) 102a90ea7b4a3361e4082ed620918c261189a36a 1447e1c4828d2347df8f858aa041305fa4cf7db1 0 {'date': '* *', 'user': 'test'} (glob) cce2c55b896511e0b6e04173c9450ba822ebc740 0 {'date': '* *', 'user': 'test'} (glob) + +Test stabilize with conflict + + $ ls + a + b + $ hg pdiff a + diff -r 07f494440405 a + --- a/a * (glob) + +++ b/a * (glob) + @@ -1,1 +1,2 @@ + a + +a + $ echo 'newer a' >> a + $ hg ci -m 'newer a' + $ hg gdown + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + [4] changea + $ echo 'a' > a + $ hg amend + 1 new unstables changesets + $ hg stabilize + move:[5] newer a + atop:[7] changea + merging a + warning: conflicts during merge. + merging a incomplete! (edit conflicts, then use 'hg resolve --mark') + stabilize failed! + fix conflict and run "hg stabilize --continue" + abort: unresolved merge conflicts (see hg help resolve) + [255] + $ hg revert -r 'unstable()' a + $ hg diff + diff -r e8cc1b534401 a + --- a/a * (glob) + +++ b/a * (glob) + @@ -1,1 +1,3 @@ + a + +a + +newer a + $ hg stabilize --continue + grafting revision 5 + abort: unresolved merge conflicts (see hg help resolve) + [255] + $ hg resolve -m a + $ hg stabilize --continue + grafting revision 5