tests/test-evolve-obshistory.t
author Boris Feld <boris.feld@octobus.net>
Fri, 12 May 2017 11:39:41 +0200
changeset 2349 521a18a10a06
parent 2342 e28026b4d3c1
child 2350 ea816b5c1cf6
permissions -rw-r--r--
obshistory: display a message when one marker node has no change ctx When exchanging obs markers, there is some change contexts referencing change contexts that are not available locally. As we cannot display informations about them, instead print a message saying so.

This test file test the various messages when accessing obsolete
revisions.

Global setup
============

  $ . $TESTDIR/testlib/common.sh
  $ cat >> $HGRCPATH <<EOF
  > [ui]
  > interactive = true
  > [phases]
  > publish=False
  > [extensions]
  > evolve =
  > EOF

Test output on amended commit
=============================

Test setup
----------

  $ hg init $TESTTMP/local-amend
  $ cd $TESTTMP/local-amend
  $ mkcommit ROOT
  $ mkcommit A0
  $ echo 42 >> A0
  $ hg amend -m "A1
  > 
  > Better commit message"
  $ hg log --hidden -G
  @  changeset:   3:4ae3a4151de9
  |  tag:         tip
  |  parent:      0:ea207398892e
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     A1
  |
  | x  changeset:   2:f137d23bb3e1
  | |  user:        test
  | |  date:        Thu Jan 01 00:00:00 1970 +0000
  | |  summary:     temporary amend commit for 471f378eab4c
  | |
  | x  changeset:   1:471f378eab4c
  |/   user:        test
  |    date:        Thu Jan 01 00:00:00 1970 +0000
  |    summary:     A0
  |
  o  changeset:   0:ea207398892e
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     ROOT
  
Actual test
-----------
  $ hg debugobshistory 4ae3a4151de9
  4ae3a4151de9 (3) A1
  471f378eab4c (1) A0
    rewritten by test (*20*) as 4ae3a4151de9 (glob)
  $ hg debugobshistory 4ae3a4151de9 -Tjson | python -m json.tool
  [
      {
          "debugobshistory.markers": [],
          "debugobshistory.node": "4ae3a4151de9",
          "debugobshistory.rev": 3,
          "debugobshistory.shortdescription": "A1"
      },
      {
          "debugobshistory.markers": [
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "4ae3a4151de9"
                  ],
                  "debugobshistory.verb": "rewritten"
              }
          ],
          "debugobshistory.node": "471f378eab4c",
          "debugobshistory.rev": 1,
          "debugobshistory.shortdescription": "A0"
      }
  ]
  $ hg debugobshistory --hidden 471f378eab4c
  471f378eab4c (1) A0
    rewritten by test (*20*) as 4ae3a4151de9 (glob)
  $ hg debugobshistory --hidden 471f378eab4c -Tjson | python -m json.tool
  [
      {
          "debugobshistory.markers": [
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "4ae3a4151de9"
                  ],
                  "debugobshistory.verb": "rewritten"
              }
          ],
          "debugobshistory.node": "471f378eab4c",
          "debugobshistory.rev": 1,
          "debugobshistory.shortdescription": "A0"
      }
  ]
  $ hg update 471f378eab4c
  abort: hidden revision '471f378eab4c'!
  (use --hidden to access hidden revisions; successor: 4ae3a4151de9)
  [255]
  $ hg update --hidden "desc(A0)"
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  working directory parent is obsolete! (471f378eab4c)
  (use 'hg evolve' to update to its successor: 4ae3a4151de9)

Test output with pruned commit
==============================

Test setup
----------

  $ hg init $TESTTMP/local-prune
  $ cd $TESTTMP/local-prune
  $ mkcommit ROOT
  $ mkcommit A0 # 0
  $ mkcommit B0 # 1
  $ hg log --hidden -G
  @  changeset:   2:0dec01379d3b
  |  tag:         tip
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     B0
  |
  o  changeset:   1:471f378eab4c
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     A0
  |
  o  changeset:   0:ea207398892e
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     ROOT
  
  $ hg prune -r 'desc(B0)'
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
  working directory now at 471f378eab4c
  1 changesets pruned
  $ hg log --hidden -G
  x  changeset:   2:0dec01379d3b
  |  tag:         tip
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     B0
  |
  @  changeset:   1:471f378eab4c
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     A0
  |
  o  changeset:   0:ea207398892e
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     ROOT
  

