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(): 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/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/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 < [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