Patchwork D8457: [RFC] metadataonlyctx: demonstrate an error reusing manifest nodes

login
register
mail settings
Submitter phabricator
Date April 17, 2020, 3:19 p.m.
Message ID <differential-rev-PHID-DREV-ha52bm6yvzzhrnanxk2e-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/46182/
State New
Headers show

Comments

phabricator - April 17, 2020, 3:19 p.m.
mharbison72 created this revision.
Herald added subscribers: mercurial-devel, Kwan.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  Don't queue this, it's for demo purposes only.
  
  The structure of the revisions being submitted here is admittedly insane, but I
  stumbled into this trying to test for another issue.  Since I don't see anything
  obviously wrong, I'm wondering if fix/absorb/etc would have similar issues here.
  I converted the RuntimeError to a message so that the operation completes and
  doesn't rollback the transaction.

REPOSITORY
  rHG Mercurial

BRANCH
  stable

REVISION DETAIL
  https://phab.mercurial-scm.org/D8457

AFFECTED FILES
  hgext/phabricator.py
  mercurial/context.py
  tests/phabricator/phabsend-merge.json
  tests/test-phabricator.t

CHANGE DETAILS




To: mharbison72, #hg-reviewers
Cc: Kwan, mercurial-devel
phabricator - April 22, 2020, 9:02 p.m.
marmoute added a comment.


  II recommend filling up a bug with a link to this Diff.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D8457/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D8457

To: mharbison72, #hg-reviewers, marmoute
Cc: marmoute, mercurial-patches, Kwan, mercurial-devel

Patch

diff --git a/tests/test-phabricator.t b/tests/test-phabricator.t
--- a/tests/test-phabricator.t
+++ b/tests/test-phabricator.t
@@ -14,6 +14,15 @@ 
   > 
   > [phabricator]
   > debug = True
+  > 
+  > [auth]
+  > atto.schemes = http
+  > atto.prefix = seg.attotech.com:18080
+  > # When working on the extension and making phabricator interaction
+  > # changes, edit this to be a real phabricator token. When done, edit
+  > # it back. The VCR transcripts will be auto-sanitised to replace your real
+  > # token with this value.
+  > atto.phabtoken = cli-hahayouwish
   > EOF
   $ hg init repo
   $ cd repo
@@ -354,6 +363,177 @@ 
   
   $ cd ..
 