Actual test
-----------

  $ hg debugobshistory 'desc(B0)' --hidden
  0dec01379d3b (2) B0
    pruned by test (*20*) (glob)
  $ hg debugobshistory 'desc(B0)' --hidden -Tjson | python -m json.tool
  [
      {
          "debugobshistory.markers": [
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.verb": "pruned"
              }
          ],
          "debugobshistory.node": "0dec01379d3b",
          "debugobshistory.rev": 2,
          "debugobshistory.shortdescription": "B0"
      }
  ]
  $ hg debugobshistory 'desc(A0)'
  471f378eab4c (1) A0
  $ hg debugobshistory 'desc(A0)' -Tjson | python -m json.tool
  [
      {
          "debugobshistory.markers": [],
          "debugobshistory.node": "471f378eab4c",
          "debugobshistory.rev": 1,
          "debugobshistory.shortdescription": "A0"
      }
  ]
  $ hg up 1
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg up 0dec01379d3b
  abort: hidden revision '0dec01379d3b'!
  (use --hidden to access hidden revisions; pruned)
  [255]
  $ hg up --hidden -r 'desc(B0)'
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  working directory parent is obsolete! (0dec01379d3b)
  (use 'hg evolve' to update to its parent successor)

Test output with splitted commit
================================

Test setup
----------

  $ hg init $TESTTMP/local-split
  $ cd $TESTTMP/local-split
  $ mkcommit ROOT
  $ echo 42 >> a
  $ echo 43 >> b
  $ hg commit -A -m "A0"
  adding a
  adding b
  $ hg log --hidden -G
  @  changeset:   1:471597cad322
  |  tag:         tip
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     A0
  |
  o  changeset:   0:ea207398892e
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     ROOT
  
  $ hg split -r 'desc(A0)' -d "0 0" << EOF
  > y
  > y
  > n
  > n
  > y
  > y
  > EOF
  0 files updated, 0 files merged, 2 files removed, 0 files unresolved
  adding a
  adding b
  diff --git a/a b/a
  new file mode 100644
  examine changes to 'a'? [Ynesfdaq?] y
  
  @@ -0,0 +1,1 @@
  +42
  record change 1/2 to 'a'? [Ynesfdaq?] y
  
  diff --git a/b b/b
  new file mode 100644
  examine changes to 'b'? [Ynesfdaq?] n
  
  created new head
  Done splitting? [yN] n
  diff --git a/b b/b
  new file mode 100644
  examine changes to 'b'? [Ynesfdaq?] y
  
  @@ -0,0 +1,1 @@
  +43
  record this change to 'b'? [Ynesfdaq?] y
  
  no more change to split

  $ hg log --hidden -G
  @  changeset:   3:f257fde29c7a
  |  tag:         tip
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     A0
  |
  o  changeset:   2:337fec4d2edc
  |  parent:      0:ea207398892e
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     A0
  |
  | x  changeset:   1:471597cad322
  |/   user:        test
  |    date:        Thu Jan 01 00:00:00 1970 +0000
  |    summary:     A0
  |
  o  changeset:   0:ea207398892e
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     ROOT
  
