From patchwork Wed May 13 17:04:22 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [4,of,5,evolve-ext] evolve: add selector for trouble types From: Laurent Charignon X-Patchwork-Id: 9057 Message-Id: To: Date: Wed, 13 May 2015 10:04:22 -0700 # HG changeset patch # User Laurent Charignon # Date 1431532715 25200 # Wed May 13 08:58:35 2015 -0700 # Node ID f7b2e0e5e05e76d181c99e6ed3fbcc9508cc0c33 # Parent 96db44ca62d46ac9b57042885e40adb8c1fd9e4e evolve: add selector for trouble types This patch adds command line flags to select the kind of troubles to solve. It is limited to --rev. The default of --rev remains solving all three kinds of troubles. diff --git a/hgext/evolve.py b/hgext/evolve.py --- a/hgext/evolve.py +++ b/hgext/evolve.py @@ -1243,6 +1243,9 @@ 'ask for confirmation before performing the action'), ('A', 'any', False, 'also consider troubled changesets unrelated to current working directory'), ('r', 'rev', '', 'solves troubles of these revisions'), + ('', 'bumped', False, 'with --rev: solves only bumped changesets'), + ('', 'divergent', False, 'with --rev: solves only divergent changesets'), + ('', 'unstable', False, 'with --rev: solves only unstable changesets'), ('a', 'all', False, 'evolve all troubled changesets in the repo ' '(implies any)'), ('c', 'continue', False, 'continue an interrupted evolution'), @@ -1281,6 +1284,7 @@ dryrunopt = opts['dry_run'] confirmopt = opts['confirm'] revopt = opts['rev'] + troubletypes = ['bumped', 'divergent', 'unstable'] ui.setconfig('ui', 'forcemerge', opts.get('tool', ''), 'evolve') troubled = set(repo.revs('troubled()')) @@ -1304,7 +1308,12 @@ # Rev specified on the commands line if revopt: revs = repo.revs(revopt) - troubled = repo.revs('troubled()') + # () as we use these in a revset + specifictypes = [t + '()' for t in troubletypes if opts[t]] + if specifictypes: + troubled = repo.revs(' or '.join(specifictypes)) + else: + troubled = repo.revs('troubled()') _revs = revs & troubled if not _revs: ui.write_err("No troubled changes in the specified revset\n") diff --git a/tests/test-evolve.t b/tests/test-evolve.t --- a/tests/test-evolve.t +++ b/tests/test-evolve.t @@ -1001,7 +1001,9 @@ | o 0 : a0 - test - $ hg evolve --rev "14::" + $ hg evolve --rev "14::" --bumped + No troubled changes in the specified revset + $ hg evolve --rev "14::" --unstable move:[15] add gg atop:[18] a3 move:[16] add gh