+  $ hg init merges
+  $ cd merges
+
+  $ cat >> .hg/hgrc <<EOF
+  > [phabricator]
+  > url = http://seg.attotech.com:18080
+  > callsign = HG
+  > [experimental]
+  > evolution = all
+  > EOF
+
+  $ echo "add" > file1.txt
+  $ hg ci -Aqm 'added'
+  $ echo "mod1" > file1.txt
+  $ hg ci -m 'modified 1'
+  $ echo "mod2" > file1.txt
+  $ hg ci -m 'modified 2'
+  $ echo "mod3" > file1.txt
+  $ hg ci -m 'modified 3'
+  $ hg up -q 1
+  $ echo "mod2" > file1.txt
+  $ hg ci -m 'modified A'
+  created new head
+  $ echo "mod3" > file1.txt
+  $ hg ci -m 'modified B'
+  $ hg merge --tool :local
+  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg ci -m merge
+  $ hg log -G
+  @    changeset:   6:5c6c96bea761
+  |\   tag:         tip
+  | |  parent:      5:0262409cd8f6
+  | |  parent:      3:88edda9768f5
+  | |  user:        test
+  | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | |  summary:     merge
+  | |
+  | o  changeset:   5:0262409cd8f6
+  | |  user:        test
+  | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | |  summary:     modified B
+  | |
+  | o  changeset:   4:721060daf681
+  | |  parent:      1:d549263bcb2d
+  | |  user:        test
+  | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | |  summary:     modified A
+  | |
+  o |  changeset:   3:88edda9768f5
+  | |  user:        test
+  | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | |  summary:     modified 3
+  | |
+  o |  changeset:   2:5d3959e20d1d
+  |/   user:        test
+  |    date:        Thu Jan 01 00:00:00 1970 +0000
+  |    summary:     modified 2
+  |
+  o  changeset:   1:d549263bcb2d
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     modified 1
+  |
+  o  changeset:   0:5cbade24e0fa
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     added
+  
+  $ hg phabsend -r '1' --test-vcr "$VCR/phabsend-merge.json"
+  D306 - created - d549263bcb2d: modified 1
+  new commits: ['5352a014bc24']
+  restabilizing 5d3959e20d1d as 609c9a659b5c
+  restabilizing 88edda9768f5 as d2e3186fec83
+  restabilizing 721060daf681 as 0b85f0daf594
+  restabilizing 0262409cd8f6 as 71827b7235ef
+  can't reuse the manifest: its p1 doesn't match the new ctx p1
+  p1:  df5524f618becac41a148aa8fcdfb202821314ec
+  mp1: 01f29265f827840f491cf8051058f243e6040754
+  can't reuse the manifest: its p2 doesn't match the new ctx p2
+  p2:  df5524f618becac41a148aa8fcdfb202821314ec
+  mp1: 0000000000000000000000000000000000000000
+  * old p1 = 0262409cd8f6
+  * old p2 = 88edda9768f5
+  * new p1 = 71827b7235ef
+  * new p2 = d2e3186fec83
+  restabilizing 5c6c96bea761 as e0b07a8f86bb
+  $ hg log -G --hidden
+  @    changeset:   12:e0b07a8f86bb
+  |\   tag:         tip
+  | |  parent:      11:71827b7235ef
+  | |  parent:      9:d2e3186fec83
+  | |  user:        test
+  | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | |  summary:     merge
+  | |
+  | o  changeset:   11:71827b7235ef
+  | |  user:        test
+  | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | |  summary:     modified B
+  | |
+  | o  changeset:   10:0b85f0daf594
+  | |  parent:      7:5352a014bc24
+  | |  user:        test
+  | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | |  summary:     modified A
+  | |
+  o |  changeset:   9:d2e3186fec83
+  | |  user:        test
+  | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | |  summary:     modified 3
+  | |
+  o |  changeset:   8:609c9a659b5c
+  |/   user:        test
+  |    date:        Thu Jan 01 00:00:00 1970 +0000
+  |    summary:     modified 2
+  |
+  o  changeset:   7:5352a014bc24
+  |  parent:      0:5cbade24e0fa
+  |  user:        test
+  |  date:        Thu Jan 01 00:00:00 1970 +0000
+  |  summary:     modified 1
+  |
+  | x    changeset:   6:5c6c96bea761
+  | |\   parent:      5:0262409cd8f6
+  | | |  parent:      3:88edda9768f5
+  | | |  user:        test
+  | | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | | |  obsolete:    rewritten using phabsend as 12:e0b07a8f86bb
+  | | |  summary:     merge
+  | | |
+  | | x  changeset:   5:0262409cd8f6
+  | | |  user:        test
+  | | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | | |  obsolete:    rewritten using phabsend as 11:71827b7235ef
+  | | |  summary:     modified B
+  | | |
+  | | x  changeset:   4:721060daf681
+  | | |  parent:      1:d549263bcb2d
+  | | |  user:        test
+  | | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | | |  obsolete:    rewritten using phabsend as 10:0b85f0daf594
+  | | |  summary:     modified A
+  | | |
+  | x |  changeset:   3:88edda9768f5
+  | | |  user:        test
+  | | |  date:        Thu Jan 01 00:00:00 1970 +0000
+  | | |  obsolete:    rewritten using phabsend as 9:d2e3186fec83
+  | | |  summary:     modified 3
+  | | |
+  | x |  changeset:   2:5d3959e20d1d
+  | |/   user:        test
+  | |    date:        Thu Jan 01 00:00:00 1970 +0000
+  | |    obsolete:    rewritten using phabsend as 8:609c9a659b5c
+  | |    summary:     modified 2
+  | |
+  | x  changeset:   1:d549263bcb2d
+  |/   user:        test
+  |    date:        Thu Jan 01 00:00:00 1970 +0000
+  |    obsolete:    rewritten using phabsend as 7:5352a014bc24
+  |    summary:     modified 1
+  |
+  o  changeset:   0:5cbade24e0fa
+     user:        test
+     date:        Thu Jan 01 00:00:00 1970 +0000
+     summary:     added
+  
+
+
+  $ cd ..
+
 Phabesending a new binary, a modified binary, and a removed binary
 
   >>> open('bin', 'wb').write(b'\0a') and None