Actual test
-----------

  $ hg debugobshistory 471597cad322 --hidden
  471597cad322 (1) A0
    rewritten by test (*20*) as 337fec4d2edc, f257fde29c7a (glob)
  $ hg debugobshistory 471597cad322 --hidden -Tjson | python -m json.tool
  [
      {
          "debugobshistory.markers": [
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "337fec4d2edc",
                      "f257fde29c7a"
                  ],
                  "debugobshistory.verb": "rewritten"
              }
          ],
          "debugobshistory.node": "471597cad322",
          "debugobshistory.rev": 1,
          "debugobshistory.shortdescription": "A0"
      }
  ]
  $ hg debugobshistory 337fec4d2edc
  337fec4d2edc (2) A0
  471597cad322 (1) A0
    rewritten by test (*20*) as 337fec4d2edc, f257fde29c7a (glob)
  $ hg debugobshistory 337fec4d2edc -Tjson | python -m json.tool
  [
      {
          "debugobshistory.markers": [],
          "debugobshistory.node": "337fec4d2edc",
          "debugobshistory.rev": 2,
          "debugobshistory.shortdescription": "A0"
      },
      {
          "debugobshistory.markers": [
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "337fec4d2edc",
                      "f257fde29c7a"
                  ],
                  "debugobshistory.verb": "rewritten"
              }
          ],
          "debugobshistory.node": "471597cad322",
          "debugobshistory.rev": 1,
          "debugobshistory.shortdescription": "A0"
      }
  ]
  $ hg debugobshistory f257fde29c7a
  f257fde29c7a (3) A0
  471597cad322 (1) A0
    rewritten by test (*20*) as 337fec4d2edc, f257fde29c7a (glob)
  $ hg debugobshistory f257fde29c7a -Tjson | python -m json.tool
  [
      {
          "debugobshistory.markers": [],
          "debugobshistory.node": "f257fde29c7a",
          "debugobshistory.rev": 3,
          "debugobshistory.shortdescription": "A0"
      },
      {
          "debugobshistory.markers": [
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "337fec4d2edc",
                      "f257fde29c7a"
                  ],
                  "debugobshistory.verb": "rewritten"
              }
          ],
          "debugobshistory.node": "471597cad322",
          "debugobshistory.rev": 1,
          "debugobshistory.shortdescription": "A0"
      }
  ]
  $ hg update 471597cad322
  abort: hidden revision '471597cad322'!
  (use --hidden to access hidden revisions; successors: 337fec4d2edc, f257fde29c7a)
  [255]
  $ hg update --hidden 'min(desc(A0))'
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
  working directory parent is obsolete! (471597cad322)
  (use 'hg evolve' to update to its tipmost successor: 337fec4d2edc, f257fde29c7a)

Test output with lots of splitted commit
========================================

Test setup
----------

  $ hg init $TESTTMP/local-lots-split
  $ cd $TESTTMP/local-lots-split
  $ mkcommit ROOT
  $ echo 42 >> a
  $ echo 43 >> b
  $ echo 44 >> c
  $ echo 45 >> d
  $ hg commit -A -m "A0"
  adding a
  adding b
  adding c
  adding d
  $ hg log --hidden -G
  @  changeset:   1:de7290d8b885
  |  tag:         tip
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     A0
  |
  o  changeset:   0:ea207398892e
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     ROOT
  

  $ hg split -r 'desc(A0)' -d "0 0" << EOF
  > y
  > y
  > n
  > n
  > n
  > n
  > y
  > y
  > n
  > n
  > n
  > y
  > y
  > n
  > n
  > y
  > y
  > EOF
  0 files updated, 0 files merged, 4 files removed, 0 files unresolved
  adding a
  adding b
  adding c
  adding d
  diff --git a/a b/a
  new file mode 100644
  examine changes to 'a'? [Ynesfdaq?] y
  
  @@ -0,0 +1,1 @@
  +42
  record change 1/4 to 'a'? [Ynesfdaq?] y
  
  diff --git a/b b/b
  new file mode 100644
  examine changes to 'b'? [Ynesfdaq?] n
  
  diff --git a/c b/c
  new file mode 100644
  examine changes to 'c'? [Ynesfdaq?] n
  
  diff --git a/d b/d
  new file mode 100644
  examine changes to 'd'? [Ynesfdaq?] n
  
  created new head
  Done splitting? [yN] n
  diff --git a/b b/b
  new file mode 100644
  examine changes to 'b'? [Ynesfdaq?] y
  
  @@ -0,0 +1,1 @@
  +43
  record change 1/3 to 'b'? [Ynesfdaq?] y
  
  diff --git a/c b/c
  new file mode 100644
  examine changes to 'c'? [Ynesfdaq?] n
  
  diff --git a/d b/d
  new file mode 100644
  examine changes to 'd'? [Ynesfdaq?] n
  
  Done splitting? [yN] n
  diff --git a/c b/c
  new file mode 100644
  examine changes to 'c'? [Ynesfdaq?] y
  
  @@ -0,0 +1,1 @@
  +44
  record change 1/2 to 'c'? [Ynesfdaq?] y
  
  diff --git a/d b/d
  new file mode 100644
  examine changes to 'd'? [Ynesfdaq?] n
  
  Done splitting? [yN] n
  diff --git a/d b/d
  new file mode 100644
  examine changes to 'd'? [Ynesfdaq?] y
  
  @@ -0,0 +1,1 @@
  +45
  record this change to 'd'? [Ynesfdaq?] y
  
  no more change to split

  $ hg log --hidden -G
  @  changeset:   5:c7f044602e9b
  |  tag:         tip
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     A0
  |
  o  changeset:   4:1ae8bc733a14
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     A0
  |
  o  changeset:   3:f257fde29c7a
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     A0
  |
  o  changeset:   2:337fec4d2edc
  |  parent:      0:ea207398892e
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     A0
  |
  | x  changeset:   1:de7290d8b885
  |/   user:        test
  |    date:        Thu Jan 01 00:00:00 1970 +0000
  |    summary:     A0
  |
  o  changeset:   0:ea207398892e
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     ROOT
  
