Show More
@@ -50,6 +50,7 b' from mercurial import (' | |||||
50 | phases, |
|
50 | phases, | |
51 | pycompat, |
|
51 | pycompat, | |
52 | registrar, |
|
52 | registrar, | |
|
53 | rewriteutil, | |||
53 | scmutil, |
|
54 | scmutil, | |
54 | util, |
|
55 | util, | |
55 | ) |
|
56 | ) | |
@@ -782,8 +783,10 b' class fixupstate(object):' | |||||
782 | # nothing changed, nothing commited |
|
783 | # nothing changed, nothing commited | |
783 | nextp1 = ctx |
|
784 | nextp1 = ctx | |
784 | continue |
|
785 | continue | |
785 | if ctx.files() and self._willbecomenoop( |
|
786 | if ( | |
786 | memworkingcopy, ctx, nextp1 |
|
787 | self.skip_empty_successor | |
|
788 | and ctx.files() | |||
|
789 | and self._willbecomenoop(memworkingcopy, ctx, nextp1) | |||
787 | ): |
|
790 | ): | |
788 | # changeset is no longer necessary |
|
791 | # changeset is no longer necessary | |
789 | self.replacemap[ctx.node()] = None |
|
792 | self.replacemap[ctx.node()] = None | |
@@ -935,6 +938,10 b' class fixupstate(object):' | |||||
935 | self.repo, replacements, operation=b'absorb', fixphase=True |
|
938 | self.repo, replacements, operation=b'absorb', fixphase=True | |
936 | ) |
|
939 | ) | |
937 |
|
940 | |||
|
941 | @util.propertycache | |||
|
942 | def skip_empty_successor(self): | |||
|
943 | return rewriteutil.skip_empty_successor(self.ui, b'absorb') | |||
|
944 | ||||
938 |
|
945 | |||
939 | def _parsechunk(hunk): |
|
946 | def _parsechunk(hunk): | |
940 | """(crecord.uihunk or patch.recordhunk) -> (path, (a1, a2, [bline]))""" |
|
947 | """(crecord.uihunk or patch.recordhunk) -> (path, (a1, a2, [bline]))""" |
@@ -1896,7 +1896,7 b' Alias definitions for revsets. See :hg:`' | |||||
1896 | operations. If set to ``skip``, the successor is not created. If set to |
|
1896 | operations. If set to ``skip``, the successor is not created. If set to | |
1897 | ``keep``, the empty successor is created and kept. |
|
1897 | ``keep``, the empty successor is created and kept. | |
1898 |
|
1898 | |||
1899 |
Currently, only the rebase command consider |
|
1899 | Currently, only the rebase and absorb commands consider this configuration. | |
1900 | (EXPERIMENTAL) |
|
1900 | (EXPERIMENTAL) | |
1901 |
|
1901 | |||
1902 | ``storage`` |
|
1902 | ``storage`` |
@@ -490,6 +490,71 b' Remove lines may delete changesets:' | |||||
490 | +3 |
|
490 | +3 | |
491 |
|
491 | |||
492 |
|
492 | |||
|
493 | Setting config rewrite.empty-successor=keep causes empty changesets to get committed: | |||
|
494 | ||||
|
495 | $ cd .. | |||
|
496 | $ hg init repo4a | |||
|
497 | $ cd repo4a | |||
|
498 | $ cat > a <<EOF | |||
|
499 | > 1 | |||
|
500 | > 2 | |||
|
501 | > EOF | |||
|
502 | $ hg commit -m a12 -A a | |||
|
503 | $ cat > b <<EOF | |||
|
504 | > 1 | |||
|
505 | > 2 | |||
|
506 | > EOF | |||
|
507 | $ hg commit -m b12 -A b | |||
|
508 | $ echo 3 >> b | |||
|
509 | $ hg commit -m b3 | |||
|
510 | $ echo 4 >> b | |||
|
511 | $ hg commit -m b4 | |||
|
512 | $ echo 1 > b | |||
|
513 | $ echo 3 >> a | |||
|
514 | $ hg absorb -pn | |||
|
515 | showing changes for a | |||
|
516 | @@ -2,0 +2,1 @@ | |||
|
517 | bfafb49 +3 | |||
|
518 | showing changes for b | |||
|
519 | @@ -1,3 +1,0 @@ | |||
|
520 | 1154859 -2 | |||
|
521 | 30970db -3 | |||
|
522 | a393a58 -4 | |||
|
523 | ||||
|
524 | 4 changesets affected | |||
|
525 | a393a58 b4 | |||
|
526 | 30970db b3 | |||
|
527 | 1154859 b12 | |||
|
528 | bfafb49 a12 | |||
|
529 | $ hg absorb -av --config rewrite.empty-successor=keep | grep became | |||
|
530 | 0:bfafb49242db: 1 file(s) changed, became 4:1a2de97fc652 | |||
|
531 | 1:115485984805: 2 file(s) changed, became 5:0c930dfab74c | |||
|
532 | 2:30970dbf7b40: 2 file(s) changed, became 6:df6574ae635c | |||
|
533 | 3:a393a58b9a85: 2 file(s) changed, became 7:ad4bd3462c9e | |||
|
534 | $ hg log -T '{rev} {desc}\n' -Gp | |||
|
535 | @ 7 b4 | |||
|
536 | | | |||
|
537 | o 6 b3 | |||
|
538 | | | |||
|
539 | o 5 b12 | |||
|
540 | | diff --git a/b b/b | |||
|
541 | | new file mode 100644 | |||
|
542 | | --- /dev/null | |||
|
543 | | +++ b/b | |||
|
544 | | @@ -0,0 +1,1 @@ | |||
|
545 | | +1 | |||
|
546 | | | |||
|
547 | o 4 a12 | |||
|
548 | diff --git a/a b/a | |||
|
549 | new file mode 100644 | |||
|
550 | --- /dev/null | |||
|
551 | +++ b/a | |||
|
552 | @@ -0,0 +1,3 @@ | |||
|
553 | +1 | |||
|
554 | +2 | |||
|
555 | +3 | |||
|
556 | ||||
|
557 | ||||
493 | Use revert to make the current change and its parent disappear. |
|
558 | Use revert to make the current change and its parent disappear. | |
494 | This should move us to the non-obsolete ancestor. |
|
559 | This should move us to the non-obsolete ancestor. | |
495 |
|
560 |
General Comments 0
You need to be logged in to leave comments.
Login now