Show More
@@ -44,6 +44,9 b' configitem = registrar.configitem(config' | |||
|
44 | 44 | configitem('experimental', 'uncommitondirtywdir', |
|
45 | 45 | default=False, |
|
46 | 46 | ) |
|
47 | configitem('experimental', 'uncommit.keep', | |
|
48 | default=False, | |
|
49 | ) | |
|
47 | 50 | |
|
48 | 51 | # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for |
|
49 | 52 | # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should |
@@ -136,7 +139,7 b' def _fixdirstate(repo, oldctx, newctx, m' | |||
|
136 | 139 | ds.copy(src, dst) |
|
137 | 140 | |
|
138 | 141 | @command('uncommit', |
|
139 |
[('', 'keep', |
|
|
142 | [('', 'keep', None, _('allow an empty commit after uncommiting')), | |
|
140 | 143 | ] + commands.walkopts, |
|
141 | 144 | _('[OPTION]... [FILE]...'), |
|
142 | 145 | helpcategory=command.CATEGORY_CHANGE_MANAGEMENT) |
@@ -165,7 +168,12 b' def uncommit(ui, repo, *pats, **opts):' | |||
|
165 | 168 | |
|
166 | 169 | with repo.transaction('uncommit'): |
|
167 | 170 | match = scmutil.match(old, pats, opts) |
|
168 |
keepcommit = |
|
|
171 | keepcommit = pats | |
|
172 | if not keepcommit: | |
|
173 | if opts.get('keep') is not None: | |
|
174 | keepcommit = opts.get('keep') | |
|
175 | else: | |
|
176 | keepcommit = ui.configbool('experimental', 'uncommit.keep') | |
|
169 | 177 | newid = _commitfiltered(repo, old, match, keepcommit) |
|
170 | 178 | if newid is None: |
|
171 | 179 | ui.status(_("nothing to uncommit\n")) |
@@ -307,7 +307,7 b' Partial uncommit with public parent' | |||
|
307 | 307 | $ hg phase -r ".^" |
|
308 | 308 | 12: public |
|
309 | 309 | |
|
310 | Uncommit leaving an empty changeset | |
|
310 | Uncommit with --keep or experimental.uncommit.keep leaves an empty changeset | |
|
311 | 311 | |
|
312 | 312 | $ cd $TESTTMP |
|
313 | 313 | $ hg init repo1 |
@@ -327,9 +327,31 b' Uncommit leaving an empty changeset' | |||
|
327 | 327 | |/ |
|
328 | 328 | o P FILES: P |
|
329 | 329 | |
|
330 | $ cat >> .hg/hgrc <<EOF | |
|
331 | > [experimental] | |
|
332 | > uncommit.keep=True | |
|
333 | > EOF | |
|
334 | $ hg ci --amend | |
|
335 | $ hg uncommit | |
|
336 | note: keeping empty commit | |
|
337 | $ hg log -G -T '{desc} FILES: {files}' | |
|
338 | @ Q FILES: | |
|
339 | | | |
|
340 | | x Q FILES: Q | |
|
341 | |/ | |
|
342 | o P FILES: P | |
|
343 | ||
|
330 | 344 | $ hg status |
|
331 | 345 | A Q |
|
332 | ||
|
346 | $ hg ci --amend | |
|
347 | $ hg uncommit --no-keep | |
|
348 | $ hg log -G -T '{desc} FILES: {files}' | |
|
349 | x Q FILES: Q | |
|
350 | | | |
|
351 | @ P FILES: P | |
|
352 | ||
|
353 | $ hg status | |
|
354 | A Q | |
|
333 | 355 | $ cd .. |
|
334 | 356 | $ rm -rf repo1 |
|
335 | 357 |
General Comments 0
You need to be logged in to leave comments.
Login now