Actual test
-----------

  $ hg debugobshistory de7290d8b885 --hidden
  de7290d8b885 (1) A0
    rewritten by test (*20*) as 1ae8bc733a14, 337fec4d2edc, c7f044602e9b, f257fde29c7a (glob)
  $ hg debugobshistory de7290d8b885 --hidden -Tjson | python -m json.tool
  [
      {
          "debugobshistory.markers": [
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "1ae8bc733a14",
                      "337fec4d2edc",
                      "c7f044602e9b",
                      "f257fde29c7a"
                  ],
                  "debugobshistory.verb": "rewritten"
              }
          ],
          "debugobshistory.node": "de7290d8b885",
          "debugobshistory.rev": 1,
          "debugobshistory.shortdescription": "A0"
      }
  ]
  $ hg debugobshistory c7f044602e9b
  c7f044602e9b (5) A0
  de7290d8b885 (1) A0
    rewritten by test (*20*) as 1ae8bc733a14, 337fec4d2edc, c7f044602e9b, f257fde29c7a (glob)
  $ hg debugobshistory c7f044602e9b -Tjson | python -m json.tool
  [
      {
          "debugobshistory.markers": [],
          "debugobshistory.node": "c7f044602e9b",
          "debugobshistory.rev": 5,
          "debugobshistory.shortdescription": "A0"
      },
      {
          "debugobshistory.markers": [
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "1ae8bc733a14",
                      "337fec4d2edc",
                      "c7f044602e9b",
                      "f257fde29c7a"
                  ],
                  "debugobshistory.verb": "rewritten"
              }
          ],
          "debugobshistory.node": "de7290d8b885",
          "debugobshistory.rev": 1,
          "debugobshistory.shortdescription": "A0"
      }
  ]
  $ hg update de7290d8b885
  abort: hidden revision 'de7290d8b885'!
  (use --hidden to access hidden revisions; successors: 337fec4d2edc, f257fde29c7a and 2 more)
  [255]
  $ hg update --hidden 'min(desc(A0))'
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
  working directory parent is obsolete! (de7290d8b885)
  (use 'hg evolve' to update to its tipmost successor: 337fec4d2edc, f257fde29c7a and 2 more)

Test output with folded commit
==============================