diff --git a/tests/phabricator/phabsend-merge.json b/tests/phabricator/phabsend-merge.json
new file mode 100644
--- /dev/null
+++ b/tests/phabricator/phabsend-merge.json
@@ -0,0 +1,617 @@ 
+{

+    "interactions": [

+        {

+            "response": {

+                "body": {

+                    "string": "{\"result\":{\"data\":[{\"id\":1,\"type\":\"REPO\",\"phid\":\"PHID-REPO-iha5jasxopgescyxn7kg\",\"fields\":{\"name\":\"phab_test\",\"vcs\":\"hg\",\"callsign\":\"HG\",\"shortName\":\"phab_test\",\"status\":\"active\",\"isImporting\":false,\"almanacServicePHID\":null,\"refRules\":{\"fetchRules\":[],\"trackRules\":[],\"permanentRefRules\":[]},\"spacePHID\":null,\"dateCreated\":1582132454,\"dateModified\":1582132525,\"policy\":{\"view\":\"users\",\"edit\":\"admin\",\"diffusion.push\":\"users\"}},\"attachments\":{}}],\"maps\":{},\"query\":{\"queryKey\":null},\"cursor\":{\"limit\":100,\"after\":null,\"before\":null,\"order\":null}},\"error_code\":null,\"error_info\":null}"

+                }, 

+                "headers": {

+                    "date": [

+                        "Fri, 17 Apr 2020 14:50:37 GMT"

+                    ], 

+                    "x-powered-by": [

+                        "PHP/7.3.10"

+                    ], 

+                    "content-type": [

+                        "application/json"

+                    ], 

+                    "content-security-policy": [

+                        "default-src 'self' http://seg.attotech.com:18080; img-src 'self' http://seg.attotech.com:18080 data:; style-src 'self' http://seg.attotech.com:18080 'unsafe-inline'; script-src 'self' http://seg.attotech.com:18080; connect-src 'self'; frame-src 'self'; frame-ancestors 'none'; object-src 'none'; form-action 'self'; base-uri 'none'"

+                    ], 

+                    "x-frame-options": [

+                        "Deny"

+                    ], 

+                    "expires": [

+                        "Sat, 01 Jan 2000 00:00:00 GMT"

+                    ], 

+                    "content-length": [

+                        "583"

+                    ], 

+                    "referrer-policy": [

+                        "no-referrer"

+                    ], 

+                    "x-content-type-options": [

+                        "nosniff"

+                    ], 

+                    "cache-control": [

+                        "no-store"

+                    ], 

+                    "server": [

+                        "Apache/2.4.41 (Unix) OpenSSL/1.1.0l PHP/7.3.10"

+                    ]

+                }, 

+                "status": {

+                    "message": "OK", 

+                    "code": 200

+                }

+            }, 

+            "request": {

+                "body": "params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22constraints%22%3A+%7B%22callsigns%22%3A+%5B%22HG%22%5D%7D%7D&output=json&__conduit__=1", 

+                "uri": "http://seg.attotech.com:18080/api/diffusion.repository.search", 

+                "method": "POST", 

+                "headers": {

+                    "content-length": [

+                        "183"

+                    ], 

+                    "content-type": [

+                        "application/x-www-form-urlencoded"

+                    ], 

+                    "accept": [

+                        "application/mercurial-0.1"

+                    ], 

+                    "host": [

+                        "seg.attotech.com:18080"

+                    ], 

+                    "user-agent": [

+                        "mercurial/proto-1.0 (Mercurial 5.3.2+507-e76722b24fb0)"

+                    ]

+                }

+            }

+        }, 

+        {

+            "response": {

+                "body": {

+                    "string": "{\"result\":{\"diffid\":403,\"phid\":\"PHID-DIFF-w4wj34zsxqirspzco5as\",\"uri\":\"http:\\/\\/seg.attotech.com:18080\\/differential\\/diff\\/403\\/\"},\"error_code\":null,\"error_info\":null}"

+                }, 

+                "headers": {

+                    "date": [

+                        "Fri, 17 Apr 2020 14:50:38 GMT"

+                    ], 

+                    "x-powered-by": [

+                        "PHP/7.3.10"

+                    ], 

+                    "content-type": [

+                        "application/json"

+                    ], 

+                    "content-security-policy": [

+                        "default-src 'self' http://seg.attotech.com:18080; img-src 'self' http://seg.attotech.com:18080 data:; style-src 'self' http://seg.attotech.com:18080 'unsafe-inline'; script-src 'self' http://seg.attotech.com:18080; connect-src 'self'; frame-src 'self'; frame-ancestors 'none'; object-src 'none'; form-action 'self'; base-uri 'none'"

+                    ], 

+                    "x-frame-options": [

+                        "Deny"

+                    ], 

+                    "expires": [

+                        "Sat, 01 Jan 2000 00:00:00 GMT"

+                    ], 

+                    "content-length": [

+                        "168"

+                    ], 

+                    "referrer-policy": [

+                        "no-referrer"

+                    ], 

+                    "x-content-type-options": [

+                        "nosniff"

+                    ], 

+                    "cache-control": [

+                        "no-store"

+                    ], 

+                    "server": [

+                        "Apache/2.4.41 (Unix) OpenSSL/1.1.0l PHP/7.3.10"

+                    ]

+                }, 

+                "status": {

+                    "message": "OK", 

+                    "code": 200

+                }

+            }, 

+            "request": {

+                "body": "params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22bookmark%22%3A+null%2C+%22branch%22%3A+%22default%22%2C+%22changes%22%3A+%7B%22file1.txt%22%3A+%7B%22addLines%22%3A+1%2C+%22awayPaths%22%3A+%5B%5D%2C+%22commitHash%22%3A+null%2C+%22currentPath%22%3A+%22file1.txt%22%2C+%22delLines%22%3A+1%2C+%22fileType%22%3A+1%2C+%22hunks%22%3A+%5B%7B%22addLines%22%3A+1%2C+%22corpus%22%3A+%22-add%5Cn%2Bmod1%5Cn%22%2C+%22delLines%22%3A+1%2C+%22newLength%22%3A+1%2C+%22newOffset%22%3A+1%2C+%22oldLength%22%3A+1%2C+%22oldOffset%22%3A+1%7D%5D%2C+%22metadata%22%3A+%7B%7D%2C+%22newProperties%22%3A+%7B%7D%2C+%22oldPath%22%3A+%22file1.txt%22%2C+%22oldProperties%22%3A+%7B%7D%2C+%22type%22%3A+2%7D%7D%2C+%22creationMethod%22%3A+%22phabsend%22%2C+%22lintStatus%22%3A+%22none%22%2C+%22repositoryPHID%22%3A+%22PHID-REPO-iha5jasxopgescyxn7kg%22%2C+%22sourceControlBaseRevision%22%3A+%225cbade24e0fae40d67c568e86a978a2a946b9aed%22%2C+%22sourceControlPath%22%3A+%22%2F%22%2C+%22sourceControlSystem%22%3A+%22hg%22%2C+%22sourceMachine%22%3A+%22%22%2C+%22sourcePath%22%3A+%22%2F%22%2C+%22unitStatus%22%3A+%22none%22%7D&output=json&__conduit__=1", 

+                "uri": "http://seg.attotech.com:18080/api/differential.creatediff", 

+                "method": "POST", 

+                "headers": {

+                    "content-length": [

+                        "1161"

+                    ], 

+                    "content-type": [

+                        "application/x-www-form-urlencoded"

+                    ], 

+                    "accept": [

+                        "application/mercurial-0.1"

+                    ], 

+                    "host": [

+                        "seg.attotech.com:18080"

+                    ], 

+                    "user-agent": [

+                        "mercurial/proto-1.0 (Mercurial 5.3.2+507-e76722b24fb0)"

+                    ]

+                }

+            }

+        }, 

+        {

+            "response": {

+                "body": {

+                    "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"

+                }, 

+                "headers": {

+                    "date": [

+                        "Fri, 17 Apr 2020 14:50:38 GMT"

+                    ], 

+                    "x-powered-by": [

+                        "PHP/7.3.10"

+                    ], 

+                    "content-type": [

+                        "application/json"

+                    ], 

+                    "content-security-policy": [

+                        "default-src 'self' http://seg.attotech.com:18080; img-src 'self' http://seg.attotech.com:18080 data:; style-src 'self' http://seg.attotech.com:18080 'unsafe-inline'; script-src 'self' http://seg.attotech.com:18080; connect-src 'self'; frame-src 'self'; frame-ancestors 'none'; object-src 'none'; form-action 'self'; base-uri 'none'"

+                    ], 

+                    "x-frame-options": [

+                        "Deny"

+                    ], 

+                    "expires": [

+                        "Sat, 01 Jan 2000 00:00:00 GMT"

+                    ], 

+                    "content-length": [

+                        "51"

+                    ], 

+                    "referrer-policy": [

+                        "no-referrer"

+                    ], 

+                    "x-content-type-options": [

+                        "nosniff"

+                    ], 

+                    "cache-control": [

+                        "no-store"

+                    ], 

+                    "server": [

+                        "Apache/2.4.41 (Unix) OpenSSL/1.1.0l PHP/7.3.10"

+                    ]

+                }, 

+                "status": {

+                    "message": "OK", 

+                    "code": 200

+                }

+            }, 

+            "request": {

+                "body": "params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22data%22%3A+%22%7B%5C%22branch%5C%22%3A+%5C%22default%5C%22%2C+%5C%22date%5C%22%3A+%5C%220+0%5C%22%2C+%5C%22node%5C%22%3A+%5C%22d549263bcb2db54042adf048047b368f1ed246df%5C%22%2C+%5C%22parent%5C%22%3A+%5C%225cbade24e0fae40d67c568e86a978a2a946b9aed%5C%22%2C+%5C%22user%5C%22%3A+%5C%22test%5C%22%7D%22%2C+%22diff_id%22%3A+403%2C+%22name%22%3A+%22hg%3Ameta%22%7D&output=json&__conduit__=1", 

+                "uri": "http://seg.attotech.com:18080/api/differential.setdiffproperty", 

+                "method": "POST", 

+                "headers": {

+                    "content-length": [

+                        "480"

+                    ], 

+                    "content-type": [

+                        "application/x-www-form-urlencoded"

+                    ], 

+                    "accept": [

+                        "application/mercurial-0.1"

+                    ], 

+                    "host": [

+                        "seg.attotech.com:18080"

+                    ], 

+                    "user-agent": [

+                        "mercurial/proto-1.0 (Mercurial 5.3.2+507-e76722b24fb0)"

+                    ]

+                }

+            }

+        }, 

+        {

+            "response": {

+                "body": {

+                    "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"

+                }, 

+                "headers": {

+                    "date": [

+                        "Fri, 17 Apr 2020 14:50:38 GMT"

+                    ], 

+                    "x-powered-by": [

+                        "PHP/7.3.10"

+                    ], 

+                    "content-type": [

+                        "application/json"

+                    ], 

+                    "content-security-policy": [

+                        "default-src 'self' http://seg.attotech.com:18080; img-src 'self' http://seg.attotech.com:18080 data:; style-src 'self' http://seg.attotech.com:18080 'unsafe-inline'; script-src 'self' http://seg.attotech.com:18080; connect-src 'self'; frame-src 'self'; frame-ancestors 'none'; object-src 'none'; form-action 'self'; base-uri 'none'"

+                    ], 

+                    "x-frame-options": [

+                        "Deny"

+                    ], 

+                    "expires": [

+                        "Sat, 01 Jan 2000 00:00:00 GMT"

+                    ], 

+                    "content-length": [

+                        "51"

+                    ], 

+                    "referrer-policy": [

+                        "no-referrer"

+                    ], 

+                    "x-content-type-options": [

+                        "nosniff"

+                    ], 

+                    "cache-control": [

+                        "no-store"

+                    ], 

+                    "server": [

+                        "Apache/2.4.41 (Unix) OpenSSL/1.1.0l PHP/7.3.10"

+                    ]

+                }, 

+                "status": {

+                    "message": "OK", 

+                    "code": 200

+                }

+            }, 

+            "request": {

+                "body": "params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22data%22%3A+%22%7B%5C%22d549263bcb2db54042adf048047b368f1ed246df%5C%22%3A+%7B%5C%22author%5C%22%3A+%5C%22test%5C%22%2C+%5C%22authorEmail%5C%22%3A+%5C%22test%5C%22%2C+%5C%22branch%5C%22%3A+%5C%22default%5C%22%2C+%5C%22commit%5C%22%3A+%5C%22d549263bcb2db54042adf048047b368f1ed246df%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%225cbade24e0fae40d67c568e86a978a2a946b9aed%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%7D%22%2C+%22diff_id%22%3A+403%2C+%22name%22%3A+%22local%3Acommits%22%7D&output=json&__conduit__=1", 

+                "uri": "http://seg.attotech.com:18080/api/differential.setdiffproperty", 

+                "method": "POST", 

+                "headers": {

+                    "content-length": [

+                        "592"

+                    ], 

+                    "content-type": [

+                        "application/x-www-form-urlencoded"

+                    ], 

+                    "accept": [

+                        "application/mercurial-0.1"

+                    ], 

+                    "host": [

+                        "seg.attotech.com:18080"

+                    ], 

+                    "user-agent": [

+                        "mercurial/proto-1.0 (Mercurial 5.3.2+507-e76722b24fb0)"

+                    ]

+                }

+            }

+        }, 

+        {

+            "response": {

+                "body": {

+                    "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"modified 1\"},\"revisionIDFieldInfo\":{\"value\":null,\"validDomain\":\"http:\\/\\/seg.attotech.com:18080\"},\"transactions\":[{\"type\":\"title\",\"value\":\"modified 1\"}]},\"error_code\":null,\"error_info\":null}"

+                }, 

+                "headers": {

+                    "date": [

+                        "Fri, 17 Apr 2020 14:50:38 GMT"

+                    ], 

+                    "x-powered-by": [

+                        "PHP/7.3.10"

+                    ], 

+                    "content-type": [

+                        "application/json"

+                    ], 

+                    "content-security-policy": [

+                        "default-src 'self' http://seg.attotech.com:18080; img-src 'self' http://seg.attotech.com:18080 data:; style-src 'self' http://seg.attotech.com:18080 'unsafe-inline'; script-src 'self' http://seg.attotech.com:18080; connect-src 'self'; frame-src 'self'; frame-ancestors 'none'; object-src 'none'; form-action 'self'; base-uri 'none'"

+                    ], 

+                    "x-frame-options": [

+                        "Deny"

+                    ], 

+                    "expires": [

+                        "Sat, 01 Jan 2000 00:00:00 GMT"

+                    ], 

+                    "content-length": [

+                        "232"

+                    ], 

+                    "referrer-policy": [

+                        "no-referrer"

+                    ], 

+                    "x-content-type-options": [

+                        "nosniff"

+                    ], 

+                    "cache-control": [

+                        "no-store"

+                    ], 

+                    "server": [

+                        "Apache/2.4.41 (Unix) OpenSSL/1.1.0l PHP/7.3.10"

+                    ]

+                }, 

+                "status": {

+                    "message": "OK", 

+                    "code": 200

+                }

+            }, 

+            "request": {

+                "body": "params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22modified+1%22%7D&output=json&__conduit__=1", 

+                "uri": "http://seg.attotech.com:18080/api/differential.parsecommitmessage", 

+                "method": "POST", 

+                "headers": {

+                    "content-length": [

+                        "155"

+                    ], 

+                    "content-type": [

+                        "application/x-www-form-urlencoded"

+                    ], 

+                    "accept": [

+                        "application/mercurial-0.1"

+                    ], 

+                    "host": [

+                        "seg.attotech.com:18080"

+                    ], 

+                    "user-agent": [

+                        "mercurial/proto-1.0 (Mercurial 5.3.2+507-e76722b24fb0)"

+                    ]

+                }

+            }

+        }, 

+        {

+            "response": {

+                "body": {

+                    "string": "{\"result\":{\"object\":{\"id\":306,\"phid\":\"PHID-DREV-wg2jrvh2uwriaqogg6kx\"},\"transactions\":[{\"phid\":\"PHID-XACT-DREV-7pzcumxterpx6gl\"},{\"phid\":\"PHID-XACT-DREV-w6wmzih2n3ixowz\"},{\"phid\":\"PHID-XACT-DREV-am2gspbrdsfz7wi\"}]},\"error_code\":null,\"error_info\":null}"

+                }, 

+                "headers": {

+                    "date": [

+                        "Fri, 17 Apr 2020 14:50:39 GMT"

+                    ], 

+                    "x-powered-by": [

+                        "PHP/7.3.10"

+                    ], 

+                    "content-type": [

+                        "application/json"

+                    ], 

+                    "content-security-policy": [

+                        "default-src 'self' http://seg.attotech.com:18080; img-src 'self' http://seg.attotech.com:18080 data:; style-src 'self' http://seg.attotech.com:18080 'unsafe-inline'; script-src 'self' http://seg.attotech.com:18080; connect-src 'self'; frame-src 'self'; frame-ancestors 'none'; object-src 'none'; form-action 'self'; base-uri 'none'"

+                    ], 

+                    "x-frame-options": [

+                        "Deny"

+                    ], 

+                    "expires": [

+                        "Sat, 01 Jan 2000 00:00:00 GMT"

+                    ], 

+                    "content-length": [

+                        "251"

+                    ], 

+                    "referrer-policy": [

+                        "no-referrer"

+                    ], 

+                    "x-content-type-options": [

+                        "nosniff"

+                    ], 

+                    "cache-control": [

+                        "no-store"

+                    ], 

+                    "server": [

+                        "Apache/2.4.41 (Unix) OpenSSL/1.1.0l PHP/7.3.10"

+                    ]

+                }, 

+                "status": {

+                    "message": "OK", 

+                    "code": 200

+                }

+            }, 

+            "request": {

+                "body": "params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22transactions%22%3A+%5B%7B%22type%22%3A+%22update%22%2C+%22value%22%3A+%22PHID-DIFF-w4wj34zsxqirspzco5as%22%7D%2C+%7B%22type%22%3A+%22title%22%2C+%22value%22%3A+%22modified+1%22%7D%5D%7D&output=json&__conduit__=1", 

+                "uri": "http://seg.attotech.com:18080/api/differential.revision.edit", 

+                "method": "POST", 

+                "headers": {

+                    "content-length": [

+                        "308"

+                    ], 

+                    "content-type": [

+                        "application/x-www-form-urlencoded"

+                    ], 

+                    "accept": [

+                        "application/mercurial-0.1"

+                    ], 

+                    "host": [

+                        "seg.attotech.com:18080"

+                    ], 

+                    "user-agent": [

+                        "mercurial/proto-1.0 (Mercurial 5.3.2+507-e76722b24fb0)"

+                    ]

+                }

+            }

+        }, 

+        {

+            "response": {

+                "body": {

+                    "string": "{\"result\":[{\"id\":\"306\",\"phid\":\"PHID-DREV-wg2jrvh2uwriaqogg6kx\",\"title\":\"modified 1\",\"uri\":\"http:\\/\\/seg.attotech.com:18080\\/D306\",\"dateCreated\":\"1587135039\",\"dateModified\":\"1587135039\",\"authorPHID\":\"PHID-USER-cdrkvn4szwoq3zqoc5qb\",\"status\":\"0\",\"statusName\":\"Needs Review\",\"properties\":{\"draft.broadcast\":true,\"lines.added\":1,\"lines.removed\":1},\"branch\":\"default\",\"summary\":\"\",\"testPlan\":\"\",\"lineCount\":\"2\",\"activeDiffPHID\":\"PHID-DIFF-w4wj34zsxqirspzco5as\",\"diffs\":[\"403\"],\"commits\":[],\"reviewers\":[],\"ccs\":[],\"hashes\":[[\"hgcm\",\"\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\\u0000\"]],\"auxiliary\":{\"phabricator:projects\":[],\"phabricator:depends-on\":[]},\"repositoryPHID\":\"PHID-REPO-iha5jasxopgescyxn7kg\",\"sourcePath\":\"\\/\"}],\"error_code\":null,\"error_info\":null}"

+                }, 

+                "headers": {

+                    "date": [

+                        "Fri, 17 Apr 2020 14:50:39 GMT"

+                    ], 

+                    "x-powered-by": [

+                        "PHP/7.3.10"

+                    ], 

+                    "content-type": [

+                        "application/json"

+                    ], 

+                    "content-security-policy": [

+                        "default-src 'self' http://seg.attotech.com:18080; img-src 'self' http://seg.attotech.com:18080 data:; style-src 'self' http://seg.attotech.com:18080 'unsafe-inline'; script-src 'self' http://seg.attotech.com:18080; connect-src 'self'; frame-src 'self'; frame-ancestors 'none'; object-src 'none'; form-action 'self'; base-uri 'none'"

+                    ], 

+                    "x-frame-options": [

+                        "Deny"

+                    ], 

+                    "expires": [

+                        "Sat, 01 Jan 2000 00:00:00 GMT"

+                    ], 

+                    "content-length": [

+                        "946"

+                    ], 

+                    "referrer-policy": [

+                        "no-referrer"

+                    ], 

+                    "x-content-type-options": [

+                        "nosniff"

+                    ], 

+                    "cache-control": [

+                        "no-store"

+                    ], 

+                    "server": [

+                        "Apache/2.4.41 (Unix) OpenSSL/1.1.0l PHP/7.3.10"

+                    ]

+                }, 

+                "status": {

+                    "message": "OK", 

+                    "code": 200

+                }

+            }, 

+            "request": {

+                "body": "params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22ids%22%3A+%5B306%5D%7D&output=json&__conduit__=1", 

+                "uri": "http://seg.attotech.com:18080/api/differential.query", 

+                "method": "POST", 

+                "headers": {

+                    "content-length": [

+                        "145"

+                    ], 

+                    "content-type": [

+                        "application/x-www-form-urlencoded"

+                    ], 

+                    "accept": [

+                        "application/mercurial-0.1"

+                    ], 

+                    "host": [

+                        "seg.attotech.com:18080"

+                    ], 

+                    "user-agent": [

+                        "mercurial/proto-1.0 (Mercurial 5.3.2+507-e76722b24fb0)"

+                    ]

+                }

+            }

+        }, 

+        {

+            "response": {

+                "body": {

+                    "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"

+                }, 

+                "headers": {

+                    "date": [

+                        "Fri, 17 Apr 2020 14:50:39 GMT"

+                    ], 

+                    "x-powered-by": [

+                        "PHP/7.3.10"

+                    ], 

+                    "content-type": [

+                        "application/json"

+                    ], 

+                    "content-security-policy": [

+                        "default-src 'self' http://seg.attotech.com:18080; img-src 'self' http://seg.attotech.com:18080 data:; style-src 'self' http://seg.attotech.com:18080 'unsafe-inline'; script-src 'self' http://seg.attotech.com:18080; connect-src 'self'; frame-src 'self'; frame-ancestors 'none'; object-src 'none'; form-action 'self'; base-uri 'none'"

+                    ], 

+                    "x-frame-options": [

+                        "Deny"

+                    ], 

+                    "expires": [

+                        "Sat, 01 Jan 2000 00:00:00 GMT"

+                    ], 

+                    "content-length": [

+                        "51"

+                    ], 

+                    "referrer-policy": [

+                        "no-referrer"

+                    ], 

+                    "x-content-type-options": [

+                        "nosniff"

+                    ], 

+                    "cache-control": [

+                        "no-store"

+                    ], 

+                    "server": [

+                        "Apache/2.4.41 (Unix) OpenSSL/1.1.0l PHP/7.3.10"

+                    ]

+                }, 

+                "status": {

+                    "message": "OK", 

+                    "code": 200

+                }

+            }, 

+            "request": {

+                "body": "params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22data%22%3A+%22%7B%5C%22branch%5C%22%3A+%5C%22default%5C%22%2C+%5C%22date%5C%22%3A+%5C%220+0%5C%22%2C+%5C%22node%5C%22%3A+%5C%225352a014bc249296b1a550f6e7351954c67c6000%5C%22%2C+%5C%22parent%5C%22%3A+%5C%225cbade24e0fae40d67c568e86a978a2a946b9aed%5C%22%2C+%5C%22user%5C%22%3A+%5C%22test%5C%22%7D%22%2C+%22diff_id%22%3A+403%2C+%22name%22%3A+%22hg%3Ameta%22%7D&output=json&__conduit__=1", 

+                "uri": "http://seg.attotech.com:18080/api/differential.setdiffproperty", 

+                "method": "POST", 

+                "headers": {

+                    "content-length": [

+                        "480"

+                    ], 

+                    "content-type": [

+                        "application/x-www-form-urlencoded"

+                    ], 

+                    "accept": [

+                        "application/mercurial-0.1"

+                    ], 

+                    "host": [

+                        "seg.attotech.com:18080"

+                    ], 

+                    "user-agent": [

+                        "mercurial/proto-1.0 (Mercurial 5.3.2+507-e76722b24fb0)"

+                    ]

+                }

+            }

+        }, 

+        {

+            "response": {

+                "body": {

+                    "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"

+                }, 

+                "headers": {

+                    "date": [

+                        "Fri, 17 Apr 2020 14:50:39 GMT"

+                    ], 

+                    "x-powered-by": [

+                        "PHP/7.3.10"

+                    ], 

+                    "content-type": [

+                        "application/json"

+                    ], 

+                    "content-security-policy": [

+                        "default-src 'self' http://seg.attotech.com:18080; img-src 'self' http://seg.attotech.com:18080 data:; style-src 'self' http://seg.attotech.com:18080 'unsafe-inline'; script-src 'self' http://seg.attotech.com:18080; connect-src 'self'; frame-src 'self'; frame-ancestors 'none'; object-src 'none'; form-action 'self'; base-uri 'none'"

+                    ], 

+                    "x-frame-options": [

+                        "Deny"

+                    ], 

+                    "expires": [

+                        "Sat, 01 Jan 2000 00:00:00 GMT"

+                    ], 

+                    "content-length": [

+                        "51"

+                    ], 

+                    "referrer-policy": [

+                        "no-referrer"

+                    ], 

+                    "x-content-type-options": [

+                        "nosniff"

+                    ], 

+                    "cache-control": [

+                        "no-store"

+                    ], 

+                    "server": [

+                        "Apache/2.4.41 (Unix) OpenSSL/1.1.0l PHP/7.3.10"

+                    ]

+                }, 

+                "status": {

+                    "message": "OK", 

+                    "code": 200

+                }

+            }, 

+            "request": {

+                "body": "params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22data%22%3A+%22%7B%5C%225352a014bc249296b1a550f6e7351954c67c6000%5C%22%3A+%7B%5C%22author%5C%22%3A+%5C%22test%5C%22%2C+%5C%22authorEmail%5C%22%3A+%5C%22test%5C%22%2C+%5C%22branch%5C%22%3A+%5C%22default%5C%22%2C+%5C%22commit%5C%22%3A+%5C%225352a014bc249296b1a550f6e7351954c67c6000%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%225cbade24e0fae40d67c568e86a978a2a946b9aed%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%7D%22%2C+%22diff_id%22%3A+403%2C+%22name%22%3A+%22local%3Acommits%22%7D&output=json&__conduit__=1", 

+                "uri": "http://seg.attotech.com:18080/api/differential.setdiffproperty", 

+                "method": "POST", 

+                "headers": {

+                    "content-length": [

+                        "592"

+                    ], 

+                    "content-type": [

+                        "application/x-www-form-urlencoded"

+                    ], 

+                    "accept": [

+                        "application/mercurial-0.1"

+                    ], 

+                    "host": [

+                        "seg.attotech.com:18080"

+                    ], 

+                    "user-agent": [

+                        "mercurial/proto-1.0 (Mercurial 5.3.2+507-e76722b24fb0)"

+                    ]

+                }

+            }

+        }

+    ], 

+    "version": 1

+}
\ No newline at end of file
diff --git a/mercurial/context.py b/mercurial/context.py
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -2961,14 +2961,20 @@ 
         # manifests of our commit parents
         mp1, mp2 = self.manifestctx().parents
         if p1 != nullid and p1.manifestnode() != mp1:
-            raise RuntimeError(
-                r"can't reuse the manifest: its p1 "
-                r"doesn't match the new ctx p1"
+            repo.ui.warn(
+                b"can't reuse the manifest: its p1 "
+                b"doesn't match the new ctx p1\n"
+            )
+            repo.ui.warn(
+                b"p1:  %s\nmp1: %s\n" % (hex(p1.manifestnode()), hex(mp1))
             )
         if p2 != nullid and p2.manifestnode() != mp2:
-            raise RuntimeError(
-                r"can't reuse the manifest: "
-                r"its p2 doesn't match the new ctx p2"
+            repo.ui.warn(
+                b"can't reuse the manifest: "
+                b"its p2 doesn't match the new ctx p2\n"
+            )
+            repo.ui.warn(
+                b"p2:  %s\nmp1: %s\n" % (hex(p2.manifestnode()), hex(mp2))
             )
 
         self._files = originalctx.files()
diff --git a/hgext/phabricator.py b/hgext/phabricator.py
--- a/hgext/phabricator.py
+++ b/hgext/phabricator.py
@@ -1508,6 +1508,21 @@ 
                     )
 
                     newnode = new.commit()
+                    if len(old.parents()) == 2:
+                        ui.warn(
+                            'old p1 = %s\nold p2 = %s\n'
+                            % (short(old.p1().node()), short(old.p2().node()))
+                        )
+
+                    newctx = repo[newnode]
+                    if len(newctx.parents()) == 2:
+                        ui.warn(
+                            'new p1 = %s\nnew p2 = %s\n'
+                            % (
+                                short(newctx.p1().node()),
+                                short(newctx.p2().node()),
+                            )
+                        )
 
                     mapping[old.node()] = [newnode]
 
@@ -1582,6 +1597,18 @@ 
 
                 newnode = new.commit()
 
+                if len(old.parents()) == 2:
+                    ui.warn(
+                        '* old p1 = %s\n* old p2 = %s\n'
+                        % (short(old.p1().node()), short(old.p2().node()))
+                    )
+                newctx = repo[newnode]
+                if len(newctx.parents()) == 2:
+                    ui.warn(
+                        '* new p1 = %s\n* new p2 = %s\n'
+                        % (short(newctx.p1().node()), short(newctx.p2().node()))
+                    )
+
                 # Don't obsolete unselected descendants of nodes that have not
                 # been changed in this transaction- that results in an error.
                 if newnode != old.node():