Test setup
----------

  $ hg init $TESTTMP/local-fold
  $ cd $TESTTMP/local-fold
  $ mkcommit ROOT
  $ mkcommit A0
  $ mkcommit B0
  $ hg log --hidden -G
  @  changeset:   2:0dec01379d3b
  |  tag:         tip
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     B0
  |
  o  changeset:   1:471f378eab4c
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     A0
  |
  o  changeset:   0:ea207398892e
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     ROOT
  
  $ hg fold --exact -r 'desc(A0) + desc(B0)' --date "0 0" -m "C0"
  2 changesets folded
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg log --hidden -G
  @  changeset:   3:eb5a0daa2192
  |  tag:         tip
  |  parent:      0:ea207398892e
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     C0
  |
  | x  changeset:   2:0dec01379d3b
  | |  user:        test
  | |  date:        Thu Jan 01 00:00:00 1970 +0000
  | |  summary:     B0
  | |
  | x  changeset:   1:471f378eab4c
  |/   user:        test
  |    date:        Thu Jan 01 00:00:00 1970 +0000
  |    summary:     A0
  |
  o  changeset:   0:ea207398892e
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     ROOT
  
 Actual test
 -----------

  $ hg debugobshistory --hidden 471f378eab4c
  471f378eab4c (1) A0
    rewritten by test (*20*) as eb5a0daa2192 (glob)
  $ hg debugobshistory --hidden 471f378eab4c -Tjson | python -m json.tool
  [
      {
          "debugobshistory.markers": [
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "eb5a0daa2192"
                  ],
                  "debugobshistory.verb": "rewritten"
              }
          ],
          "debugobshistory.node": "471f378eab4c",
          "debugobshistory.rev": 1,
          "debugobshistory.shortdescription": "A0"
      }
  ]
  $ hg debugobshistory --hidden 0dec01379d3b
  0dec01379d3b (2) B0
    rewritten by test (*20*) as eb5a0daa2192 (glob)
  $ hg debugobshistory --hidden 0dec01379d3b -Tjson | python -m json.tool
  [
      {
          "debugobshistory.markers": [
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "eb5a0daa2192"
                  ],
                  "debugobshistory.verb": "rewritten"
              }
          ],
          "debugobshistory.node": "0dec01379d3b",
          "debugobshistory.rev": 2,
          "debugobshistory.shortdescription": "B0"
      }
  ]
  $ hg debugobshistory eb5a0daa2192
  eb5a0daa2192 (3) C0
  471f378eab4c (1) A0
    rewritten by test (*20*) as eb5a0daa2192 (glob)
  0dec01379d3b (2) B0
    rewritten by test (*20*) as eb5a0daa2192 (glob)
  $ hg debugobshistory eb5a0daa2192 -Tjson | python -m json.tool
  [
      {
          "debugobshistory.markers": [],
          "debugobshistory.node": "eb5a0daa2192",
          "debugobshistory.rev": 3,
          "debugobshistory.shortdescription": "C0"
      },
      {
          "debugobshistory.markers": [
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "eb5a0daa2192"
                  ],
                  "debugobshistory.verb": "rewritten"
              }
          ],
          "debugobshistory.node": "471f378eab4c",
          "debugobshistory.rev": 1,
          "debugobshistory.shortdescription": "A0"
      },
      {
          "debugobshistory.markers": [
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "eb5a0daa2192"
                  ],
                  "debugobshistory.verb": "rewritten"
              }
          ],
          "debugobshistory.node": "0dec01379d3b",
          "debugobshistory.rev": 2,
          "debugobshistory.shortdescription": "B0"
      }
  ]
  $ hg update 471f378eab4c
  abort: hidden revision '471f378eab4c'!
  (use --hidden to access hidden revisions; successor: eb5a0daa2192)
  [255]
  $ hg update --hidden 'desc(A0)'
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
  working directory parent is obsolete! (471f378eab4c)
  (use 'hg evolve' to update to its successor: eb5a0daa2192)
  $ hg update 0dec01379d3b
  working directory parent is obsolete! (471f378eab4c)
  (use 'hg evolve' to update to its successor: eb5a0daa2192)
  abort: hidden revision '0dec01379d3b'!
  (use --hidden to access hidden revisions; successor: eb5a0daa2192)
  [255]
  $ hg update --hidden 'desc(B0)'
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  working directory parent is obsolete! (0dec01379d3b)
  (use 'hg evolve' to update to its successor: eb5a0daa2192)

Test output with divergence
===========================

Test setup
----------

  $ hg init $TESTTMP/local-divergence
  $ cd $TESTTMP/local-divergence
  $ mkcommit ROOT
  $ mkcommit A0
  $ hg amend -m "A1"
  $ hg log --hidden -G
  @  changeset:   2:fdf9bde5129a
  |  tag:         tip
  |  parent:      0:ea207398892e
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     A1
  |
  | x  changeset:   1:471f378eab4c
  |/   user:        test
  |    date:        Thu Jan 01 00:00:00 1970 +0000
  |    summary:     A0
  |
  o  changeset:   0:ea207398892e
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     ROOT
  
  $ hg update --hidden 'desc(A0)'
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
  working directory parent is obsolete! (471f378eab4c)
  (use 'hg evolve' to update to its successor: fdf9bde5129a)
  $ hg amend -m "A2"
  2 new divergent changesets
  $ hg log --hidden -G
  @  changeset:   3:65b757b745b9
  |  tag:         tip
  |  parent:      0:ea207398892e
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  trouble:     divergent
  |  summary:     A2
  |
  | o  changeset:   2:fdf9bde5129a
  |/   parent:      0:ea207398892e
  |    user:        test
  |    date:        Thu Jan 01 00:00:00 1970 +0000
  |    trouble:     divergent
  |    summary:     A1
  |
  | x  changeset:   1:471f378eab4c
  |/   user:        test
  |    date:        Thu Jan 01 00:00:00 1970 +0000
  |    summary:     A0
  |
  o  changeset:   0:ea207398892e
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     ROOT
  
Actual test
-----------

  $ hg debugobshistory --hidden 471f378eab4c
  471f378eab4c (1) A0
    rewritten by test (*20*) as 65b757b745b9 (glob)
    rewritten by test (*20*) as fdf9bde5129a (glob)
  $ hg debugobshistory --hidden 471f378eab4c -Tjson | python -m json.tool
  [
      {
          "debugobshistory.markers": [
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "65b757b745b9"
                  ],
                  "debugobshistory.verb": "rewritten"
              },
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "fdf9bde5129a"
                  ],
                  "debugobshistory.verb": "rewritten"
              }
          ],
          "debugobshistory.node": "471f378eab4c",
          "debugobshistory.rev": 1,
          "debugobshistory.shortdescription": "A0"
      }
  ]
  $ hg debugobshistory fdf9bde5129a
  fdf9bde5129a (2) A1
  471f378eab4c (1) A0
    rewritten by test (*20*) as 65b757b745b9 (glob)
    rewritten by test (*20*) as fdf9bde5129a (glob)
  $ hg debugobshistory fdf9bde5129a -Tjson | python -m json.tool
  [
      {
          "debugobshistory.markers": [],
          "debugobshistory.node": "fdf9bde5129a",
          "debugobshistory.rev": 2,
          "debugobshistory.shortdescription": "A1"
      },
      {
          "debugobshistory.markers": [
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "65b757b745b9"
                  ],
                  "debugobshistory.verb": "rewritten"
              },
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "fdf9bde5129a"
                  ],
                  "debugobshistory.verb": "rewritten"
              }
          ],
          "debugobshistory.node": "471f378eab4c",
          "debugobshistory.rev": 1,
          "debugobshistory.shortdescription": "A0"
      }
  ]
  $ hg debugobshistory 65b757b745b9
  65b757b745b9 (3) A2
  471f378eab4c (1) A0
    rewritten by test (*20*) as 65b757b745b9 (glob)
    rewritten by test (*20*) as fdf9bde5129a (glob)
  $ hg debugobshistory 65b757b745b9 -Tjson | python -m json.tool
  [
      {
          "debugobshistory.markers": [],
          "debugobshistory.node": "65b757b745b9",
          "debugobshistory.rev": 3,
          "debugobshistory.shortdescription": "A2"
      },
      {
          "debugobshistory.markers": [
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "65b757b745b9"
                  ],
                  "debugobshistory.verb": "rewritten"
              },
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "fdf9bde5129a"
                  ],
                  "debugobshistory.verb": "rewritten"
              }
          ],
          "debugobshistory.node": "471f378eab4c",
          "debugobshistory.rev": 1,
          "debugobshistory.shortdescription": "A0"
      }
  ]
  $ hg update 471f378eab4c
  abort: hidden revision '471f378eab4c'!
  (use --hidden to access hidden revisions; diverged)
  [255]
  $ hg update --hidden 'desc(A0)'
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
  working directory parent is obsolete! (471f378eab4c)
  (471f378eab4c has diverged, use 'hg evolve -list --divergent' to resolve the issue)

Test output with amended + folded commit
========================================

Test setup
----------

  $ hg init $TESTTMP/local-amend-fold
  $ cd $TESTTMP/local-amend-fold
  $ mkcommit ROOT
  $ mkcommit A0
  $ mkcommit B0
  $ hg amend -m "B1"
  $ hg log --hidden -G
  @  changeset:   3:b7ea6d14e664
  |  tag:         tip
  |  parent:      1:471f378eab4c
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     B1
  |
  | x  changeset:   2:0dec01379d3b
  |/   user:        test
  |    date:        Thu Jan 01 00:00:00 1970 +0000
  |    summary:     B0
  |
  o  changeset:   1:471f378eab4c
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     A0
  |
  o  changeset:   0:ea207398892e
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     ROOT
  
  $ hg fold --exact -r 'desc(A0) + desc(B1)' --date "0 0" -m "C0"
  2 changesets folded
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ hg log --hidden -G
  @  changeset:   4:eb5a0daa2192
  |  tag:         tip
  |  parent:      0:ea207398892e
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     C0
  |
  | x  changeset:   3:b7ea6d14e664
  | |  parent:      1:471f378eab4c
  | |  user:        test
  | |  date:        Thu Jan 01 00:00:00 1970 +0000
  | |  summary:     B1
  | |
  | | x  changeset:   2:0dec01379d3b
  | |/   user:        test
  | |    date:        Thu Jan 01 00:00:00 1970 +0000
  | |    summary:     B0
  | |
  | x  changeset:   1:471f378eab4c
  |/   user:        test
  |    date:        Thu Jan 01 00:00:00 1970 +0000
  |    summary:     A0
  |
  o  changeset:   0:ea207398892e
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     ROOT
  
 Actual test
 -----------

  $ hg debugobshistory --hidden 471f378eab4c
  471f378eab4c (1) A0
    rewritten by test (*20*) as eb5a0daa2192 (glob)
  $ hg debugobshistory --hidden 471f378eab4c -Tjson | python -m json.tool
  [
      {
          "debugobshistory.markers": [
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "eb5a0daa2192"
                  ],
                  "debugobshistory.verb": "rewritten"
              }
          ],
          "debugobshistory.node": "471f378eab4c",
          "debugobshistory.rev": 1,
          "debugobshistory.shortdescription": "A0"
      }
  ]
  $ hg debugobshistory --hidden 0dec01379d3b
  0dec01379d3b (2) B0
    rewritten by test (*20*) as b7ea6d14e664 (glob)
  $ hg debugobshistory --hidden 0dec01379d3b -Tjson | python -m json.tool
  [
      {
          "debugobshistory.markers": [
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "b7ea6d14e664"
                  ],
                  "debugobshistory.verb": "rewritten"
              }
          ],
          "debugobshistory.node": "0dec01379d3b",
          "debugobshistory.rev": 2,
          "debugobshistory.shortdescription": "B0"
      }
  ]
  $ hg debugobshistory eb5a0daa2192
  eb5a0daa2192 (4) C0
  b7ea6d14e664 (3) B1
    rewritten by test (*20*) as eb5a0daa2192 (glob)
  0dec01379d3b (2) B0
    rewritten by test (*20*) as b7ea6d14e664 (glob)
  471f378eab4c (1) A0
    rewritten by test (*20*) as eb5a0daa2192 (glob)
  $ hg debugobshistory eb5a0daa2192 -Tjson | python -m json.tool
  [
      {
          "debugobshistory.markers": [],
          "debugobshistory.node": "eb5a0daa2192",
          "debugobshistory.rev": 4,
          "debugobshistory.shortdescription": "C0"
      },
      {
          "debugobshistory.markers": [
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "eb5a0daa2192"
                  ],
                  "debugobshistory.verb": "rewritten"
              }
          ],
          "debugobshistory.node": "b7ea6d14e664",
          "debugobshistory.rev": 3,
          "debugobshistory.shortdescription": "B1"
      },
      {
          "debugobshistory.markers": [
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "b7ea6d14e664"
                  ],
                  "debugobshistory.verb": "rewritten"
              }
          ],
          "debugobshistory.node": "0dec01379d3b",
          "debugobshistory.rev": 2,
          "debugobshistory.shortdescription": "B0"
      },
      {
          "debugobshistory.markers": [
              {
                  "debugobshistory.marker_date": [
                      *, (glob)
                      0 (glob)
                  ],
                  "debugobshistory.marker_user": "test",
                  "debugobshistory.succnodes": [
                      "eb5a0daa2192"
                  ],
                  "debugobshistory.verb": "rewritten"
              }
          ],
          "debugobshistory.node": "471f378eab4c",
          "debugobshistory.rev": 1,
          "debugobshistory.shortdescription": "A0"
      }
  ]
  $ hg update 471f378eab4c
  abort: hidden revision '471f378eab4c'!
  (use --hidden to access hidden revisions; successor: eb5a0daa2192)
  [255]
  $ hg update --hidden 'desc(A0)'
  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
  working directory parent is obsolete! (471f378eab4c)
  (use 'hg evolve' to update to its successor: eb5a0daa2192)
  $ hg update --hidden 0dec01379d3b
  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
  working directory parent is obsolete! (0dec01379d3b)
  (use 'hg evolve' to update to its successor: eb5a0daa2192)
  $ hg update 0dec01379d3b
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
  working directory parent is obsolete! (0dec01379d3b)
  (use 'hg evolve' to update to its successor: eb5a0daa2192)
  $ hg update --hidden 'desc(B0)'
  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
  working directory parent is obsolete! (0dec01379d3b)
  (use 'hg evolve' to update to its successor: eb5a0daa2192)

Test output with pushed and pulled obs markers
==============================================

Test setup
----------

  $ hg init $TESTTMP/local-remote-markers-1
  $ cd $TESTTMP/local-remote-markers-1
  $ mkcommit ROOT
  $ mkcommit A0
  $ hg log --hidden -G
  @  changeset:   1:471f378eab4c
  |  tag:         tip
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     A0
  |
  o  changeset:   0:ea207398892e
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     ROOT
  
  $ hg clone $TESTTMP/local-remote-markers-1 $TESTTMP/local-remote-markers-2
  updating to branch default
  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
  $ cd $TESTTMP/local-remote-markers-2
  $ hg log --hidden -G
  @  changeset:   1:471f378eab4c
  |  tag:         tip
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     A0
  |
  o  changeset:   0:ea207398892e
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     ROOT
  
  $ cd $TESTTMP/local-remote-markers-1
  $ hg amend -m "A1"
  $ hg amend -m "A2"
  $ hg log --hidden -G
  @  changeset:   3:7a230b46bf61
  |  tag:         tip
  |  parent:      0:ea207398892e
  |  user:        test
  |  date:        Thu Jan 01 00:00:00 1970 +0000
  |  summary:     A2
  |
  | x  changeset:   2:fdf9bde5129a
  |/   parent:      0:ea207398892e
  |    user:        test
  |    date:        Thu Jan 01 00:00:00 1970 +0000
  |    summary:     A1
  |
  | x  changeset:   1:471f378eab4c
  |/   user:        test
  |    date:        Thu Jan 01 00:00:00 1970 +0000
  |    summary:     A0
  |
  o  changeset:   0:ea207398892e
     user:        test
     date:        Thu Jan 01 00:00:00 1970 +0000
     summary:     ROOT
  
 Actual test
 -----------

  $ hg debugobshistory 7a230b46bf61
  7a230b46bf61 (3) A2
  fdf9bde5129a (2) A1
    rewritten by test (*20*) as 7a230b46bf61 (glob)
  471f378eab4c (1) A0
    rewritten by test (*20*) as fdf9bde5129a (glob)
  $ cd $TESTTMP/local-remote-markers-2
  $ hg pull
  pulling from $TESTTMP/local-remote-markers-1
  searching for changes
  adding changesets
  adding manifests
  adding file changes
  added 1 changesets with 0 changes to 1 files (+1 heads)
  2 new obsolescence markers
  (run 'hg heads' to see heads, 'hg merge' to merge)
  working directory parent is obsolete! (471f378eab4c)
  (use 'hg evolve' to update to its successor: 7a230b46bf61)
  $ hg debugobshistory 7a230b46bf61 --traceback
  7a230b46bf61 (2) A2
  fdf9bde5129a
    rewritten by test (*20*) as 7a230b46bf61 (glob)
  471f378eab4c (1) A0
    rewritten by test (*20*) as fdf9bde5129a (glob)
  $ hg debugobshistory 7a230b46bf61 --color=debug
  [evolve.short_node|7a230b46bf61] [evolve.rev|(2)] [evolve.short_description|A2]
  [evolve.short_node evolve.missing_change_ctx|fdf9bde5129a]
    [evolve.verb|rewritten] by [evolve.user|test] [evolve.date|(*20*)] as [evolve.short_node|7a230b46bf61] (glob)
  [evolve.short_node|471f378eab4c] [evolve.rev|(1)] [evolve.short_description|A0]
    [evolve.verb|rewritten] by [evolve.user|test] [evolve.date|(*20*)] as [evolve.short_node|fdf9bde5129a] (glob)