##// END OF EJS Templates
phabricator: add an option to fold several commits into one review (issue6244)...
Matt Harbison -
r45211:3dc6a707 default
parent child Browse files
Show More
This diff has been collapsed as it changes many lines, (889 lines changed) Show them Hide them
@@ -0,0 +1,889
1 {
2 "interactions": [
3 {
4 "request": {
5 "headers": {
6 "content-length": [
7 "170"
8 ],
9 "accept": [
10 "application/mercurial-0.1"
11 ],
12 "content-type": [
13 "application/x-www-form-urlencoded"
14 ],
15 "host": [
16 "phab.mercurial-scm.org"
17 ],
18 "user-agent": [
19 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
20 ]
21 },
22 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22revisionIDs%22%3A+%5B8387%2C+8387%2C+8387%5D%7D&output=json",
23 "uri": "https://phab.mercurial-scm.org//api/differential.querydiffs",
24 "method": "POST"
25 },
26 "response": {
27 "headers": {
28 "x-xss-protection": [
29 "1; mode=block"
30 ],
31 "strict-transport-security": [
32 "max-age=0; includeSubdomains; preload"
33 ],
34 "transfer-encoding": [
35 "chunked"
36 ],
37 "x-frame-options": [
38 "Deny"
39 ],
40 "expires": [
41 "Sat, 01 Jan 2000 00:00:00 GMT"
42 ],
43 "content-type": [
44 "application/json"
45 ],
46 "referrer-policy": [
47 "no-referrer"
48 ],
49 "server": [
50 "Apache/2.4.10 (Debian)"
51 ],
52 "cache-control": [
53 "no-store"
54 ],
55 "x-content-type-options": [
56 "nosniff"
57 ],
58 "date": [
59 "Wed, 08 Apr 2020 21:13:13 GMT"
60 ]
61 },
62 "body": {
63 "string": "{\"result\":{\"21008\":{\"id\":\"21008\",\"revisionID\":\"8387\",\"dateCreated\":\"1586380389\",\"dateModified\":\"1586380391\",\"sourceControlBaseRevision\":\"98d480e0d494906d9758c44c622951b429afd862\",\"sourceControlPath\":\"\\/\",\"sourceControlSystem\":\"hg\",\"branch\":\"default\",\"bookmark\":null,\"creationMethod\":\"phabsend\",\"description\":null,\"unitStatus\":\"0\",\"lintStatus\":\"0\",\"changes\":[{\"id\":\"56827\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"yXvxVg6uibwd\"},\"oldPath\":null,\"currentPath\":\"file2.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":{\"unix:filemode\":\"100644\"},\"type\":\"1\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"0\",\"hunks\":[{\"oldOffset\":\"0\",\"newOffset\":\"1\",\"oldLength\":\"0\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"+modified\\n\"}]},{\"id\":\"56826\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"cAKuVP31KNrx\"},\"oldPath\":\"file.txt\",\"currentPath\":\"file.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":[],\"type\":\"2\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"1\",\"hunks\":[{\"oldOffset\":\"1\",\"newOffset\":\"1\",\"oldLength\":\"1\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"-added\\n+mod3\\n\"}]}],\"properties\":{\"hg:meta\":{\"branch\":\"default\",\"date\":\"0 0\",\"node\":\"e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac\",\"parent\":\"98d480e0d494906d9758c44c622951b429afd862\",\"user\":\"test\"},\"local:commits\":{\"0124e5474c880e4fb40c8326ad2b75ae3e57ee5f\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"0124e5474c880e4fb40c8326ad2b75ae3e57ee5f\",\"parents\":[\"602c4e7382436988e46c0d56fb3883968302b3f6\"],\"time\":0},\"602c4e7382436988e46c0d56fb3883968302b3f6\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"602c4e7382436988e46c0d56fb3883968302b3f6\",\"parents\":[\"98d480e0d494906d9758c44c622951b429afd862\"],\"time\":0},\"e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac\",\"parents\":[\"0124e5474c880e4fb40c8326ad2b75ae3e57ee5f\"],\"time\":0}}},\"authorName\":\"test\",\"authorEmail\":\"test\"},\"21007\":{\"id\":\"21007\",\"revisionID\":\"8387\",\"dateCreated\":\"1586380382\",\"dateModified\":\"1586380385\",\"sourceControlBaseRevision\":\"98d480e0d494906d9758c44c622951b429afd862\",\"sourceControlPath\":\"\\/\",\"sourceControlSystem\":\"hg\",\"branch\":\"default\",\"bookmark\":null,\"creationMethod\":\"phabsend\",\"description\":null,\"unitStatus\":\"0\",\"lintStatus\":\"0\",\"changes\":[{\"id\":\"56825\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"yXvxVg6uibwd\"},\"oldPath\":null,\"currentPath\":\"file2.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":{\"unix:filemode\":\"100644\"},\"type\":\"1\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"0\",\"hunks\":[{\"oldOffset\":\"0\",\"newOffset\":\"1\",\"oldLength\":\"0\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"+modified\\n\"}]},{\"id\":\"56824\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"cAKuVP31KNrx\"},\"oldPath\":\"file.txt\",\"currentPath\":\"file.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":[],\"type\":\"2\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"1\",\"hunks\":[{\"oldOffset\":\"1\",\"newOffset\":\"1\",\"oldLength\":\"1\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"-added\\n+mod3\\n\"}]}],\"properties\":{\"hg:meta\":{\"branch\":\"default\",\"date\":\"0 0\",\"node\":\"e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac\",\"parent\":\"98d480e0d494906d9758c44c622951b429afd862\",\"user\":\"test\"},\"local:commits\":{\"0124e5474c880e4fb40c8326ad2b75ae3e57ee5f\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"0124e5474c880e4fb40c8326ad2b75ae3e57ee5f\",\"parents\":[\"602c4e7382436988e46c0d56fb3883968302b3f6\"],\"time\":0},\"602c4e7382436988e46c0d56fb3883968302b3f6\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"602c4e7382436988e46c0d56fb3883968302b3f6\",\"parents\":[\"98d480e0d494906d9758c44c622951b429afd862\"],\"time\":0},\"e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac\",\"parents\":[\"0124e5474c880e4fb40c8326ad2b75ae3e57ee5f\"],\"time\":0}}},\"authorName\":\"test\",\"authorEmail\":\"test\"},\"21006\":{\"id\":\"21006\",\"revisionID\":\"8387\",\"dateCreated\":\"1586380375\",\"dateModified\":\"1586380377\",\"sourceControlBaseRevision\":\"98d480e0d494906d9758c44c622951b429afd862\",\"sourceControlPath\":\"\\/\",\"sourceControlSystem\":\"hg\",\"branch\":\"default\",\"bookmark\":null,\"creationMethod\":\"phabsend\",\"description\":null,\"unitStatus\":\"0\",\"lintStatus\":\"0\",\"changes\":[{\"id\":\"56823\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"cAKuVP31KNrx\"},\"oldPath\":\"file.txt\",\"currentPath\":\"file.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":[],\"type\":\"2\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"1\",\"hunks\":[{\"oldOffset\":\"1\",\"newOffset\":\"1\",\"oldLength\":\"1\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"-added\\n+mod3\\n\"}]}],\"properties\":{\"hg:meta\":{\"branch\":\"default\",\"date\":\"0 0\",\"node\":\"921f8265efbd92e92bfa5d7a0e047908de9844a5\",\"parent\":\"98d480e0d494906d9758c44c622951b429afd862\",\"user\":\"test\"},\"local:commits\":{\"602c4e7382436988e46c0d56fb3883968302b3f6\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"602c4e7382436988e46c0d56fb3883968302b3f6\",\"parents\":[\"98d480e0d494906d9758c44c622951b429afd862\"],\"time\":0},\"832553266fe8c3330d968e6987df4ae793483b2b\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"832553266fe8c3330d968e6987df4ae793483b2b\",\"parents\":[\"602c4e7382436988e46c0d56fb3883968302b3f6\"],\"time\":0},\"921f8265efbd92e92bfa5d7a0e047908de9844a5\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"921f8265efbd92e92bfa5d7a0e047908de9844a5\",\"parents\":[\"832553266fe8c3330d968e6987df4ae793483b2b\"],\"time\":0}}},\"authorName\":\"test\",\"authorEmail\":\"test\"}},\"error_code\":null,\"error_info\":null}"
64 },
65 "status": {
66 "code": 200,
67 "message": "OK"
68 }
69 }
70 },
71 {
72 "request": {
73 "headers": {
74 "content-length": [
75 "183"
76 ],
77 "accept": [
78 "application/mercurial-0.1"
79 ],
80 "content-type": [
81 "application/x-www-form-urlencoded"
82 ],
83 "host": [
84 "phab.mercurial-scm.org"
85 ],
86 "user-agent": [
87 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
88 ]
89 },
90 "body": "__conduit__=1&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",
91 "uri": "https://phab.mercurial-scm.org//api/diffusion.repository.search",
92 "method": "POST"
93 },
94 "response": {
95 "headers": {
96 "x-xss-protection": [
97 "1; mode=block"
98 ],
99 "strict-transport-security": [
100 "max-age=0; includeSubdomains; preload"
101 ],
102 "transfer-encoding": [
103 "chunked"
104 ],
105 "x-frame-options": [
106 "Deny"
107 ],
108 "expires": [
109 "Sat, 01 Jan 2000 00:00:00 GMT"
110 ],
111 "content-type": [
112 "application/json"
113 ],
114 "referrer-policy": [
115 "no-referrer"
116 ],
117 "server": [
118 "Apache/2.4.10 (Debian)"
119 ],
120 "cache-control": [
121 "no-store"
122 ],
123 "x-content-type-options": [
124 "nosniff"
125 ],
126 "date": [
127 "Wed, 08 Apr 2020 21:13:14 GMT"
128 ]
129 },
130 "body": {
131 "string": "{\"result\":{\"data\":[{\"id\":2,\"type\":\"REPO\",\"phid\":\"PHID-REPO-bvunnehri4u2isyr7bc3\",\"fields\":{\"name\":\"Mercurial\",\"vcs\":\"hg\",\"callsign\":\"HG\",\"shortName\":null,\"status\":\"active\",\"isImporting\":false,\"almanacServicePHID\":null,\"refRules\":{\"fetchRules\":[],\"trackRules\":[],\"permanentRefRules\":[]},\"spacePHID\":null,\"dateCreated\":1498761653,\"dateModified\":1500403184,\"policy\":{\"view\":\"public\",\"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}"
132 },
133 "status": {
134 "code": 200,
135 "message": "OK"
136 }
137 }
138 },
139 {
140 "request": {
141 "headers": {
142 "content-length": [
143 "1739"
144 ],
145 "accept": [
146 "application/mercurial-0.1"
147 ],
148 "content-type": [
149 "application/x-www-form-urlencoded"
150 ],
151 "host": [
152 "phab.mercurial-scm.org"
153 ],
154 "user-agent": [
155 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
156 ]
157 },
158 "body": "__conduit__=1&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%22file.txt%22%3A+%7B%22addLines%22%3A+1%2C+%22awayPaths%22%3A+%5B%5D%2C+%22commitHash%22%3A+null%2C+%22currentPath%22%3A+%22file.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-added%5Cn%2Bmod3%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+%22file.txt%22%2C+%22oldProperties%22%3A+%7B%7D%2C+%22type%22%3A+2%7D%2C+%22file2.txt%22%3A+%7B%22addLines%22%3A+1%2C+%22awayPaths%22%3A+%5B%5D%2C+%22commitHash%22%3A+null%2C+%22currentPath%22%3A+%22file2.txt%22%2C+%22delLines%22%3A+0%2C+%22fileType%22%3A+1%2C+%22hunks%22%3A+%5B%7B%22addLines%22%3A+1%2C+%22corpus%22%3A+%22%2Banother+mod%5Cn%22%2C+%22delLines%22%3A+0%2C+%22newLength%22%3A+1%2C+%22newOffset%22%3A+1%2C+%22oldLength%22%3A+0%2C+%22oldOffset%22%3A+0%7D%5D%2C+%22metadata%22%3A+%7B%7D%2C+%22newProperties%22%3A+%7B%22unix%3Afilemode%22%3A+%22100644%22%7D%2C+%22oldPath%22%3A+null%2C+%22oldProperties%22%3A+%7B%7D%2C+%22type%22%3A+1%7D%7D%2C+%22creationMethod%22%3A+%22phabsend%22%2C+%22lintStatus%22%3A+%22none%22%2C+%22repositoryPHID%22%3A+%22PHID-REPO-bvunnehri4u2isyr7bc3%22%2C+%22sourceControlBaseRevision%22%3A+%2298d480e0d494906d9758c44c622951b429afd862%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",
159 "uri": "https://phab.mercurial-scm.org//api/differential.creatediff",
160 "method": "POST"
161 },
162 "response": {
163 "headers": {
164 "x-xss-protection": [
165 "1; mode=block"
166 ],
167 "strict-transport-security": [
168 "max-age=0; includeSubdomains; preload"
169 ],
170 "transfer-encoding": [
171 "chunked"
172 ],
173 "x-frame-options": [
174 "Deny"
175 ],
176 "expires": [
177 "Sat, 01 Jan 2000 00:00:00 GMT"
178 ],
179 "content-type": [
180 "application/json"
181 ],
182 "referrer-policy": [
183 "no-referrer"
184 ],
185 "server": [
186 "Apache/2.4.10 (Debian)"
187 ],
188 "cache-control": [
189 "no-store"
190 ],
191 "x-content-type-options": [
192 "nosniff"
193 ],
194 "date": [
195 "Wed, 08 Apr 2020 21:13:14 GMT"
196 ]
197 },
198 "body": {
199 "string": "{\"result\":{\"diffid\":21009,\"phid\":\"PHID-DIFF-kvumllarf5ym6ewayp2l\",\"uri\":\"https:\\/\\/phab.mercurial-scm.org\\/differential\\/diff\\/21009\\/\"},\"error_code\":null,\"error_info\":null}"
200 },
201 "status": {
202 "code": 200,
203 "message": "OK"
204 }
205 }
206 },
207 {
208 "request": {
209 "headers": {
210 "content-length": [
211 "482"
212 ],
213 "accept": [
214 "application/mercurial-0.1"
215 ],
216 "content-type": [
217 "application/x-www-form-urlencoded"
218 ],
219 "host": [
220 "phab.mercurial-scm.org"
221 ],
222 "user-agent": [
223 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
224 ]
225 },
226 "body": "__conduit__=1&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%2294aaae213b2397d1546801be89f317b63f0a6b93%5C%22%2C+%5C%22parent%5C%22%3A+%5C%2298d480e0d494906d9758c44c622951b429afd862%5C%22%2C+%5C%22user%5C%22%3A+%5C%22test%5C%22%7D%22%2C+%22diff_id%22%3A+21009%2C+%22name%22%3A+%22hg%3Ameta%22%7D&output=json",
227 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
228 "method": "POST"
229 },
230 "response": {
231 "headers": {
232 "x-xss-protection": [
233 "1; mode=block"
234 ],
235 "strict-transport-security": [
236 "max-age=0; includeSubdomains; preload"
237 ],
238 "transfer-encoding": [
239 "chunked"
240 ],
241 "x-frame-options": [
242 "Deny"
243 ],
244 "expires": [
245 "Sat, 01 Jan 2000 00:00:00 GMT"
246 ],
247 "content-type": [
248 "application/json"
249 ],
250 "referrer-policy": [
251 "no-referrer"
252 ],
253 "server": [
254 "Apache/2.4.10 (Debian)"
255 ],
256 "cache-control": [
257 "no-store"
258 ],
259 "x-content-type-options": [
260 "nosniff"
261 ],
262 "date": [
263 "Wed, 08 Apr 2020 21:13:15 GMT"
264 ]
265 },
266 "body": {
267 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
268 },
269 "status": {
270 "code": 200,
271 "message": "OK"
272 }
273 }
274 },
275 {
276 "request": {
277 "headers": {
278 "content-length": [
279 "1746"
280 ],
281 "accept": [
282 "application/mercurial-0.1"
283 ],
284 "content-type": [
285 "application/x-www-form-urlencoded"
286 ],
287 "host": [
288 "phab.mercurial-scm.org"
289 ],
290 "user-agent": [
291 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
292 ]
293 },
294 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22data%22%3A+%22%7B%5C%220124e5474c880e4fb40c8326ad2b75ae3e57ee5f%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%220124e5474c880e4fb40c8326ad2b75ae3e57ee5f%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%22602c4e7382436988e46c0d56fb3883968302b3f6%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22602c4e7382436988e46c0d56fb3883968302b3f6%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%22602c4e7382436988e46c0d56fb3883968302b3f6%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2298d480e0d494906d9758c44c622951b429afd862%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%2294aaae213b2397d1546801be89f317b63f0a6b93%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%2294aaae213b2397d1546801be89f317b63f0a6b93%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%22e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac%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%22e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%220124e5474c880e4fb40c8326ad2b75ae3e57ee5f%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%7D%22%2C+%22diff_id%22%3A+21009%2C+%22name%22%3A+%22local%3Acommits%22%7D&output=json",
295 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
296 "method": "POST"
297 },
298 "response": {
299 "headers": {
300 "x-xss-protection": [
301 "1; mode=block"
302 ],
303 "strict-transport-security": [
304 "max-age=0; includeSubdomains; preload"
305 ],
306 "transfer-encoding": [
307 "chunked"
308 ],
309 "x-frame-options": [
310 "Deny"
311 ],
312 "expires": [
313 "Sat, 01 Jan 2000 00:00:00 GMT"
314 ],
315 "content-type": [
316 "application/json"
317 ],
318 "referrer-policy": [
319 "no-referrer"
320 ],
321 "server": [
322 "Apache/2.4.10 (Debian)"
323 ],
324 "cache-control": [
325 "no-store"
326 ],
327 "x-content-type-options": [
328 "nosniff"
329 ],
330 "date": [
331 "Wed, 08 Apr 2020 21:13:15 GMT"
332 ]
333 },
334 "body": {
335 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
336 },
337 "status": {
338 "code": 200,
339 "message": "OK"
340 }
341 }
342 },
343 {
344 "request": {
345 "headers": {
346 "content-length": [
347 "364"
348 ],
349 "accept": [
350 "application/mercurial-0.1"
351 ],
352 "content-type": [
353 "application/x-www-form-urlencoded"
354 ],
355 "host": [
356 "phab.mercurial-scm.org"
357 ],
358 "user-agent": [
359 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
360 ]
361 },
362 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22one%3A+first+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod1%27+as+its+contents.%5Cn%5CnTest+Plan%3A%5CnLOL%21++What+testing%3F%21%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8387%22%7D&output=json",
363 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
364 "method": "POST"
365 },
366 "response": {
367 "headers": {
368 "x-xss-protection": [
369 "1; mode=block"
370 ],
371 "strict-transport-security": [
372 "max-age=0; includeSubdomains; preload"
373 ],
374 "transfer-encoding": [
375 "chunked"
376 ],
377 "x-frame-options": [
378 "Deny"
379 ],
380 "expires": [
381 "Sat, 01 Jan 2000 00:00:00 GMT"
382 ],
383 "content-type": [
384 "application/json"
385 ],
386 "referrer-policy": [
387 "no-referrer"
388 ],
389 "server": [
390 "Apache/2.4.10 (Debian)"
391 ],
392 "cache-control": [
393 "no-store"
394 ],
395 "x-content-type-options": [
396 "nosniff"
397 ],
398 "date": [
399 "Wed, 08 Apr 2020 21:13:16 GMT"
400 ]
401 },
402 "body": {
403 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"one: first commit to review\",\"testPlan\":\"LOL! What testing?!\",\"revisionID\":8387,\"summary\":\"This file was modified with 'mod1' as its contents.\"},\"revisionIDFieldInfo\":{\"value\":8387,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"one: first commit to review\"},{\"type\":\"testPlan\",\"value\":\"LOL! What testing?!\"},{\"type\":\"summary\",\"value\":\"This file was modified with 'mod1' as its contents.\"}]},\"error_code\":null,\"error_info\":null}"
404 },
405 "status": {
406 "code": 200,
407 "message": "OK"
408 }
409 }
410 },
411 {
412 "request": {
413 "headers": {
414 "content-length": [
415 "361"
416 ],
417 "accept": [
418 "application/mercurial-0.1"
419 ],
420 "content-type": [
421 "application/x-www-form-urlencoded"
422 ],
423 "host": [
424 "phab.mercurial-scm.org"
425 ],
426 "user-agent": [
427 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
428 ]
429 },
430 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22two%3A+second+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod2%27+as+its+contents.%5Cn%5CnTest+Plan%3A%5CnHaha%21+yeah%2C+right.%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8387%22%7D&output=json",
431 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
432 "method": "POST"
433 },
434 "response": {
435 "headers": {
436 "x-xss-protection": [
437 "1; mode=block"
438 ],
439 "strict-transport-security": [
440 "max-age=0; includeSubdomains; preload"
441 ],
442 "transfer-encoding": [
443 "chunked"
444 ],
445 "x-frame-options": [
446 "Deny"
447 ],
448 "expires": [
449 "Sat, 01 Jan 2000 00:00:00 GMT"
450 ],
451 "content-type": [
452 "application/json"
453 ],
454 "referrer-policy": [
455 "no-referrer"
456 ],
457 "server": [
458 "Apache/2.4.10 (Debian)"
459 ],
460 "cache-control": [
461 "no-store"
462 ],
463 "x-content-type-options": [
464 "nosniff"
465 ],
466 "date": [
467 "Wed, 08 Apr 2020 21:13:16 GMT"
468 ]
469 },
470 "body": {
471 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"two: second commit to review\",\"testPlan\":\"Haha! yeah, right.\",\"revisionID\":8387,\"summary\":\"This file was modified with 'mod2' as its contents.\"},\"revisionIDFieldInfo\":{\"value\":8387,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"two: second commit to review\"},{\"type\":\"testPlan\",\"value\":\"Haha! yeah, right.\"},{\"type\":\"summary\",\"value\":\"This file was modified with 'mod2' as its contents.\"}]},\"error_code\":null,\"error_info\":null}"
472 },
473 "status": {
474 "code": 200,
475 "message": "OK"
476 }
477 }
478 },
479 {
480 "request": {
481 "headers": {
482 "content-length": [
483 "260"
484 ],
485 "accept": [
486 "application/mercurial-0.1"
487 ],
488 "content-type": [
489 "application/x-www-form-urlencoded"
490 ],
491 "host": [
492 "phab.mercurial-scm.org"
493 ],
494 "user-agent": [
495 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
496 ]
497 },
498 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%223%3A+a+commit+with+no+detailed+message%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8387%22%7D&output=json",
499 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
500 "method": "POST"
501 },
502 "response": {
503 "headers": {
504 "x-xss-protection": [
505 "1; mode=block"
506 ],
507 "strict-transport-security": [
508 "max-age=0; includeSubdomains; preload"
509 ],
510 "transfer-encoding": [
511 "chunked"
512 ],
513 "x-frame-options": [
514 "Deny"
515 ],
516 "expires": [
517 "Sat, 01 Jan 2000 00:00:00 GMT"
518 ],
519 "content-type": [
520 "application/json"
521 ],
522 "referrer-policy": [
523 "no-referrer"
524 ],
525 "server": [
526 "Apache/2.4.10 (Debian)"
527 ],
528 "cache-control": [
529 "no-store"
530 ],
531 "x-content-type-options": [
532 "nosniff"
533 ],
534 "date": [
535 "Wed, 08 Apr 2020 21:13:16 GMT"
536 ]
537 },
538 "body": {
539 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"3: a commit with no detailed message\",\"revisionID\":8387},\"revisionIDFieldInfo\":{\"value\":8387,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"3: a commit with no detailed message\"}]},\"error_code\":null,\"error_info\":null}"
540 },
541 "status": {
542 "code": 200,
543 "message": "OK"
544 }
545 }
546 },
547 {
548 "request": {
549 "headers": {
550 "content-length": [
551 "174"
552 ],
553 "accept": [
554 "application/mercurial-0.1"
555 ],
556 "content-type": [
557 "application/x-www-form-urlencoded"
558 ],
559 "host": [
560 "phab.mercurial-scm.org"
561 ],
562 "user-agent": [
563 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
564 ]
565 },
566 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22four%3A+extend+the+fold+range%22%7D&output=json",
567 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
568 "method": "POST"
569 },
570 "response": {
571 "headers": {
572 "x-xss-protection": [
573 "1; mode=block"
574 ],
575 "strict-transport-security": [
576 "max-age=0; includeSubdomains; preload"
577 ],
578 "transfer-encoding": [
579 "chunked"
580 ],
581 "x-frame-options": [
582 "Deny"
583 ],
584 "expires": [
585 "Sat, 01 Jan 2000 00:00:00 GMT"
586 ],
587 "content-type": [
588 "application/json"
589 ],
590 "referrer-policy": [
591 "no-referrer"
592 ],
593 "server": [
594 "Apache/2.4.10 (Debian)"
595 ],
596 "cache-control": [
597 "no-store"
598 ],
599 "x-content-type-options": [
600 "nosniff"
601 ],
602 "date": [
603 "Wed, 08 Apr 2020 21:13:17 GMT"
604 ]
605 },
606 "body": {
607 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"four: extend the fold range\"},\"revisionIDFieldInfo\":{\"value\":null,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"four: extend the fold range\"}]},\"error_code\":null,\"error_info\":null}"
608 },
609 "status": {
610 "code": 200,
611 "message": "OK"
612 }
613 }
614 },
615 {
616 "request": {
617 "headers": {
618 "content-length": [
619 "781"
620 ],
621 "accept": [
622 "application/mercurial-0.1"
623 ],
624 "content-type": [
625 "application/x-www-form-urlencoded"
626 ],
627 "host": [
628 "phab.mercurial-scm.org"
629 ],
630 "user-agent": [
631 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
632 ]
633 },
634 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22objectIdentifier%22%3A+8387%2C+%22transactions%22%3A+%5B%7B%22type%22%3A+%22update%22%2C+%22value%22%3A+%22PHID-DIFF-kvumllarf5ym6ewayp2l%22%7D%2C+%7B%22type%22%3A+%22title%22%2C+%22value%22%3A+%22one%3A+first+commit+to+review%22%7D%2C+%7B%22type%22%3A+%22testPlan%22%2C+%22value%22%3A+%22LOL%21++What+testing%3F%21%5Cn%5CnHaha%21+yeah%2C+right.%22%7D%2C+%7B%22type%22%3A+%22summary%22%2C+%22value%22%3A+%22This+file+was+modified+with+%27mod1%27+as+its+contents.%5Cn%5Cntwo%3A+second+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod2%27+as+its+contents.%5Cn%5Cn3%3A+a+commit+with+no+detailed+message%5Cn%5Cnfour%3A+extend+the+fold+range%22%7D%5D%7D&output=json",
635 "uri": "https://phab.mercurial-scm.org//api/differential.revision.edit",
636 "method": "POST"
637 },
638 "response": {
639 "headers": {
640 "x-xss-protection": [
641 "1; mode=block"
642 ],
643 "strict-transport-security": [
644 "max-age=0; includeSubdomains; preload"
645 ],
646 "transfer-encoding": [
647 "chunked"
648 ],
649 "x-frame-options": [
650 "Deny"
651 ],
652 "expires": [
653 "Sat, 01 Jan 2000 00:00:00 GMT"
654 ],
655 "content-type": [
656 "application/json"
657 ],
658 "referrer-policy": [
659 "no-referrer"
660 ],
661 "server": [
662 "Apache/2.4.10 (Debian)"
663 ],
664 "cache-control": [
665 "no-store"
666 ],
667 "x-content-type-options": [
668 "nosniff"
669 ],
670 "date": [
671 "Wed, 08 Apr 2020 21:13:17 GMT"
672 ]
673 },
674 "body": {
675 "string": "{\"result\":{\"object\":{\"id\":8387,\"phid\":\"PHID-DREV-6ov3pvjim4txejzekw2t\"},\"transactions\":[{\"phid\":\"PHID-XACT-DREV-fr3vwmmeqsxaick\"},{\"phid\":\"PHID-XACT-DREV-csghurweoz3dkpp\"}]},\"error_code\":null,\"error_info\":null}"
676 },
677 "status": {
678 "code": 200,
679 "message": "OK"
680 }
681 }
682 },
683 {
684 "request": {
685 "headers": {
686 "content-length": [
687 "146"
688 ],
689 "accept": [
690 "application/mercurial-0.1"
691 ],
692 "content-type": [
693 "application/x-www-form-urlencoded"
694 ],
695 "host": [
696 "phab.mercurial-scm.org"
697 ],
698 "user-agent": [
699 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
700 ]
701 },
702 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22ids%22%3A+%5B8387%5D%7D&output=json",
703 "uri": "https://phab.mercurial-scm.org//api/differential.query",
704 "method": "POST"
705 },
706 "response": {
707 "headers": {
708 "x-xss-protection": [
709 "1; mode=block"
710 ],
711 "strict-transport-security": [
712 "max-age=0; includeSubdomains; preload"
713 ],
714 "transfer-encoding": [
715 "chunked"
716 ],
717 "x-frame-options": [
718 "Deny"
719 ],
720 "expires": [
721 "Sat, 01 Jan 2000 00:00:00 GMT"
722 ],
723 "content-type": [
724 "application/json"
725 ],
726 "referrer-policy": [
727 "no-referrer"
728 ],
729 "server": [
730 "Apache/2.4.10 (Debian)"
731 ],
732 "cache-control": [
733 "no-store"
734 ],
735 "x-content-type-options": [
736 "nosniff"
737 ],
738 "date": [
739 "Wed, 08 Apr 2020 21:13:18 GMT"
740 ]
741 },
742 "body": {
743 "string": "{\"result\":[{\"id\":\"8387\",\"phid\":\"PHID-DREV-6ov3pvjim4txejzekw2t\",\"title\":\"one: first commit to review\",\"uri\":\"https:\\/\\/phab.mercurial-scm.org\\/D8387\",\"dateCreated\":\"1586380377\",\"dateModified\":\"1586380397\",\"authorPHID\":\"PHID-USER-tzhaient733lwrlbcag5\",\"status\":\"0\",\"statusName\":\"Needs Review\",\"properties\":{\"draft.broadcast\":true,\"lines.added\":2,\"lines.removed\":1},\"branch\":\"default\",\"summary\":\"This file was modified with 'mod1' as its contents.\\n\\ntwo: second commit to review\\n\\nThis file was modified with 'mod2' as its contents.\\n\\n3: a commit with no detailed message\\n\\nfour: extend the fold range\",\"testPlan\":\"LOL! What testing?!\\n\\nHaha! yeah, right.\",\"lineCount\":\"3\",\"activeDiffPHID\":\"PHID-DIFF-kvumllarf5ym6ewayp2l\",\"diffs\":[\"21009\",\"21008\",\"21007\",\"21006\"],\"commits\":[],\"reviewers\":{\"PHID-PROJ-3dvcxzznrjru2xmmses3\":\"PHID-PROJ-3dvcxzznrjru2xmmses3\"},\"ccs\":[\"PHID-USER-q42dn7cc3donqriafhjx\"],\"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\"],[\"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\"],[\"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\"],[\"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-bvunnehri4u2isyr7bc3\",\"sourcePath\":\"\\/\"}],\"error_code\":null,\"error_info\":null}"
744 },
745 "status": {
746 "code": 200,
747 "message": "OK"
748 }
749 }
750 },
751 {
752 "request": {
753 "headers": {
754 "content-length": [
755 "482"
756 ],
757 "accept": [
758 "application/mercurial-0.1"
759 ],
760 "content-type": [
761 "application/x-www-form-urlencoded"
762 ],
763 "host": [
764 "phab.mercurial-scm.org"
765 ],
766 "user-agent": [
767 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
768 ]
769 },
770 "body": "__conduit__=1&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%2251a04fea8707151b9891822fb3c5fc5f11d45f59%5C%22%2C+%5C%22parent%5C%22%3A+%5C%2298d480e0d494906d9758c44c622951b429afd862%5C%22%2C+%5C%22user%5C%22%3A+%5C%22test%5C%22%7D%22%2C+%22diff_id%22%3A+21009%2C+%22name%22%3A+%22hg%3Ameta%22%7D&output=json",
771 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
772 "method": "POST"
773 },
774 "response": {
775 "headers": {
776 "x-xss-protection": [
777 "1; mode=block"
778 ],
779 "strict-transport-security": [
780 "max-age=0; includeSubdomains; preload"
781 ],
782 "transfer-encoding": [
783 "chunked"
784 ],
785 "x-frame-options": [
786 "Deny"
787 ],
788 "expires": [
789 "Sat, 01 Jan 2000 00:00:00 GMT"
790 ],
791 "content-type": [
792 "application/json"
793 ],
794 "referrer-policy": [
795 "no-referrer"
796 ],
797 "server": [
798 "Apache/2.4.10 (Debian)"
799 ],
800 "cache-control": [
801 "no-store"
802 ],
803 "x-content-type-options": [
804 "nosniff"
805 ],
806 "date": [
807 "Wed, 08 Apr 2020 21:13:18 GMT"
808 ]
809 },
810 "body": {
811 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
812 },
813 "status": {
814 "code": 200,
815 "message": "OK"
816 }
817 }
818 },
819 {
820 "request": {
821 "headers": {
822 "content-length": [
823 "1746"
824 ],
825 "accept": [
826 "application/mercurial-0.1"
827 ],
828 "content-type": [
829 "application/x-www-form-urlencoded"
830 ],
831 "host": [
832 "phab.mercurial-scm.org"
833 ],
834 "user-agent": [
835 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
836 ]
837 },
838 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22data%22%3A+%22%7B%5C%220124e5474c880e4fb40c8326ad2b75ae3e57ee5f%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%220124e5474c880e4fb40c8326ad2b75ae3e57ee5f%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%22602c4e7382436988e46c0d56fb3883968302b3f6%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%2251a04fea8707151b9891822fb3c5fc5f11d45f59%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%2251a04fea8707151b9891822fb3c5fc5f11d45f59%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%22e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22602c4e7382436988e46c0d56fb3883968302b3f6%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%22602c4e7382436988e46c0d56fb3883968302b3f6%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2298d480e0d494906d9758c44c622951b429afd862%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac%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%22e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%220124e5474c880e4fb40c8326ad2b75ae3e57ee5f%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%7D%22%2C+%22diff_id%22%3A+21009%2C+%22name%22%3A+%22local%3Acommits%22%7D&output=json",
839 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
840 "method": "POST"
841 },
842 "response": {
843 "headers": {
844 "x-xss-protection": [
845 "1; mode=block"
846 ],
847 "strict-transport-security": [
848 "max-age=0; includeSubdomains; preload"
849 ],
850 "transfer-encoding": [
851 "chunked"
852 ],
853 "x-frame-options": [
854 "Deny"
855 ],
856 "expires": [
857 "Sat, 01 Jan 2000 00:00:00 GMT"
858 ],
859 "content-type": [
860 "application/json"
861 ],
862 "referrer-policy": [
863 "no-referrer"
864 ],
865 "server": [
866 "Apache/2.4.10 (Debian)"
867 ],
868 "cache-control": [
869 "no-store"
870 ],
871 "x-content-type-options": [
872 "nosniff"
873 ],
874 "date": [
875 "Wed, 08 Apr 2020 21:13:19 GMT"
876 ]
877 },
878 "body": {
879 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
880 },
881 "status": {
882 "code": 200,
883 "message": "OK"
884 }
885 }
886 }
887 ],
888 "version": 1
889 } No newline at end of file
This diff has been collapsed as it changes many lines, (960 lines changed) Show them Hide them
@@ -0,0 +1,960
1 {
2 "interactions": [
3 {
4 "request": {
5 "headers": {
6 "content-length": [
7 "178"
8 ],
9 "accept": [
10 "application/mercurial-0.1"
11 ],
12 "content-type": [
13 "application/x-www-form-urlencoded"
14 ],
15 "host": [
16 "phab.mercurial-scm.org"
17 ],
18 "user-agent": [
19 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
20 ]
21 },
22 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22revisionIDs%22%3A+%5B8387%2C+8387%2C+8387%2C+8387%5D%7D&output=json",
23 "uri": "https://phab.mercurial-scm.org//api/differential.querydiffs",
24 "method": "POST"
25 },
26 "response": {
27 "headers": {
28 "x-xss-protection": [
29 "1; mode=block"
30 ],
31 "strict-transport-security": [
32 "max-age=0; includeSubdomains; preload"
33 ],
34 "transfer-encoding": [
35 "chunked"
36 ],
37 "x-frame-options": [
38 "Deny"
39 ],
40 "expires": [
41 "Sat, 01 Jan 2000 00:00:00 GMT"
42 ],
43 "content-type": [
44 "application/json"
45 ],
46 "referrer-policy": [
47 "no-referrer"
48 ],
49 "server": [
50 "Apache/2.4.10 (Debian)"
51 ],
52 "cache-control": [
53 "no-store"
54 ],
55 "x-content-type-options": [
56 "nosniff"
57 ],
58 "date": [
59 "Wed, 08 Apr 2020 21:13:20 GMT"
60 ]
61 },
62 "body": {
63 "string": "{\"result\":{\"21009\":{\"id\":\"21009\",\"revisionID\":\"8387\",\"dateCreated\":\"1586380394\",\"dateModified\":\"1586380397\",\"sourceControlBaseRevision\":\"98d480e0d494906d9758c44c622951b429afd862\",\"sourceControlPath\":\"\\/\",\"sourceControlSystem\":\"hg\",\"branch\":\"default\",\"bookmark\":null,\"creationMethod\":\"phabsend\",\"description\":null,\"unitStatus\":\"0\",\"lintStatus\":\"0\",\"changes\":[{\"id\":\"56829\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"r1N4i770De9n\"},\"oldPath\":null,\"currentPath\":\"file2.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":{\"unix:filemode\":\"100644\"},\"type\":\"1\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"0\",\"hunks\":[{\"oldOffset\":\"0\",\"newOffset\":\"1\",\"oldLength\":\"0\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"+another mod\\n\"}]},{\"id\":\"56828\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"cAKuVP31KNrx\"},\"oldPath\":\"file.txt\",\"currentPath\":\"file.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":[],\"type\":\"2\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"1\",\"hunks\":[{\"oldOffset\":\"1\",\"newOffset\":\"1\",\"oldLength\":\"1\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"-added\\n+mod3\\n\"}]}],\"properties\":{\"hg:meta\":{\"branch\":\"default\",\"date\":\"0 0\",\"node\":\"51a04fea8707151b9891822fb3c5fc5f11d45f59\",\"parent\":\"98d480e0d494906d9758c44c622951b429afd862\",\"user\":\"test\"},\"local:commits\":{\"0124e5474c880e4fb40c8326ad2b75ae3e57ee5f\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"0124e5474c880e4fb40c8326ad2b75ae3e57ee5f\",\"parents\":[\"602c4e7382436988e46c0d56fb3883968302b3f6\"],\"time\":0},\"51a04fea8707151b9891822fb3c5fc5f11d45f59\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"51a04fea8707151b9891822fb3c5fc5f11d45f59\",\"parents\":[\"e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac\"],\"time\":0},\"602c4e7382436988e46c0d56fb3883968302b3f6\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"602c4e7382436988e46c0d56fb3883968302b3f6\",\"parents\":[\"98d480e0d494906d9758c44c622951b429afd862\"],\"time\":0},\"e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac\",\"parents\":[\"0124e5474c880e4fb40c8326ad2b75ae3e57ee5f\"],\"time\":0}}},\"authorName\":\"test\",\"authorEmail\":\"test\"},\"21008\":{\"id\":\"21008\",\"revisionID\":\"8387\",\"dateCreated\":\"1586380389\",\"dateModified\":\"1586380391\",\"sourceControlBaseRevision\":\"98d480e0d494906d9758c44c622951b429afd862\",\"sourceControlPath\":\"\\/\",\"sourceControlSystem\":\"hg\",\"branch\":\"default\",\"bookmark\":null,\"creationMethod\":\"phabsend\",\"description\":null,\"unitStatus\":\"0\",\"lintStatus\":\"0\",\"changes\":[{\"id\":\"56827\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"yXvxVg6uibwd\"},\"oldPath\":null,\"currentPath\":\"file2.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":{\"unix:filemode\":\"100644\"},\"type\":\"1\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"0\",\"hunks\":[{\"oldOffset\":\"0\",\"newOffset\":\"1\",\"oldLength\":\"0\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"+modified\\n\"}]},{\"id\":\"56826\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"cAKuVP31KNrx\"},\"oldPath\":\"file.txt\",\"currentPath\":\"file.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":[],\"type\":\"2\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"1\",\"hunks\":[{\"oldOffset\":\"1\",\"newOffset\":\"1\",\"oldLength\":\"1\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"-added\\n+mod3\\n\"}]}],\"properties\":{\"hg:meta\":{\"branch\":\"default\",\"date\":\"0 0\",\"node\":\"e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac\",\"parent\":\"98d480e0d494906d9758c44c622951b429afd862\",\"user\":\"test\"},\"local:commits\":{\"0124e5474c880e4fb40c8326ad2b75ae3e57ee5f\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"0124e5474c880e4fb40c8326ad2b75ae3e57ee5f\",\"parents\":[\"602c4e7382436988e46c0d56fb3883968302b3f6\"],\"time\":0},\"602c4e7382436988e46c0d56fb3883968302b3f6\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"602c4e7382436988e46c0d56fb3883968302b3f6\",\"parents\":[\"98d480e0d494906d9758c44c622951b429afd862\"],\"time\":0},\"e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac\",\"parents\":[\"0124e5474c880e4fb40c8326ad2b75ae3e57ee5f\"],\"time\":0}}},\"authorName\":\"test\",\"authorEmail\":\"test\"},\"21007\":{\"id\":\"21007\",\"revisionID\":\"8387\",\"dateCreated\":\"1586380382\",\"dateModified\":\"1586380385\",\"sourceControlBaseRevision\":\"98d480e0d494906d9758c44c622951b429afd862\",\"sourceControlPath\":\"\\/\",\"sourceControlSystem\":\"hg\",\"branch\":\"default\",\"bookmark\":null,\"creationMethod\":\"phabsend\",\"description\":null,\"unitStatus\":\"0\",\"lintStatus\":\"0\",\"changes\":[{\"id\":\"56825\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"yXvxVg6uibwd\"},\"oldPath\":null,\"currentPath\":\"file2.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":{\"unix:filemode\":\"100644\"},\"type\":\"1\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"0\",\"hunks\":[{\"oldOffset\":\"0\",\"newOffset\":\"1\",\"oldLength\":\"0\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"+modified\\n\"}]},{\"id\":\"56824\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"cAKuVP31KNrx\"},\"oldPath\":\"file.txt\",\"currentPath\":\"file.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":[],\"type\":\"2\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"1\",\"hunks\":[{\"oldOffset\":\"1\",\"newOffset\":\"1\",\"oldLength\":\"1\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"-added\\n+mod3\\n\"}]}],\"properties\":{\"hg:meta\":{\"branch\":\"default\",\"date\":\"0 0\",\"node\":\"e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac\",\"parent\":\"98d480e0d494906d9758c44c622951b429afd862\",\"user\":\"test\"},\"local:commits\":{\"0124e5474c880e4fb40c8326ad2b75ae3e57ee5f\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"0124e5474c880e4fb40c8326ad2b75ae3e57ee5f\",\"parents\":[\"602c4e7382436988e46c0d56fb3883968302b3f6\"],\"time\":0},\"602c4e7382436988e46c0d56fb3883968302b3f6\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"602c4e7382436988e46c0d56fb3883968302b3f6\",\"parents\":[\"98d480e0d494906d9758c44c622951b429afd862\"],\"time\":0},\"e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac\",\"parents\":[\"0124e5474c880e4fb40c8326ad2b75ae3e57ee5f\"],\"time\":0}}},\"authorName\":\"test\",\"authorEmail\":\"test\"},\"21006\":{\"id\":\"21006\",\"revisionID\":\"8387\",\"dateCreated\":\"1586380375\",\"dateModified\":\"1586380377\",\"sourceControlBaseRevision\":\"98d480e0d494906d9758c44c622951b429afd862\",\"sourceControlPath\":\"\\/\",\"sourceControlSystem\":\"hg\",\"branch\":\"default\",\"bookmark\":null,\"creationMethod\":\"phabsend\",\"description\":null,\"unitStatus\":\"0\",\"lintStatus\":\"0\",\"changes\":[{\"id\":\"56823\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"cAKuVP31KNrx\"},\"oldPath\":\"file.txt\",\"currentPath\":\"file.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":[],\"type\":\"2\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"1\",\"hunks\":[{\"oldOffset\":\"1\",\"newOffset\":\"1\",\"oldLength\":\"1\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"-added\\n+mod3\\n\"}]}],\"properties\":{\"hg:meta\":{\"branch\":\"default\",\"date\":\"0 0\",\"node\":\"921f8265efbd92e92bfa5d7a0e047908de9844a5\",\"parent\":\"98d480e0d494906d9758c44c622951b429afd862\",\"user\":\"test\"},\"local:commits\":{\"602c4e7382436988e46c0d56fb3883968302b3f6\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"602c4e7382436988e46c0d56fb3883968302b3f6\",\"parents\":[\"98d480e0d494906d9758c44c622951b429afd862\"],\"time\":0},\"832553266fe8c3330d968e6987df4ae793483b2b\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"832553266fe8c3330d968e6987df4ae793483b2b\",\"parents\":[\"602c4e7382436988e46c0d56fb3883968302b3f6\"],\"time\":0},\"921f8265efbd92e92bfa5d7a0e047908de9844a5\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"921f8265efbd92e92bfa5d7a0e047908de9844a5\",\"parents\":[\"832553266fe8c3330d968e6987df4ae793483b2b\"],\"time\":0}}},\"authorName\":\"test\",\"authorEmail\":\"test\"}},\"error_code\":null,\"error_info\":null}"
64 },
65 "status": {
66 "code": 200,
67 "message": "OK"
68 }
69 }
70 },
71 {
72 "request": {
73 "headers": {
74 "content-length": [
75 "183"
76 ],
77 "accept": [
78 "application/mercurial-0.1"
79 ],
80 "content-type": [
81 "application/x-www-form-urlencoded"
82 ],
83 "host": [
84 "phab.mercurial-scm.org"
85 ],
86 "user-agent": [
87 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
88 ]
89 },
90 "body": "__conduit__=1&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",
91 "uri": "https://phab.mercurial-scm.org//api/diffusion.repository.search",
92 "method": "POST"
93 },
94 "response": {
95 "headers": {
96 "x-xss-protection": [
97 "1; mode=block"
98 ],
99 "strict-transport-security": [
100 "max-age=0; includeSubdomains; preload"
101 ],
102 "transfer-encoding": [
103 "chunked"
104 ],
105 "x-frame-options": [
106 "Deny"
107 ],
108 "expires": [
109 "Sat, 01 Jan 2000 00:00:00 GMT"
110 ],
111 "content-type": [
112 "application/json"
113 ],
114 "referrer-policy": [
115 "no-referrer"
116 ],
117 "server": [
118 "Apache/2.4.10 (Debian)"
119 ],
120 "cache-control": [
121 "no-store"
122 ],
123 "x-content-type-options": [
124 "nosniff"
125 ],
126 "date": [
127 "Wed, 08 Apr 2020 21:13:21 GMT"
128 ]
129 },
130 "body": {
131 "string": "{\"result\":{\"data\":[{\"id\":2,\"type\":\"REPO\",\"phid\":\"PHID-REPO-bvunnehri4u2isyr7bc3\",\"fields\":{\"name\":\"Mercurial\",\"vcs\":\"hg\",\"callsign\":\"HG\",\"shortName\":null,\"status\":\"active\",\"isImporting\":false,\"almanacServicePHID\":null,\"refRules\":{\"fetchRules\":[],\"trackRules\":[],\"permanentRefRules\":[]},\"spacePHID\":null,\"dateCreated\":1498761653,\"dateModified\":1500403184,\"policy\":{\"view\":\"public\",\"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}"
132 },
133 "status": {
134 "code": 200,
135 "message": "OK"
136 }
137 }
138 },
139 {
140 "request": {
141 "headers": {
142 "content-length": [
143 "1756"
144 ],
145 "accept": [
146 "application/mercurial-0.1"
147 ],
148 "content-type": [
149 "application/x-www-form-urlencoded"
150 ],
151 "host": [
152 "phab.mercurial-scm.org"
153 ],
154 "user-agent": [
155 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
156 ]
157 },
158 "body": "__conduit__=1&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%22file.txt%22%3A+%7B%22addLines%22%3A+1%2C+%22awayPaths%22%3A+%5B%5D%2C+%22commitHash%22%3A+null%2C+%22currentPath%22%3A+%22file.txt%22%2C+%22delLines%22%3A+0%2C+%22fileType%22%3A+1%2C+%22hunks%22%3A+%5B%7B%22addLines%22%3A+1%2C+%22corpus%22%3A+%22%2Bmod3%5Cn%22%2C+%22delLines%22%3A+0%2C+%22newLength%22%3A+1%2C+%22newOffset%22%3A+1%2C+%22oldLength%22%3A+0%2C+%22oldOffset%22%3A+0%7D%5D%2C+%22metadata%22%3A+%7B%7D%2C+%22newProperties%22%3A+%7B%22unix%3Afilemode%22%3A+%22100644%22%7D%2C+%22oldPath%22%3A+null%2C+%22oldProperties%22%3A+%7B%7D%2C+%22type%22%3A+1%7D%2C+%22file2.txt%22%3A+%7B%22addLines%22%3A+1%2C+%22awayPaths%22%3A+%5B%5D%2C+%22commitHash%22%3A+null%2C+%22currentPath%22%3A+%22file2.txt%22%2C+%22delLines%22%3A+0%2C+%22fileType%22%3A+1%2C+%22hunks%22%3A+%5B%7B%22addLines%22%3A+1%2C+%22corpus%22%3A+%22%2Banother+mod%5Cn%22%2C+%22delLines%22%3A+0%2C+%22newLength%22%3A+1%2C+%22newOffset%22%3A+1%2C+%22oldLength%22%3A+0%2C+%22oldOffset%22%3A+0%7D%5D%2C+%22metadata%22%3A+%7B%7D%2C+%22newProperties%22%3A+%7B%22unix%3Afilemode%22%3A+%22100644%22%7D%2C+%22oldPath%22%3A+null%2C+%22oldProperties%22%3A+%7B%7D%2C+%22type%22%3A+1%7D%7D%2C+%22creationMethod%22%3A+%22phabsend%22%2C+%22lintStatus%22%3A+%22none%22%2C+%22repositoryPHID%22%3A+%22PHID-REPO-bvunnehri4u2isyr7bc3%22%2C+%22sourceControlBaseRevision%22%3A+%220000000000000000000000000000000000000000%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",
159 "uri": "https://phab.mercurial-scm.org//api/differential.creatediff",
160 "method": "POST"
161 },
162 "response": {
163 "headers": {
164 "x-xss-protection": [
165 "1; mode=block"
166 ],
167 "strict-transport-security": [
168 "max-age=0; includeSubdomains; preload"
169 ],
170 "transfer-encoding": [
171 "chunked"
172 ],
173 "x-frame-options": [
174 "Deny"
175 ],
176 "expires": [
177 "Sat, 01 Jan 2000 00:00:00 GMT"
178 ],
179 "content-type": [
180 "application/json"
181 ],
182 "referrer-policy": [
183 "no-referrer"
184 ],
185 "server": [
186 "Apache/2.4.10 (Debian)"
187 ],
188 "cache-control": [
189 "no-store"
190 ],
191 "x-content-type-options": [
192 "nosniff"
193 ],
194 "date": [
195 "Wed, 08 Apr 2020 21:13:21 GMT"
196 ]
197 },
198 "body": {
199 "string": "{\"result\":{\"diffid\":21010,\"phid\":\"PHID-DIFF-rgriot6pr2ef72gyyljl\",\"uri\":\"https:\\/\\/phab.mercurial-scm.org\\/differential\\/diff\\/21010\\/\"},\"error_code\":null,\"error_info\":null}"
200 },
201 "status": {
202 "code": 200,
203 "message": "OK"
204 }
205 }
206 },
207 {
208 "request": {
209 "headers": {
210 "content-length": [
211 "482"
212 ],
213 "accept": [
214 "application/mercurial-0.1"
215 ],
216 "content-type": [
217 "application/x-www-form-urlencoded"
218 ],
219 "host": [
220 "phab.mercurial-scm.org"
221 ],
222 "user-agent": [
223 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
224 ]
225 },
226 "body": "__conduit__=1&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%2251a04fea8707151b9891822fb3c5fc5f11d45f59%5C%22%2C+%5C%22parent%5C%22%3A+%5C%220000000000000000000000000000000000000000%5C%22%2C+%5C%22user%5C%22%3A+%5C%22test%5C%22%7D%22%2C+%22diff_id%22%3A+21010%2C+%22name%22%3A+%22hg%3Ameta%22%7D&output=json",
227 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
228 "method": "POST"
229 },
230 "response": {
231 "headers": {
232 "x-xss-protection": [
233 "1; mode=block"
234 ],
235 "strict-transport-security": [
236 "max-age=0; includeSubdomains; preload"
237 ],
238 "transfer-encoding": [
239 "chunked"
240 ],
241 "x-frame-options": [
242 "Deny"
243 ],
244 "expires": [
245 "Sat, 01 Jan 2000 00:00:00 GMT"
246 ],
247 "content-type": [
248 "application/json"
249 ],
250 "referrer-policy": [
251 "no-referrer"
252 ],
253 "server": [
254 "Apache/2.4.10 (Debian)"
255 ],
256 "cache-control": [
257 "no-store"
258 ],
259 "x-content-type-options": [
260 "nosniff"
261 ],
262 "date": [
263 "Wed, 08 Apr 2020 21:13:22 GMT"
264 ]
265 },
266 "body": {
267 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
268 },
269 "status": {
270 "code": 200,
271 "message": "OK"
272 }
273 }
274 },
275 {
276 "request": {
277 "headers": {
278 "content-length": [
279 "2130"
280 ],
281 "accept": [
282 "application/mercurial-0.1"
283 ],
284 "content-type": [
285 "application/x-www-form-urlencoded"
286 ],
287 "host": [
288 "phab.mercurial-scm.org"
289 ],
290 "user-agent": [
291 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
292 ]
293 },
294 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22data%22%3A+%22%7B%5C%220124e5474c880e4fb40c8326ad2b75ae3e57ee5f%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%220124e5474c880e4fb40c8326ad2b75ae3e57ee5f%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%22602c4e7382436988e46c0d56fb3883968302b3f6%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%2251a04fea8707151b9891822fb3c5fc5f11d45f59%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%2251a04fea8707151b9891822fb3c5fc5f11d45f59%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%22e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22602c4e7382436988e46c0d56fb3883968302b3f6%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%22602c4e7382436988e46c0d56fb3883968302b3f6%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2298d480e0d494906d9758c44c622951b429afd862%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%2298d480e0d494906d9758c44c622951b429afd862%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%2298d480e0d494906d9758c44c622951b429afd862%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%220000000000000000000000000000000000000000%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac%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%22e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%220124e5474c880e4fb40c8326ad2b75ae3e57ee5f%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%7D%22%2C+%22diff_id%22%3A+21010%2C+%22name%22%3A+%22local%3Acommits%22%7D&output=json",
295 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
296 "method": "POST"
297 },
298 "response": {
299 "headers": {
300 "x-xss-protection": [
301 "1; mode=block"
302 ],
303 "strict-transport-security": [
304 "max-age=0; includeSubdomains; preload"
305 ],
306 "transfer-encoding": [
307 "chunked"
308 ],
309 "x-frame-options": [
310 "Deny"
311 ],
312 "expires": [
313 "Sat, 01 Jan 2000 00:00:00 GMT"
314 ],
315 "content-type": [
316 "application/json"
317 ],
318 "referrer-policy": [
319 "no-referrer"
320 ],
321 "server": [
322 "Apache/2.4.10 (Debian)"
323 ],
324 "cache-control": [
325 "no-store"
326 ],
327 "x-content-type-options": [
328 "nosniff"
329 ],
330 "date": [
331 "Wed, 08 Apr 2020 21:13:22 GMT"
332 ]
333 },
334 "body": {
335 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
336 },
337 "status": {
338 "code": 200,
339 "message": "OK"
340 }
341 }
342 },
343 {
344 "request": {
345 "headers": {
346 "content-length": [
347 "155"
348 ],
349 "accept": [
350 "application/mercurial-0.1"
351 ],
352 "content-type": [
353 "application/x-www-form-urlencoded"
354 ],
355 "host": [
356 "phab.mercurial-scm.org"
357 ],
358 "user-agent": [
359 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
360 ]
361 },
362 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22added+file%22%7D&output=json",
363 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
364 "method": "POST"
365 },
366 "response": {
367 "headers": {
368 "x-xss-protection": [
369 "1; mode=block"
370 ],
371 "strict-transport-security": [
372 "max-age=0; includeSubdomains; preload"
373 ],
374 "transfer-encoding": [
375 "chunked"
376 ],
377 "x-frame-options": [
378 "Deny"
379 ],
380 "expires": [
381 "Sat, 01 Jan 2000 00:00:00 GMT"
382 ],
383 "content-type": [
384 "application/json"
385 ],
386 "referrer-policy": [
387 "no-referrer"
388 ],
389 "server": [
390 "Apache/2.4.10 (Debian)"
391 ],
392 "cache-control": [
393 "no-store"
394 ],
395 "x-content-type-options": [
396 "nosniff"
397 ],
398 "date": [
399 "Wed, 08 Apr 2020 21:13:22 GMT"
400 ]
401 },
402 "body": {
403 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"added file\"},\"revisionIDFieldInfo\":{\"value\":null,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"added file\"}]},\"error_code\":null,\"error_info\":null}"
404 },
405 "status": {
406 "code": 200,
407 "message": "OK"
408 }
409 }
410 },
411 {
412 "request": {
413 "headers": {
414 "content-length": [
415 "364"
416 ],
417 "accept": [
418 "application/mercurial-0.1"
419 ],
420 "content-type": [
421 "application/x-www-form-urlencoded"
422 ],
423 "host": [
424 "phab.mercurial-scm.org"
425 ],
426 "user-agent": [
427 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
428 ]
429 },
430 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22one%3A+first+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod1%27+as+its+contents.%5Cn%5CnTest+Plan%3A%5CnLOL%21++What+testing%3F%21%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8387%22%7D&output=json",
431 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
432 "method": "POST"
433 },
434 "response": {
435 "headers": {
436 "x-xss-protection": [
437 "1; mode=block"
438 ],
439 "strict-transport-security": [
440 "max-age=0; includeSubdomains; preload"
441 ],
442 "transfer-encoding": [
443 "chunked"
444 ],
445 "x-frame-options": [
446 "Deny"
447 ],
448 "expires": [
449 "Sat, 01 Jan 2000 00:00:00 GMT"
450 ],
451 "content-type": [
452 "application/json"
453 ],
454 "referrer-policy": [
455 "no-referrer"
456 ],
457 "server": [
458 "Apache/2.4.10 (Debian)"
459 ],
460 "cache-control": [
461 "no-store"
462 ],
463 "x-content-type-options": [
464 "nosniff"
465 ],
466 "date": [
467 "Wed, 08 Apr 2020 21:13:23 GMT"
468 ]
469 },
470 "body": {
471 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"one: first commit to review\",\"testPlan\":\"LOL! What testing?!\",\"revisionID\":8387,\"summary\":\"This file was modified with 'mod1' as its contents.\"},\"revisionIDFieldInfo\":{\"value\":8387,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"one: first commit to review\"},{\"type\":\"testPlan\",\"value\":\"LOL! What testing?!\"},{\"type\":\"summary\",\"value\":\"This file was modified with 'mod1' as its contents.\"}]},\"error_code\":null,\"error_info\":null}"
472 },
473 "status": {
474 "code": 200,
475 "message": "OK"
476 }
477 }
478 },
479 {
480 "request": {
481 "headers": {
482 "content-length": [
483 "361"
484 ],
485 "accept": [
486 "application/mercurial-0.1"
487 ],
488 "content-type": [
489 "application/x-www-form-urlencoded"
490 ],
491 "host": [
492 "phab.mercurial-scm.org"
493 ],
494 "user-agent": [
495 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
496 ]
497 },
498 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22two%3A+second+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod2%27+as+its+contents.%5Cn%5CnTest+Plan%3A%5CnHaha%21+yeah%2C+right.%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8387%22%7D&output=json",
499 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
500 "method": "POST"
501 },
502 "response": {
503 "headers": {
504 "x-xss-protection": [
505 "1; mode=block"
506 ],
507 "strict-transport-security": [
508 "max-age=0; includeSubdomains; preload"
509 ],
510 "transfer-encoding": [
511 "chunked"
512 ],
513 "x-frame-options": [
514 "Deny"
515 ],
516 "expires": [
517 "Sat, 01 Jan 2000 00:00:00 GMT"
518 ],
519 "content-type": [
520 "application/json"
521 ],
522 "referrer-policy": [
523 "no-referrer"
524 ],
525 "server": [
526 "Apache/2.4.10 (Debian)"
527 ],
528 "cache-control": [
529 "no-store"
530 ],
531 "x-content-type-options": [
532 "nosniff"
533 ],
534 "date": [
535 "Wed, 08 Apr 2020 21:13:23 GMT"
536 ]
537 },
538 "body": {
539 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"two: second commit to review\",\"testPlan\":\"Haha! yeah, right.\",\"revisionID\":8387,\"summary\":\"This file was modified with 'mod2' as its contents.\"},\"revisionIDFieldInfo\":{\"value\":8387,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"two: second commit to review\"},{\"type\":\"testPlan\",\"value\":\"Haha! yeah, right.\"},{\"type\":\"summary\",\"value\":\"This file was modified with 'mod2' as its contents.\"}]},\"error_code\":null,\"error_info\":null}"
540 },
541 "status": {
542 "code": 200,
543 "message": "OK"
544 }
545 }
546 },
547 {
548 "request": {
549 "headers": {
550 "content-length": [
551 "260"
552 ],
553 "accept": [
554 "application/mercurial-0.1"
555 ],
556 "content-type": [
557 "application/x-www-form-urlencoded"
558 ],
559 "host": [
560 "phab.mercurial-scm.org"
561 ],
562 "user-agent": [
563 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
564 ]
565 },
566 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%223%3A+a+commit+with+no+detailed+message%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8387%22%7D&output=json",
567 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
568 "method": "POST"
569 },
570 "response": {
571 "headers": {
572 "x-xss-protection": [
573 "1; mode=block"
574 ],
575 "strict-transport-security": [
576 "max-age=0; includeSubdomains; preload"
577 ],
578 "transfer-encoding": [
579 "chunked"
580 ],
581 "x-frame-options": [
582 "Deny"
583 ],
584 "expires": [
585 "Sat, 01 Jan 2000 00:00:00 GMT"
586 ],
587 "content-type": [
588 "application/json"
589 ],
590 "referrer-policy": [
591 "no-referrer"
592 ],
593 "server": [
594 "Apache/2.4.10 (Debian)"
595 ],
596 "cache-control": [
597 "no-store"
598 ],
599 "x-content-type-options": [
600 "nosniff"
601 ],
602 "date": [
603 "Wed, 08 Apr 2020 21:13:24 GMT"
604 ]
605 },
606 "body": {
607 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"3: a commit with no detailed message\",\"revisionID\":8387},\"revisionIDFieldInfo\":{\"value\":8387,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"3: a commit with no detailed message\"}]},\"error_code\":null,\"error_info\":null}"
608 },
609 "status": {
610 "code": 200,
611 "message": "OK"
612 }
613 }
614 },
615 {
616 "request": {
617 "headers": {
618 "content-length": [
619 "251"
620 ],
621 "accept": [
622 "application/mercurial-0.1"
623 ],
624 "content-type": [
625 "application/x-www-form-urlencoded"
626 ],
627 "host": [
628 "phab.mercurial-scm.org"
629 ],
630 "user-agent": [
631 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
632 ]
633 },
634 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22four%3A+extend+the+fold+range%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8387%22%7D&output=json",
635 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
636 "method": "POST"
637 },
638 "response": {
639 "headers": {
640 "x-xss-protection": [
641 "1; mode=block"
642 ],
643 "strict-transport-security": [
644 "max-age=0; includeSubdomains; preload"
645 ],
646 "transfer-encoding": [
647 "chunked"
648 ],
649 "x-frame-options": [
650 "Deny"
651 ],
652 "expires": [
653 "Sat, 01 Jan 2000 00:00:00 GMT"
654 ],
655 "content-type": [
656 "application/json"
657 ],
658 "referrer-policy": [
659 "no-referrer"
660 ],
661 "server": [
662 "Apache/2.4.10 (Debian)"
663 ],
664 "cache-control": [
665 "no-store"
666 ],
667 "x-content-type-options": [
668 "nosniff"
669 ],
670 "date": [
671 "Wed, 08 Apr 2020 21:13:24 GMT"
672 ]
673 },
674 "body": {
675 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"four: extend the fold range\",\"revisionID\":8387},\"revisionIDFieldInfo\":{\"value\":8387,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"four: extend the fold range\"}]},\"error_code\":null,\"error_info\":null}"
676 },
677 "status": {
678 "code": 200,
679 "message": "OK"
680 }
681 }
682 },
683 {
684 "request": {
685 "headers": {
686 "content-length": [
687 "765"
688 ],
689 "accept": [
690 "application/mercurial-0.1"
691 ],
692 "content-type": [
693 "application/x-www-form-urlencoded"
694 ],
695 "host": [
696 "phab.mercurial-scm.org"
697 ],
698 "user-agent": [
699 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
700 ]
701 },
702 "body": "__conduit__=1&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-rgriot6pr2ef72gyyljl%22%7D%2C+%7B%22type%22%3A+%22title%22%2C+%22value%22%3A+%22added+file%22%7D%2C+%7B%22type%22%3A+%22testPlan%22%2C+%22value%22%3A+%22LOL%21++What+testing%3F%21%5Cn%5CnHaha%21+yeah%2C+right.%22%7D%2C+%7B%22type%22%3A+%22summary%22%2C+%22value%22%3A+%22one%3A+first+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod1%27+as+its+contents.%5Cn%5Cntwo%3A+second+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod2%27+as+its+contents.%5Cn%5Cn3%3A+a+commit+with+no+detailed+message%5Cn%5Cnfour%3A+extend+the+fold+range%22%7D%5D%7D&output=json",
703 "uri": "https://phab.mercurial-scm.org//api/differential.revision.edit",
704 "method": "POST"
705 },
706 "response": {
707 "headers": {
708 "x-xss-protection": [
709 "1; mode=block"
710 ],
711 "strict-transport-security": [
712 "max-age=0; includeSubdomains; preload"
713 ],
714 "transfer-encoding": [
715 "chunked"
716 ],
717 "x-frame-options": [
718 "Deny"
719 ],
720 "expires": [
721 "Sat, 01 Jan 2000 00:00:00 GMT"
722 ],
723 "content-type": [
724 "application/json"
725 ],
726 "referrer-policy": [
727 "no-referrer"
728 ],
729 "server": [
730 "Apache/2.4.10 (Debian)"
731 ],
732 "cache-control": [
733 "no-store"
734 ],
735 "x-content-type-options": [
736 "nosniff"
737 ],
738 "date": [
739 "Wed, 08 Apr 2020 21:13:25 GMT"
740 ]
741 },
742 "body": {
743 "string": "{\"result\":{\"object\":{\"id\":8388,\"phid\":\"PHID-DREV-v5iywrnzj4h4uwo57pob\"},\"transactions\":[{\"phid\":\"PHID-XACT-DREV-dlqxlqkjwgga5ql\"},{\"phid\":\"PHID-XACT-DREV-wtmb3lqskq6o45p\"},{\"phid\":\"PHID-XACT-DREV-otuctsq34y7folr\"},{\"phid\":\"PHID-XACT-DREV-f5i6qgxl42cnu7c\"},{\"phid\":\"PHID-XACT-DREV-r773sn4ttwgm3hz\"},{\"phid\":\"PHID-XACT-DREV-rhu5nw6iwa4d2cz\"},{\"phid\":\"PHID-XACT-DREV-acc2lobcwf5ycb4\"}]},\"error_code\":null,\"error_info\":null}"
744 },
745 "status": {
746 "code": 200,
747 "message": "OK"
748 }
749 }
750 },
751 {
752 "request": {
753 "headers": {
754 "content-length": [
755 "146"
756 ],
757 "accept": [
758 "application/mercurial-0.1"
759 ],
760 "content-type": [
761 "application/x-www-form-urlencoded"
762 ],
763 "host": [
764 "phab.mercurial-scm.org"
765 ],
766 "user-agent": [
767 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
768 ]
769 },
770 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22ids%22%3A+%5B8388%5D%7D&output=json",
771 "uri": "https://phab.mercurial-scm.org//api/differential.query",
772 "method": "POST"
773 },
774 "response": {
775 "headers": {
776 "x-xss-protection": [
777 "1; mode=block"
778 ],
779 "strict-transport-security": [
780 "max-age=0; includeSubdomains; preload"
781 ],
782 "transfer-encoding": [
783 "chunked"
784 ],
785 "x-frame-options": [
786 "Deny"
787 ],
788 "expires": [
789 "Sat, 01 Jan 2000 00:00:00 GMT"
790 ],
791 "content-type": [
792 "application/json"
793 ],
794 "referrer-policy": [
795 "no-referrer"
796 ],
797 "server": [
798 "Apache/2.4.10 (Debian)"
799 ],
800 "cache-control": [
801 "no-store"
802 ],
803 "x-content-type-options": [
804 "nosniff"
805 ],
806 "date": [
807 "Wed, 08 Apr 2020 21:13:25 GMT"
808 ]
809 },
810 "body": {
811 "string": "{\"result\":[{\"id\":\"8388\",\"phid\":\"PHID-DREV-v5iywrnzj4h4uwo57pob\",\"title\":\"added file\",\"uri\":\"https:\\/\\/phab.mercurial-scm.org\\/D8388\",\"dateCreated\":\"1586380405\",\"dateModified\":\"1586380405\",\"authorPHID\":\"PHID-USER-tzhaient733lwrlbcag5\",\"status\":\"0\",\"statusName\":\"Needs Review\",\"properties\":{\"draft.broadcast\":true,\"lines.added\":2,\"lines.removed\":0},\"branch\":\"default\",\"summary\":\"one: first commit to review\\n\\nThis file was modified with 'mod1' as its contents.\\n\\ntwo: second commit to review\\n\\nThis file was modified with 'mod2' as its contents.\\n\\n3: a commit with no detailed message\\n\\nfour: extend the fold range\",\"testPlan\":\"LOL! What testing?!\\n\\nHaha! yeah, right.\",\"lineCount\":\"2\",\"activeDiffPHID\":\"PHID-DIFF-rgriot6pr2ef72gyyljl\",\"diffs\":[\"21010\"],\"commits\":[],\"reviewers\":{\"PHID-PROJ-3dvcxzznrjru2xmmses3\":\"PHID-PROJ-3dvcxzznrjru2xmmses3\"},\"ccs\":[\"PHID-USER-q42dn7cc3donqriafhjx\"],\"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\"],[\"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\"],[\"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\"],[\"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\"],[\"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-bvunnehri4u2isyr7bc3\",\"sourcePath\":\"\\/\"}],\"error_code\":null,\"error_info\":null}"
812 },
813 "status": {
814 "code": 200,
815 "message": "OK"
816 }
817 }
818 },
819 {
820 "request": {
821 "headers": {
822 "content-length": [
823 "482"
824 ],
825 "accept": [
826 "application/mercurial-0.1"
827 ],
828 "content-type": [
829 "application/x-www-form-urlencoded"
830 ],
831 "host": [
832 "phab.mercurial-scm.org"
833 ],
834 "user-agent": [
835 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
836 ]
837 },
838 "body": "__conduit__=1&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%22ac7db67f0991021fb38d3cbf31f5d605e694d3a9%5C%22%2C+%5C%22parent%5C%22%3A+%5C%220000000000000000000000000000000000000000%5C%22%2C+%5C%22user%5C%22%3A+%5C%22test%5C%22%7D%22%2C+%22diff_id%22%3A+21010%2C+%22name%22%3A+%22hg%3Ameta%22%7D&output=json",
839 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
840 "method": "POST"
841 },
842 "response": {
843 "headers": {
844 "x-xss-protection": [
845 "1; mode=block"
846 ],
847 "strict-transport-security": [
848 "max-age=0; includeSubdomains; preload"
849 ],
850 "transfer-encoding": [
851 "chunked"
852 ],
853 "x-frame-options": [
854 "Deny"
855 ],
856 "expires": [
857 "Sat, 01 Jan 2000 00:00:00 GMT"
858 ],
859 "content-type": [
860 "application/json"
861 ],
862 "referrer-policy": [
863 "no-referrer"
864 ],
865 "server": [
866 "Apache/2.4.10 (Debian)"
867 ],
868 "cache-control": [
869 "no-store"
870 ],
871 "x-content-type-options": [
872 "nosniff"
873 ],
874 "date": [
875 "Wed, 08 Apr 2020 21:13:26 GMT"
876 ],
877 "connection": [
878 "close"
879 ]
880 },
881 "body": {
882 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
883 },
884 "status": {
885 "code": 200,
886 "message": "OK"
887 }
888 }
889 },
890 {
891 "request": {
892 "headers": {
893 "content-length": [
894 "2130"
895 ],
896 "accept": [
897 "application/mercurial-0.1"
898 ],
899 "content-type": [
900 "application/x-www-form-urlencoded"
901 ],
902 "host": [
903 "phab.mercurial-scm.org"
904 ],
905 "user-agent": [
906 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
907 ]
908 },
909 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22data%22%3A+%22%7B%5C%2215e9b14b4b4c37ccd18298d058a184068718765e%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%2215e9b14b4b4c37ccd18298d058a184068718765e%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%220000000000000000000000000000000000000000%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%2230682b960804bd91823ea5ccb5d6a7d999f8d1ea%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%2230682b960804bd91823ea5ccb5d6a7d999f8d1ea%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%223ee132d41dbc24bf5a4df3e97573d6e922446565%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%223ee132d41dbc24bf5a4df3e97573d6e922446565%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%223ee132d41dbc24bf5a4df3e97573d6e922446565%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%226320b7d714cf2b2b71370eafeae29e2988d07872%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%226320b7d714cf2b2b71370eafeae29e2988d07872%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%226320b7d714cf2b2b71370eafeae29e2988d07872%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2215e9b14b4b4c37ccd18298d058a184068718765e%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22ac7db67f0991021fb38d3cbf31f5d605e694d3a9%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%22ac7db67f0991021fb38d3cbf31f5d605e694d3a9%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2230682b960804bd91823ea5ccb5d6a7d999f8d1ea%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%7D%22%2C+%22diff_id%22%3A+21010%2C+%22name%22%3A+%22local%3Acommits%22%7D&output=json",
910 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
911 "method": "POST"
912 },
913 "response": {
914 "headers": {
915 "x-xss-protection": [
916 "1; mode=block"
917 ],
918 "strict-transport-security": [
919 "max-age=0; includeSubdomains; preload"
920 ],
921 "transfer-encoding": [
922 "chunked"
923 ],
924 "x-frame-options": [
925 "Deny"
926 ],
927 "expires": [
928 "Sat, 01 Jan 2000 00:00:00 GMT"
929 ],
930 "content-type": [
931 "application/json"
932 ],
933 "referrer-policy": [
934 "no-referrer"
935 ],
936 "server": [
937 "Apache/2.4.10 (Debian)"
938 ],
939 "cache-control": [
940 "no-store"
941 ],
942 "x-content-type-options": [
943 "nosniff"
944 ],
945 "date": [
946 "Wed, 08 Apr 2020 21:13:26 GMT"
947 ]
948 },
949 "body": {
950 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
951 },
952 "status": {
953 "code": 200,
954 "message": "OK"
955 }
956 }
957 }
958 ],
959 "version": 1
960 } No newline at end of file
This diff has been collapsed as it changes many lines, (957 lines changed) Show them Hide them
@@ -0,0 +1,957
1 {
2 "interactions": [
3 {
4 "request": {
5 "headers": {
6 "content-length": [
7 "186"
8 ],
9 "accept": [
10 "application/mercurial-0.1"
11 ],
12 "content-type": [
13 "application/x-www-form-urlencoded"
14 ],
15 "host": [
16 "phab.mercurial-scm.org"
17 ],
18 "user-agent": [
19 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
20 ]
21 },
22 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22revisionIDs%22%3A+%5B8388%2C+8388%2C+8388%2C+8388%2C+8388%5D%7D&output=json",
23 "uri": "https://phab.mercurial-scm.org//api/differential.querydiffs",
24 "method": "POST"
25 },
26 "response": {
27 "headers": {
28 "x-xss-protection": [
29 "1; mode=block"
30 ],
31 "strict-transport-security": [
32 "max-age=0; includeSubdomains; preload"
33 ],
34 "transfer-encoding": [
35 "chunked"
36 ],
37 "x-frame-options": [
38 "Deny"
39 ],
40 "expires": [
41 "Sat, 01 Jan 2000 00:00:00 GMT"
42 ],
43 "content-type": [
44 "application/json"
45 ],
46 "referrer-policy": [
47 "no-referrer"
48 ],
49 "server": [
50 "Apache/2.4.10 (Debian)"
51 ],
52 "cache-control": [
53 "no-store"
54 ],
55 "x-content-type-options": [
56 "nosniff"
57 ],
58 "date": [
59 "Wed, 08 Apr 2020 21:13:36 GMT"
60 ]
61 },
62 "body": {
63 "string": "{\"result\":{\"21011\":{\"id\":\"21011\",\"revisionID\":\"8388\",\"dateCreated\":\"1586380410\",\"dateModified\":\"1586380414\",\"sourceControlBaseRevision\":\"0000000000000000000000000000000000000000\",\"sourceControlPath\":\"\\/\",\"sourceControlSystem\":\"hg\",\"branch\":\"default\",\"bookmark\":null,\"creationMethod\":\"phabsend\",\"description\":null,\"unitStatus\":\"0\",\"lintStatus\":\"0\",\"changes\":[{\"id\":\"56834\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"NiiVAF6I6ZTP\"},\"oldPath\":null,\"currentPath\":\"file3.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":{\"unix:filemode\":\"100644\"},\"type\":\"1\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"0\",\"hunks\":[{\"oldOffset\":\"0\",\"newOffset\":\"1\",\"oldLength\":\"0\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"+foo\\n\"}]},{\"id\":\"56833\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"fNX0XXem8Zx_\"},\"oldPath\":null,\"currentPath\":\"file2.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":{\"unix:filemode\":\"100644\"},\"type\":\"1\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"0\",\"hunks\":[{\"oldOffset\":\"0\",\"newOffset\":\"1\",\"oldLength\":\"0\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"+amended mod\\n\"}]},{\"id\":\"56832\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"cAKuVP31KNrx\"},\"oldPath\":null,\"currentPath\":\"file.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":{\"unix:filemode\":\"100644\"},\"type\":\"1\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"0\",\"hunks\":[{\"oldOffset\":\"0\",\"newOffset\":\"1\",\"oldLength\":\"0\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"+mod3\\n\"}]}],\"properties\":{\"hg:meta\":{\"branch\":\"default\",\"date\":\"0 0\",\"node\":\"b50946d5e4901d7f7801d572342ef90d06a85a85\",\"parent\":\"0000000000000000000000000000000000000000\",\"user\":\"test\"},\"local:commits\":{\"15e9b14b4b4c37ccd18298d058a184068718765e\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"15e9b14b4b4c37ccd18298d058a184068718765e\",\"parents\":[\"0000000000000000000000000000000000000000\"],\"time\":0},\"30682b960804bd91823ea5ccb5d6a7d999f8d1ea\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"30682b960804bd91823ea5ccb5d6a7d999f8d1ea\",\"parents\":[\"3ee132d41dbc24bf5a4df3e97573d6e922446565\"],\"time\":0},\"3ee132d41dbc24bf5a4df3e97573d6e922446565\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"3ee132d41dbc24bf5a4df3e97573d6e922446565\",\"parents\":[\"6320b7d714cf2b2b71370eafeae29e2988d07872\"],\"time\":0},\"6320b7d714cf2b2b71370eafeae29e2988d07872\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"6320b7d714cf2b2b71370eafeae29e2988d07872\",\"parents\":[\"15e9b14b4b4c37ccd18298d058a184068718765e\"],\"time\":0},\"6bc15dc99efd596be5908c187f68d6810671121e\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"6bc15dc99efd596be5908c187f68d6810671121e\",\"parents\":[\"30682b960804bd91823ea5ccb5d6a7d999f8d1ea\"],\"time\":0},\"b50946d5e4901d7f7801d572342ef90d06a85a85\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"b50946d5e4901d7f7801d572342ef90d06a85a85\",\"parents\":[\"6bc15dc99efd596be5908c187f68d6810671121e\"],\"time\":0}}},\"authorName\":\"test\",\"authorEmail\":\"test\"},\"21010\":{\"id\":\"21010\",\"revisionID\":\"8388\",\"dateCreated\":\"1586380401\",\"dateModified\":\"1586380405\",\"sourceControlBaseRevision\":\"0000000000000000000000000000000000000000\",\"sourceControlPath\":\"\\/\",\"sourceControlSystem\":\"hg\",\"branch\":\"default\",\"bookmark\":null,\"creationMethod\":\"phabsend\",\"description\":null,\"unitStatus\":\"0\",\"lintStatus\":\"0\",\"changes\":[{\"id\":\"56831\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"r1N4i770De9n\"},\"oldPath\":null,\"currentPath\":\"file2.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":{\"unix:filemode\":\"100644\"},\"type\":\"1\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"0\",\"hunks\":[{\"oldOffset\":\"0\",\"newOffset\":\"1\",\"oldLength\":\"0\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"+another mod\\n\"}]},{\"id\":\"56830\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"cAKuVP31KNrx\"},\"oldPath\":null,\"currentPath\":\"file.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":{\"unix:filemode\":\"100644\"},\"type\":\"1\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"0\",\"hunks\":[{\"oldOffset\":\"0\",\"newOffset\":\"1\",\"oldLength\":\"0\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"+mod3\\n\"}]}],\"properties\":{\"hg:meta\":{\"branch\":\"default\",\"date\":\"0 0\",\"node\":\"ac7db67f0991021fb38d3cbf31f5d605e694d3a9\",\"parent\":\"0000000000000000000000000000000000000000\",\"user\":\"test\"},\"local:commits\":{\"15e9b14b4b4c37ccd18298d058a184068718765e\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"15e9b14b4b4c37ccd18298d058a184068718765e\",\"parents\":[\"0000000000000000000000000000000000000000\"],\"time\":0},\"30682b960804bd91823ea5ccb5d6a7d999f8d1ea\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"30682b960804bd91823ea5ccb5d6a7d999f8d1ea\",\"parents\":[\"3ee132d41dbc24bf5a4df3e97573d6e922446565\"],\"time\":0},\"3ee132d41dbc24bf5a4df3e97573d6e922446565\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"3ee132d41dbc24bf5a4df3e97573d6e922446565\",\"parents\":[\"6320b7d714cf2b2b71370eafeae29e2988d07872\"],\"time\":0},\"6320b7d714cf2b2b71370eafeae29e2988d07872\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"6320b7d714cf2b2b71370eafeae29e2988d07872\",\"parents\":[\"15e9b14b4b4c37ccd18298d058a184068718765e\"],\"time\":0},\"ac7db67f0991021fb38d3cbf31f5d605e694d3a9\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"ac7db67f0991021fb38d3cbf31f5d605e694d3a9\",\"parents\":[\"30682b960804bd91823ea5ccb5d6a7d999f8d1ea\"],\"time\":0}}},\"authorName\":\"test\",\"authorEmail\":\"test\"}},\"error_code\":null,\"error_info\":null}"
64 },
65 "status": {
66 "code": 200,
67 "message": "OK"
68 }
69 }
70 },
71 {
72 "request": {
73 "headers": {
74 "content-length": [
75 "183"
76 ],
77 "accept": [
78 "application/mercurial-0.1"
79 ],
80 "content-type": [
81 "application/x-www-form-urlencoded"
82 ],
83 "host": [
84 "phab.mercurial-scm.org"
85 ],
86 "user-agent": [
87 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
88 ]
89 },
90 "body": "__conduit__=1&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",
91 "uri": "https://phab.mercurial-scm.org//api/diffusion.repository.search",
92 "method": "POST"
93 },
94 "response": {
95 "headers": {
96 "x-xss-protection": [
97 "1; mode=block"
98 ],
99 "strict-transport-security": [
100 "max-age=0; includeSubdomains; preload"
101 ],
102 "transfer-encoding": [
103 "chunked"
104 ],
105 "x-frame-options": [
106 "Deny"
107 ],
108 "expires": [
109 "Sat, 01 Jan 2000 00:00:00 GMT"
110 ],
111 "content-type": [
112 "application/json"
113 ],
114 "referrer-policy": [
115 "no-referrer"
116 ],
117 "server": [
118 "Apache/2.4.10 (Debian)"
119 ],
120 "cache-control": [
121 "no-store"
122 ],
123 "x-content-type-options": [
124 "nosniff"
125 ],
126 "date": [
127 "Wed, 08 Apr 2020 21:13:37 GMT"
128 ]
129 },
130 "body": {
131 "string": "{\"result\":{\"data\":[{\"id\":2,\"type\":\"REPO\",\"phid\":\"PHID-REPO-bvunnehri4u2isyr7bc3\",\"fields\":{\"name\":\"Mercurial\",\"vcs\":\"hg\",\"callsign\":\"HG\",\"shortName\":null,\"status\":\"active\",\"isImporting\":false,\"almanacServicePHID\":null,\"refRules\":{\"fetchRules\":[],\"trackRules\":[],\"permanentRefRules\":[]},\"spacePHID\":null,\"dateCreated\":1498761653,\"dateModified\":1500403184,\"policy\":{\"view\":\"public\",\"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}"
132 },
133 "status": {
134 "code": 200,
135 "message": "OK"
136 }
137 }
138 },
139 {
140 "request": {
141 "headers": {
142 "content-length": [
143 "2327"
144 ],
145 "accept": [
146 "application/mercurial-0.1"
147 ],
148 "content-type": [
149 "application/x-www-form-urlencoded"
150 ],
151 "host": [
152 "phab.mercurial-scm.org"
153 ],
154 "user-agent": [
155 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
156 ]
157 },
158 "body": "__conduit__=1&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%22file.txt%22%3A+%7B%22addLines%22%3A+1%2C+%22awayPaths%22%3A+%5B%5D%2C+%22commitHash%22%3A+null%2C+%22currentPath%22%3A+%22file.txt%22%2C+%22delLines%22%3A+0%2C+%22fileType%22%3A+1%2C+%22hunks%22%3A+%5B%7B%22addLines%22%3A+1%2C+%22corpus%22%3A+%22%2Bmod3%5Cn%22%2C+%22delLines%22%3A+0%2C+%22newLength%22%3A+1%2C+%22newOffset%22%3A+1%2C+%22oldLength%22%3A+0%2C+%22oldOffset%22%3A+0%7D%5D%2C+%22metadata%22%3A+%7B%7D%2C+%22newProperties%22%3A+%7B%22unix%3Afilemode%22%3A+%22100644%22%7D%2C+%22oldPath%22%3A+null%2C+%22oldProperties%22%3A+%7B%7D%2C+%22type%22%3A+1%7D%2C+%22file2.txt%22%3A+%7B%22addLines%22%3A+1%2C+%22awayPaths%22%3A+%5B%5D%2C+%22commitHash%22%3A+null%2C+%22currentPath%22%3A+%22file2.txt%22%2C+%22delLines%22%3A+0%2C+%22fileType%22%3A+1%2C+%22hunks%22%3A+%5B%7B%22addLines%22%3A+1%2C+%22corpus%22%3A+%22%2Bamended+mod%5Cn%22%2C+%22delLines%22%3A+0%2C+%22newLength%22%3A+1%2C+%22newOffset%22%3A+1%2C+%22oldLength%22%3A+0%2C+%22oldOffset%22%3A+0%7D%5D%2C+%22metadata%22%3A+%7B%7D%2C+%22newProperties%22%3A+%7B%22unix%3Afilemode%22%3A+%22100644%22%7D%2C+%22oldPath%22%3A+null%2C+%22oldProperties%22%3A+%7B%7D%2C+%22type%22%3A+1%7D%2C+%22file3.txt%22%3A+%7B%22addLines%22%3A+1%2C+%22awayPaths%22%3A+%5B%5D%2C+%22commitHash%22%3A+null%2C+%22currentPath%22%3A+%22file3.txt%22%2C+%22delLines%22%3A+0%2C+%22fileType%22%3A+1%2C+%22hunks%22%3A+%5B%7B%22addLines%22%3A+1%2C+%22corpus%22%3A+%22%2Bfoo%5Cn%22%2C+%22delLines%22%3A+0%2C+%22newLength%22%3A+1%2C+%22newOffset%22%3A+1%2C+%22oldLength%22%3A+0%2C+%22oldOffset%22%3A+0%7D%5D%2C+%22metadata%22%3A+%7B%7D%2C+%22newProperties%22%3A+%7B%22unix%3Afilemode%22%3A+%22100644%22%7D%2C+%22oldPath%22%3A+null%2C+%22oldProperties%22%3A+%7B%7D%2C+%22type%22%3A+1%7D%7D%2C+%22creationMethod%22%3A+%22phabsend%22%2C+%22lintStatus%22%3A+%22none%22%2C+%22repositoryPHID%22%3A+%22PHID-REPO-bvunnehri4u2isyr7bc3%22%2C+%22sourceControlBaseRevision%22%3A+%220000000000000000000000000000000000000000%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",
159 "uri": "https://phab.mercurial-scm.org//api/differential.creatediff",
160 "method": "POST"
161 },
162 "response": {
163 "headers": {
164 "x-xss-protection": [
165 "1; mode=block"
166 ],
167 "strict-transport-security": [
168 "max-age=0; includeSubdomains; preload"
169 ],
170 "transfer-encoding": [
171 "chunked"
172 ],
173 "x-frame-options": [
174 "Deny"
175 ],
176 "expires": [
177 "Sat, 01 Jan 2000 00:00:00 GMT"
178 ],
179 "content-type": [
180 "application/json"
181 ],
182 "referrer-policy": [
183 "no-referrer"
184 ],
185 "server": [
186 "Apache/2.4.10 (Debian)"
187 ],
188 "cache-control": [
189 "no-store"
190 ],
191 "x-content-type-options": [
192 "nosniff"
193 ],
194 "date": [
195 "Wed, 08 Apr 2020 21:13:37 GMT"
196 ]
197 },
198 "body": {
199 "string": "{\"result\":{\"diffid\":21012,\"phid\":\"PHID-DIFF-xfr3co4kuic6jeu3xbz4\",\"uri\":\"https:\\/\\/phab.mercurial-scm.org\\/differential\\/diff\\/21012\\/\"},\"error_code\":null,\"error_info\":null}"
200 },
201 "status": {
202 "code": 200,
203 "message": "OK"
204 }
205 }
206 },
207 {
208 "request": {
209 "headers": {
210 "content-length": [
211 "482"
212 ],
213 "accept": [
214 "application/mercurial-0.1"
215 ],
216 "content-type": [
217 "application/x-www-form-urlencoded"
218 ],
219 "host": [
220 "phab.mercurial-scm.org"
221 ],
222 "user-agent": [
223 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
224 ]
225 },
226 "body": "__conduit__=1&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%22e919cdf3d4fe9a926427b1961601eeaf4b4e2caf%5C%22%2C+%5C%22parent%5C%22%3A+%5C%220000000000000000000000000000000000000000%5C%22%2C+%5C%22user%5C%22%3A+%5C%22test%5C%22%7D%22%2C+%22diff_id%22%3A+21012%2C+%22name%22%3A+%22hg%3Ameta%22%7D&output=json",
227 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
228 "method": "POST"
229 },
230 "response": {
231 "headers": {
232 "x-xss-protection": [
233 "1; mode=block"
234 ],
235 "strict-transport-security": [
236 "max-age=0; includeSubdomains; preload"
237 ],
238 "transfer-encoding": [
239 "chunked"
240 ],
241 "x-frame-options": [
242 "Deny"
243 ],
244 "expires": [
245 "Sat, 01 Jan 2000 00:00:00 GMT"
246 ],
247 "content-type": [
248 "application/json"
249 ],
250 "referrer-policy": [
251 "no-referrer"
252 ],
253 "server": [
254 "Apache/2.4.10 (Debian)"
255 ],
256 "cache-control": [
257 "no-store"
258 ],
259 "x-content-type-options": [
260 "nosniff"
261 ],
262 "date": [
263 "Wed, 08 Apr 2020 21:13:38 GMT"
264 ]
265 },
266 "body": {
267 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
268 },
269 "status": {
270 "code": 200,
271 "message": "OK"
272 }
273 }
274 },
275 {
276 "request": {
277 "headers": {
278 "content-length": [
279 "2130"
280 ],
281 "accept": [
282 "application/mercurial-0.1"
283 ],
284 "content-type": [
285 "application/x-www-form-urlencoded"
286 ],
287 "host": [
288 "phab.mercurial-scm.org"
289 ],
290 "user-agent": [
291 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
292 ]
293 },
294 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22data%22%3A+%22%7B%5C%2215e9b14b4b4c37ccd18298d058a184068718765e%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%2215e9b14b4b4c37ccd18298d058a184068718765e%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%220000000000000000000000000000000000000000%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%2230682b960804bd91823ea5ccb5d6a7d999f8d1ea%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%2230682b960804bd91823ea5ccb5d6a7d999f8d1ea%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%223ee132d41dbc24bf5a4df3e97573d6e922446565%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%223ee132d41dbc24bf5a4df3e97573d6e922446565%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%223ee132d41dbc24bf5a4df3e97573d6e922446565%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%226320b7d714cf2b2b71370eafeae29e2988d07872%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%226320b7d714cf2b2b71370eafeae29e2988d07872%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%226320b7d714cf2b2b71370eafeae29e2988d07872%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2215e9b14b4b4c37ccd18298d058a184068718765e%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22e919cdf3d4fe9a926427b1961601eeaf4b4e2caf%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%22e919cdf3d4fe9a926427b1961601eeaf4b4e2caf%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2230682b960804bd91823ea5ccb5d6a7d999f8d1ea%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%7D%22%2C+%22diff_id%22%3A+21012%2C+%22name%22%3A+%22local%3Acommits%22%7D&output=json",
295 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
296 "method": "POST"
297 },
298 "response": {
299 "headers": {
300 "x-xss-protection": [
301 "1; mode=block"
302 ],
303 "strict-transport-security": [
304 "max-age=0; includeSubdomains; preload"
305 ],
306 "transfer-encoding": [
307 "chunked"
308 ],
309 "x-frame-options": [
310 "Deny"
311 ],
312 "expires": [
313 "Sat, 01 Jan 2000 00:00:00 GMT"
314 ],
315 "content-type": [
316 "application/json"
317 ],
318 "referrer-policy": [
319 "no-referrer"
320 ],
321 "server": [
322 "Apache/2.4.10 (Debian)"
323 ],
324 "cache-control": [
325 "no-store"
326 ],
327 "x-content-type-options": [
328 "nosniff"
329 ],
330 "date": [
331 "Wed, 08 Apr 2020 21:13:38 GMT"
332 ]
333 },
334 "body": {
335 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
336 },
337 "status": {
338 "code": 200,
339 "message": "OK"
340 }
341 }
342 },
343 {
344 "request": {
345 "headers": {
346 "content-length": [
347 "232"
348 ],
349 "accept": [
350 "application/mercurial-0.1"
351 ],
352 "content-type": [
353 "application/x-www-form-urlencoded"
354 ],
355 "host": [
356 "phab.mercurial-scm.org"
357 ],
358 "user-agent": [
359 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
360 ]
361 },
362 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22added+file%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8388%22%7D&output=json",
363 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
364 "method": "POST"
365 },
366 "response": {
367 "headers": {
368 "x-xss-protection": [
369 "1; mode=block"
370 ],
371 "strict-transport-security": [
372 "max-age=0; includeSubdomains; preload"
373 ],
374 "transfer-encoding": [
375 "chunked"
376 ],
377 "x-frame-options": [
378 "Deny"
379 ],
380 "expires": [
381 "Sat, 01 Jan 2000 00:00:00 GMT"
382 ],
383 "content-type": [
384 "application/json"
385 ],
386 "referrer-policy": [
387 "no-referrer"
388 ],
389 "server": [
390 "Apache/2.4.10 (Debian)"
391 ],
392 "cache-control": [
393 "no-store"
394 ],
395 "x-content-type-options": [
396 "nosniff"
397 ],
398 "date": [
399 "Wed, 08 Apr 2020 21:13:39 GMT"
400 ]
401 },
402 "body": {
403 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"added file\",\"revisionID\":8388},\"revisionIDFieldInfo\":{\"value\":8388,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"added file\"}]},\"error_code\":null,\"error_info\":null}"
404 },
405 "status": {
406 "code": 200,
407 "message": "OK"
408 }
409 }
410 },
411 {
412 "request": {
413 "headers": {
414 "content-length": [
415 "364"
416 ],
417 "accept": [
418 "application/mercurial-0.1"
419 ],
420 "content-type": [
421 "application/x-www-form-urlencoded"
422 ],
423 "host": [
424 "phab.mercurial-scm.org"
425 ],
426 "user-agent": [
427 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
428 ]
429 },
430 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22one%3A+first+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod1%27+as+its+contents.%5Cn%5CnTest+Plan%3A%5CnLOL%21++What+testing%3F%21%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8388%22%7D&output=json",
431 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
432 "method": "POST"
433 },
434 "response": {
435 "headers": {
436 "x-xss-protection": [
437 "1; mode=block"
438 ],
439 "strict-transport-security": [
440 "max-age=0; includeSubdomains; preload"
441 ],
442 "transfer-encoding": [
443 "chunked"
444 ],
445 "x-frame-options": [
446 "Deny"
447 ],
448 "expires": [
449 "Sat, 01 Jan 2000 00:00:00 GMT"
450 ],
451 "content-type": [
452 "application/json"
453 ],
454 "referrer-policy": [
455 "no-referrer"
456 ],
457 "server": [
458 "Apache/2.4.10 (Debian)"
459 ],
460 "cache-control": [
461 "no-store"
462 ],
463 "x-content-type-options": [
464 "nosniff"
465 ],
466 "date": [
467 "Wed, 08 Apr 2020 21:13:39 GMT"
468 ]
469 },
470 "body": {
471 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"one: first commit to review\",\"testPlan\":\"LOL! What testing?!\",\"revisionID\":8388,\"summary\":\"This file was modified with 'mod1' as its contents.\"},\"revisionIDFieldInfo\":{\"value\":8388,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"one: first commit to review\"},{\"type\":\"testPlan\",\"value\":\"LOL! What testing?!\"},{\"type\":\"summary\",\"value\":\"This file was modified with 'mod1' as its contents.\"}]},\"error_code\":null,\"error_info\":null}"
472 },
473 "status": {
474 "code": 200,
475 "message": "OK"
476 }
477 }
478 },
479 {
480 "request": {
481 "headers": {
482 "content-length": [
483 "361"
484 ],
485 "accept": [
486 "application/mercurial-0.1"
487 ],
488 "content-type": [
489 "application/x-www-form-urlencoded"
490 ],
491 "host": [
492 "phab.mercurial-scm.org"
493 ],
494 "user-agent": [
495 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
496 ]
497 },
498 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22two%3A+second+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod2%27+as+its+contents.%5Cn%5CnTest+Plan%3A%5CnHaha%21+yeah%2C+right.%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8388%22%7D&output=json",
499 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
500 "method": "POST"
501 },
502 "response": {
503 "headers": {
504 "x-xss-protection": [
505 "1; mode=block"
506 ],
507 "strict-transport-security": [
508 "max-age=0; includeSubdomains; preload"
509 ],
510 "transfer-encoding": [
511 "chunked"
512 ],
513 "x-frame-options": [
514 "Deny"
515 ],
516 "expires": [
517 "Sat, 01 Jan 2000 00:00:00 GMT"
518 ],
519 "content-type": [
520 "application/json"
521 ],
522 "referrer-policy": [
523 "no-referrer"
524 ],
525 "server": [
526 "Apache/2.4.10 (Debian)"
527 ],
528 "cache-control": [
529 "no-store"
530 ],
531 "x-content-type-options": [
532 "nosniff"
533 ],
534 "date": [
535 "Wed, 08 Apr 2020 21:13:40 GMT"
536 ]
537 },
538 "body": {
539 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"two: second commit to review\",\"testPlan\":\"Haha! yeah, right.\",\"revisionID\":8388,\"summary\":\"This file was modified with 'mod2' as its contents.\"},\"revisionIDFieldInfo\":{\"value\":8388,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"two: second commit to review\"},{\"type\":\"testPlan\",\"value\":\"Haha! yeah, right.\"},{\"type\":\"summary\",\"value\":\"This file was modified with 'mod2' as its contents.\"}]},\"error_code\":null,\"error_info\":null}"
540 },
541 "status": {
542 "code": 200,
543 "message": "OK"
544 }
545 }
546 },
547 {
548 "request": {
549 "headers": {
550 "content-length": [
551 "260"
552 ],
553 "accept": [
554 "application/mercurial-0.1"
555 ],
556 "content-type": [
557 "application/x-www-form-urlencoded"
558 ],
559 "host": [
560 "phab.mercurial-scm.org"
561 ],
562 "user-agent": [
563 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
564 ]
565 },
566 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%223%3A+a+commit+with+no+detailed+message%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8388%22%7D&output=json",
567 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
568 "method": "POST"
569 },
570 "response": {
571 "headers": {
572 "x-xss-protection": [
573 "1; mode=block"
574 ],
575 "strict-transport-security": [
576 "max-age=0; includeSubdomains; preload"
577 ],
578 "transfer-encoding": [
579 "chunked"
580 ],
581 "x-frame-options": [
582 "Deny"
583 ],
584 "expires": [
585 "Sat, 01 Jan 2000 00:00:00 GMT"
586 ],
587 "content-type": [
588 "application/json"
589 ],
590 "referrer-policy": [
591 "no-referrer"
592 ],
593 "server": [
594 "Apache/2.4.10 (Debian)"
595 ],
596 "cache-control": [
597 "no-store"
598 ],
599 "x-content-type-options": [
600 "nosniff"
601 ],
602 "date": [
603 "Wed, 08 Apr 2020 21:13:40 GMT"
604 ]
605 },
606 "body": {
607 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"3: a commit with no detailed message\",\"revisionID\":8388},\"revisionIDFieldInfo\":{\"value\":8388,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"3: a commit with no detailed message\"}]},\"error_code\":null,\"error_info\":null}"
608 },
609 "status": {
610 "code": 200,
611 "message": "OK"
612 }
613 }
614 },
615 {
616 "request": {
617 "headers": {
618 "content-length": [
619 "251"
620 ],
621 "accept": [
622 "application/mercurial-0.1"
623 ],
624 "content-type": [
625 "application/x-www-form-urlencoded"
626 ],
627 "host": [
628 "phab.mercurial-scm.org"
629 ],
630 "user-agent": [
631 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
632 ]
633 },
634 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22four%3A+extend+the+fold+range%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8388%22%7D&output=json",
635 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
636 "method": "POST"
637 },
638 "response": {
639 "headers": {
640 "x-xss-protection": [
641 "1; mode=block"
642 ],
643 "strict-transport-security": [
644 "max-age=0; includeSubdomains; preload"
645 ],
646 "transfer-encoding": [
647 "chunked"
648 ],
649 "x-frame-options": [
650 "Deny"
651 ],
652 "expires": [
653 "Sat, 01 Jan 2000 00:00:00 GMT"
654 ],
655 "content-type": [
656 "application/json"
657 ],
658 "referrer-policy": [
659 "no-referrer"
660 ],
661 "server": [
662 "Apache/2.4.10 (Debian)"
663 ],
664 "cache-control": [
665 "no-store"
666 ],
667 "x-content-type-options": [
668 "nosniff"
669 ],
670 "date": [
671 "Wed, 08 Apr 2020 21:13:40 GMT"
672 ]
673 },
674 "body": {
675 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"four: extend the fold range\",\"revisionID\":8388},\"revisionIDFieldInfo\":{\"value\":8388,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"four: extend the fold range\"}]},\"error_code\":null,\"error_info\":null}"
676 },
677 "status": {
678 "code": 200,
679 "message": "OK"
680 }
681 }
682 },
683 {
684 "request": {
685 "headers": {
686 "content-length": [
687 "799"
688 ],
689 "accept": [
690 "application/mercurial-0.1"
691 ],
692 "content-type": [
693 "application/x-www-form-urlencoded"
694 ],
695 "host": [
696 "phab.mercurial-scm.org"
697 ],
698 "user-agent": [
699 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
700 ]
701 },
702 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22objectIdentifier%22%3A+8388%2C+%22transactions%22%3A+%5B%7B%22type%22%3A+%22update%22%2C+%22value%22%3A+%22PHID-DIFF-xfr3co4kuic6jeu3xbz4%22%7D%2C+%7B%22type%22%3A+%22title%22%2C+%22value%22%3A+%22added+file%22%7D%2C+%7B%22type%22%3A+%22testPlan%22%2C+%22value%22%3A+%22LOL%21++What+testing%3F%21%5Cn%5CnHaha%21+yeah%2C+right.%22%7D%2C+%7B%22type%22%3A+%22summary%22%2C+%22value%22%3A+%22one%3A+first+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod1%27+as+its+contents.%5Cn%5Cntwo%3A+second+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod2%27+as+its+contents.%5Cn%5Cn3%3A+a+commit+with+no+detailed+message%5Cn%5Cnfour%3A+extend+the+fold+range%22%7D%5D%7D&output=json",
703 "uri": "https://phab.mercurial-scm.org//api/differential.revision.edit",
704 "method": "POST"
705 },
706 "response": {
707 "headers": {
708 "x-xss-protection": [
709 "1; mode=block"
710 ],
711 "strict-transport-security": [
712 "max-age=0; includeSubdomains; preload"
713 ],
714 "transfer-encoding": [
715 "chunked"
716 ],
717 "x-frame-options": [
718 "Deny"
719 ],
720 "expires": [
721 "Sat, 01 Jan 2000 00:00:00 GMT"
722 ],
723 "content-type": [
724 "application/json"
725 ],
726 "referrer-policy": [
727 "no-referrer"
728 ],
729 "server": [
730 "Apache/2.4.10 (Debian)"
731 ],
732 "cache-control": [
733 "no-store"
734 ],
735 "x-content-type-options": [
736 "nosniff"
737 ],
738 "date": [
739 "Wed, 08 Apr 2020 21:13:41 GMT"
740 ]
741 },
742 "body": {
743 "string": "{\"result\":{\"object\":{\"id\":8388,\"phid\":\"PHID-DREV-v5iywrnzj4h4uwo57pob\"},\"transactions\":[{\"phid\":\"PHID-XACT-DREV-6o5t2mriosy3fst\"},{\"phid\":\"PHID-XACT-DREV-m25qxnu4ok3w5y5\"}]},\"error_code\":null,\"error_info\":null}"
744 },
745 "status": {
746 "code": 200,
747 "message": "OK"
748 }
749 }
750 },
751 {
752 "request": {
753 "headers": {
754 "content-length": [
755 "146"
756 ],
757 "accept": [
758 "application/mercurial-0.1"
759 ],
760 "content-type": [
761 "application/x-www-form-urlencoded"
762 ],
763 "host": [
764 "phab.mercurial-scm.org"
765 ],
766 "user-agent": [
767 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
768 ]
769 },
770 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22ids%22%3A+%5B8388%5D%7D&output=json",
771 "uri": "https://phab.mercurial-scm.org//api/differential.query",
772 "method": "POST"
773 },
774 "response": {
775 "headers": {
776 "x-xss-protection": [
777 "1; mode=block"
778 ],
779 "strict-transport-security": [
780 "max-age=0; includeSubdomains; preload"
781 ],
782 "transfer-encoding": [
783 "chunked"
784 ],
785 "x-frame-options": [
786 "Deny"
787 ],
788 "expires": [
789 "Sat, 01 Jan 2000 00:00:00 GMT"
790 ],
791 "content-type": [
792 "application/json"
793 ],
794 "referrer-policy": [
795 "no-referrer"
796 ],
797 "server": [
798 "Apache/2.4.10 (Debian)"
799 ],
800 "cache-control": [
801 "no-store"
802 ],
803 "x-content-type-options": [
804 "nosniff"
805 ],
806 "date": [
807 "Wed, 08 Apr 2020 21:13:42 GMT"
808 ]
809 },
810 "body": {
811 "string": "{\"result\":[{\"id\":\"8388\",\"phid\":\"PHID-DREV-v5iywrnzj4h4uwo57pob\",\"title\":\"added file\",\"uri\":\"https:\\/\\/phab.mercurial-scm.org\\/D8388\",\"dateCreated\":\"1586380405\",\"dateModified\":\"1586380421\",\"authorPHID\":\"PHID-USER-tzhaient733lwrlbcag5\",\"status\":\"0\",\"statusName\":\"Needs Review\",\"properties\":{\"draft.broadcast\":true,\"lines.added\":3,\"lines.removed\":0},\"branch\":\"default\",\"summary\":\"one: first commit to review\\n\\nThis file was modified with 'mod1' as its contents.\\n\\ntwo: second commit to review\\n\\nThis file was modified with 'mod2' as its contents.\\n\\n3: a commit with no detailed message\\n\\nfour: extend the fold range\",\"testPlan\":\"LOL! What testing?!\\n\\nHaha! yeah, right.\",\"lineCount\":\"3\",\"activeDiffPHID\":\"PHID-DIFF-xfr3co4kuic6jeu3xbz4\",\"diffs\":[\"21012\",\"21011\",\"21010\"],\"commits\":[],\"reviewers\":{\"PHID-PROJ-3dvcxzznrjru2xmmses3\":\"PHID-PROJ-3dvcxzznrjru2xmmses3\"},\"ccs\":[\"PHID-USER-q42dn7cc3donqriafhjx\"],\"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\"],[\"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\"],[\"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\"],[\"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\"],[\"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-bvunnehri4u2isyr7bc3\",\"sourcePath\":\"\\/\"}],\"error_code\":null,\"error_info\":null}"
812 },
813 "status": {
814 "code": 200,
815 "message": "OK"
816 }
817 }
818 },
819 {
820 "request": {
821 "headers": {
822 "content-length": [
823 "482"
824 ],
825 "accept": [
826 "application/mercurial-0.1"
827 ],
828 "content-type": [
829 "application/x-www-form-urlencoded"
830 ],
831 "host": [
832 "phab.mercurial-scm.org"
833 ],
834 "user-agent": [
835 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
836 ]
837 },
838 "body": "__conduit__=1&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%22e919cdf3d4fe9a926427b1961601eeaf4b4e2caf%5C%22%2C+%5C%22parent%5C%22%3A+%5C%220000000000000000000000000000000000000000%5C%22%2C+%5C%22user%5C%22%3A+%5C%22test%5C%22%7D%22%2C+%22diff_id%22%3A+21012%2C+%22name%22%3A+%22hg%3Ameta%22%7D&output=json",
839 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
840 "method": "POST"
841 },
842 "response": {
843 "headers": {
844 "x-xss-protection": [
845 "1; mode=block"
846 ],
847 "strict-transport-security": [
848 "max-age=0; includeSubdomains; preload"
849 ],
850 "transfer-encoding": [
851 "chunked"
852 ],
853 "x-frame-options": [
854 "Deny"
855 ],
856 "expires": [
857 "Sat, 01 Jan 2000 00:00:00 GMT"
858 ],
859 "content-type": [
860 "application/json"
861 ],
862 "referrer-policy": [
863 "no-referrer"
864 ],
865 "server": [
866 "Apache/2.4.10 (Debian)"
867 ],
868 "cache-control": [
869 "no-store"
870 ],
871 "x-content-type-options": [
872 "nosniff"
873 ],
874 "date": [
875 "Wed, 08 Apr 2020 21:13:42 GMT"
876 ]
877 },
878 "body": {
879 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
880 },
881 "status": {
882 "code": 200,
883 "message": "OK"
884 }
885 }
886 },
887 {
888 "request": {
889 "headers": {
890 "content-length": [
891 "2130"
892 ],
893 "accept": [
894 "application/mercurial-0.1"
895 ],
896 "content-type": [
897 "application/x-www-form-urlencoded"
898 ],
899 "host": [
900 "phab.mercurial-scm.org"
901 ],
902 "user-agent": [
903 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
904 ]
905 },
906 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22data%22%3A+%22%7B%5C%2215e9b14b4b4c37ccd18298d058a184068718765e%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%2215e9b14b4b4c37ccd18298d058a184068718765e%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%220000000000000000000000000000000000000000%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%2230682b960804bd91823ea5ccb5d6a7d999f8d1ea%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%2230682b960804bd91823ea5ccb5d6a7d999f8d1ea%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%223ee132d41dbc24bf5a4df3e97573d6e922446565%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%223ee132d41dbc24bf5a4df3e97573d6e922446565%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%223ee132d41dbc24bf5a4df3e97573d6e922446565%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%226320b7d714cf2b2b71370eafeae29e2988d07872%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%226320b7d714cf2b2b71370eafeae29e2988d07872%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%226320b7d714cf2b2b71370eafeae29e2988d07872%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2215e9b14b4b4c37ccd18298d058a184068718765e%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22e919cdf3d4fe9a926427b1961601eeaf4b4e2caf%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%22e919cdf3d4fe9a926427b1961601eeaf4b4e2caf%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2230682b960804bd91823ea5ccb5d6a7d999f8d1ea%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%7D%22%2C+%22diff_id%22%3A+21012%2C+%22name%22%3A+%22local%3Acommits%22%7D&output=json",
907 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
908 "method": "POST"
909 },
910 "response": {
911 "headers": {
912 "x-xss-protection": [
913 "1; mode=block"
914 ],
915 "strict-transport-security": [
916 "max-age=0; includeSubdomains; preload"
917 ],
918 "transfer-encoding": [
919 "chunked"
920 ],
921 "x-frame-options": [
922 "Deny"
923 ],
924 "expires": [
925 "Sat, 01 Jan 2000 00:00:00 GMT"
926 ],
927 "content-type": [
928 "application/json"
929 ],
930 "referrer-policy": [
931 "no-referrer"
932 ],
933 "server": [
934 "Apache/2.4.10 (Debian)"
935 ],
936 "cache-control": [
937 "no-store"
938 ],
939 "x-content-type-options": [
940 "nosniff"
941 ],
942 "date": [
943 "Wed, 08 Apr 2020 21:13:42 GMT"
944 ]
945 },
946 "body": {
947 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
948 },
949 "status": {
950 "code": 200,
951 "message": "OK"
952 }
953 }
954 }
955 ],
956 "version": 1
957 } No newline at end of file
This diff has been collapsed as it changes many lines, (617 lines changed) Show them Hide them
@@ -0,0 +1,617
1 {
2 "interactions": [
3 {
4 "request": {
5 "headers": {
6 "content-length": [
7 "183"
8 ],
9 "accept": [
10 "application/mercurial-0.1"
11 ],
12 "content-type": [
13 "application/x-www-form-urlencoded"
14 ],
15 "host": [
16 "phab.mercurial-scm.org"
17 ],
18 "user-agent": [
19 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
20 ]
21 },
22 "body": "__conduit__=1&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",
23 "uri": "https://phab.mercurial-scm.org//api/diffusion.repository.search",
24 "method": "POST"
25 },
26 "response": {
27 "headers": {
28 "x-xss-protection": [
29 "1; mode=block"
30 ],
31 "strict-transport-security": [
32 "max-age=0; includeSubdomains; preload"
33 ],
34 "transfer-encoding": [
35 "chunked"
36 ],
37 "x-frame-options": [
38 "Deny"
39 ],
40 "expires": [
41 "Sat, 01 Jan 2000 00:00:00 GMT"
42 ],
43 "content-type": [
44 "application/json"
45 ],
46 "referrer-policy": [
47 "no-referrer"
48 ],
49 "server": [
50 "Apache/2.4.10 (Debian)"
51 ],
52 "cache-control": [
53 "no-store"
54 ],
55 "x-content-type-options": [
56 "nosniff"
57 ],
58 "date": [
59 "Wed, 08 Apr 2020 21:12:49 GMT"
60 ]
61 },
62 "body": {
63 "string": "{\"result\":{\"data\":[{\"id\":2,\"type\":\"REPO\",\"phid\":\"PHID-REPO-bvunnehri4u2isyr7bc3\",\"fields\":{\"name\":\"Mercurial\",\"vcs\":\"hg\",\"callsign\":\"HG\",\"shortName\":null,\"status\":\"active\",\"isImporting\":false,\"almanacServicePHID\":null,\"refRules\":{\"fetchRules\":[],\"trackRules\":[],\"permanentRefRules\":[]},\"spacePHID\":null,\"dateCreated\":1498761653,\"dateModified\":1500403184,\"policy\":{\"view\":\"public\",\"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}"
64 },
65 "status": {
66 "code": 200,
67 "message": "OK"
68 }
69 }
70 },
71 {
72 "request": {
73 "headers": {
74 "content-length": [
75 "1160"
76 ],
77 "accept": [
78 "application/mercurial-0.1"
79 ],
80 "content-type": [
81 "application/x-www-form-urlencoded"
82 ],
83 "host": [
84 "phab.mercurial-scm.org"
85 ],
86 "user-agent": [
87 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
88 ]
89 },
90 "body": "__conduit__=1&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%22file.txt%22%3A+%7B%22addLines%22%3A+1%2C+%22awayPaths%22%3A+%5B%5D%2C+%22commitHash%22%3A+null%2C+%22currentPath%22%3A+%22file.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-added%5Cn%2Bmod3%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+%22file.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-bvunnehri4u2isyr7bc3%22%2C+%22sourceControlBaseRevision%22%3A+%2298d480e0d494906d9758c44c622951b429afd862%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",
91 "uri": "https://phab.mercurial-scm.org//api/differential.creatediff",
92 "method": "POST"
93 },
94 "response": {
95 "headers": {
96 "x-xss-protection": [
97 "1; mode=block"
98 ],
99 "strict-transport-security": [
100 "max-age=0; includeSubdomains; preload"
101 ],
102 "transfer-encoding": [
103 "chunked"
104 ],
105 "x-frame-options": [
106 "Deny"
107 ],
108 "expires": [
109 "Sat, 01 Jan 2000 00:00:00 GMT"
110 ],
111 "content-type": [
112 "application/json"
113 ],
114 "referrer-policy": [
115 "no-referrer"
116 ],
117 "server": [
118 "Apache/2.4.10 (Debian)"
119 ],
120 "cache-control": [
121 "no-store"
122 ],
123 "x-content-type-options": [
124 "nosniff"
125 ],
126 "date": [
127 "Wed, 08 Apr 2020 21:12:50 GMT"
128 ]
129 },
130 "body": {
131 "string": "{\"result\":{\"diffid\":21005,\"phid\":\"PHID-DIFF-wsgu5klkhfav5w7whedy\",\"uri\":\"https:\\/\\/phab.mercurial-scm.org\\/differential\\/diff\\/21005\\/\"},\"error_code\":null,\"error_info\":null}"
132 },
133 "status": {
134 "code": 200,
135 "message": "OK"
136 }
137 }
138 },
139 {
140 "request": {
141 "headers": {
142 "content-length": [
143 "482"
144 ],
145 "accept": [
146 "application/mercurial-0.1"
147 ],
148 "content-type": [
149 "application/x-www-form-urlencoded"
150 ],
151 "host": [
152 "phab.mercurial-scm.org"
153 ],
154 "user-agent": [
155 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
156 ]
157 },
158 "body": "__conduit__=1&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%22d235829e802c98c0171dac4a265b4b9bad07093a%5C%22%2C+%5C%22parent%5C%22%3A+%5C%2298d480e0d494906d9758c44c622951b429afd862%5C%22%2C+%5C%22user%5C%22%3A+%5C%22test%5C%22%7D%22%2C+%22diff_id%22%3A+21005%2C+%22name%22%3A+%22hg%3Ameta%22%7D&output=json",
159 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
160 "method": "POST"
161 },
162 "response": {
163 "headers": {
164 "x-xss-protection": [
165 "1; mode=block"
166 ],
167 "strict-transport-security": [
168 "max-age=0; includeSubdomains; preload"
169 ],
170 "transfer-encoding": [
171 "chunked"
172 ],
173 "x-frame-options": [
174 "Deny"
175 ],
176 "expires": [
177 "Sat, 01 Jan 2000 00:00:00 GMT"
178 ],
179 "content-type": [
180 "application/json"
181 ],
182 "referrer-policy": [
183 "no-referrer"
184 ],
185 "server": [
186 "Apache/2.4.10 (Debian)"
187 ],
188 "cache-control": [
189 "no-store"
190 ],
191 "x-content-type-options": [
192 "nosniff"
193 ],
194 "date": [
195 "Wed, 08 Apr 2020 21:12:50 GMT"
196 ]
197 },
198 "body": {
199 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
200 },
201 "status": {
202 "code": 200,
203 "message": "OK"
204 }
205 }
206 },
207 {
208 "request": {
209 "headers": {
210 "content-length": [
211 "1362"
212 ],
213 "accept": [
214 "application/mercurial-0.1"
215 ],
216 "content-type": [
217 "application/x-www-form-urlencoded"
218 ],
219 "host": [
220 "phab.mercurial-scm.org"
221 ],
222 "user-agent": [
223 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
224 ]
225 },
226 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22data%22%3A+%22%7B%5C%2224a4438154bad90603d53a4dd31d8daff7844b36%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%2224a4438154bad90603d53a4dd31d8daff7844b36%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%22a959a3f69d8d498d96102cda0bc03ed89706891e%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22a959a3f69d8d498d96102cda0bc03ed89706891e%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%22a959a3f69d8d498d96102cda0bc03ed89706891e%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2298d480e0d494906d9758c44c622951b429afd862%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22d235829e802c98c0171dac4a265b4b9bad07093a%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%22d235829e802c98c0171dac4a265b4b9bad07093a%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2224a4438154bad90603d53a4dd31d8daff7844b36%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%7D%22%2C+%22diff_id%22%3A+21005%2C+%22name%22%3A+%22local%3Acommits%22%7D&output=json",
227 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
228 "method": "POST"
229 },
230 "response": {
231 "headers": {
232 "x-xss-protection": [
233 "1; mode=block"
234 ],
235 "strict-transport-security": [
236 "max-age=0; includeSubdomains; preload"
237 ],
238 "transfer-encoding": [
239 "chunked"
240 ],
241 "x-frame-options": [
242 "Deny"
243 ],
244 "expires": [
245 "Sat, 01 Jan 2000 00:00:00 GMT"
246 ],
247 "content-type": [
248 "application/json"
249 ],
250 "referrer-policy": [
251 "no-referrer"
252 ],
253 "server": [
254 "Apache/2.4.10 (Debian)"
255 ],
256 "cache-control": [
257 "no-store"
258 ],
259 "x-content-type-options": [
260 "nosniff"
261 ],
262 "date": [
263 "Wed, 08 Apr 2020 21:12:50 GMT"
264 ]
265 },
266 "body": {
267 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
268 },
269 "status": {
270 "code": 200,
271 "message": "OK"
272 }
273 }
274 },
275 {
276 "request": {
277 "headers": {
278 "content-length": [
279 "287"
280 ],
281 "accept": [
282 "application/mercurial-0.1"
283 ],
284 "content-type": [
285 "application/x-www-form-urlencoded"
286 ],
287 "host": [
288 "phab.mercurial-scm.org"
289 ],
290 "user-agent": [
291 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
292 ]
293 },
294 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22one%3A+first+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod1%27+as+its+contents.%5Cn%5CnTest+Plan%3A%5CnLOL%21++What+testing%3F%21%22%7D&output=json",
295 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
296 "method": "POST"
297 },
298 "response": {
299 "headers": {
300 "x-xss-protection": [
301 "1; mode=block"
302 ],
303 "strict-transport-security": [
304 "max-age=0; includeSubdomains; preload"
305 ],
306 "transfer-encoding": [
307 "chunked"
308 ],
309 "x-frame-options": [
310 "Deny"
311 ],
312 "expires": [
313 "Sat, 01 Jan 2000 00:00:00 GMT"
314 ],
315 "content-type": [
316 "application/json"
317 ],
318 "referrer-policy": [
319 "no-referrer"
320 ],
321 "server": [
322 "Apache/2.4.10 (Debian)"
323 ],
324 "cache-control": [
325 "no-store"
326 ],
327 "x-content-type-options": [
328 "nosniff"
329 ],
330 "date": [
331 "Wed, 08 Apr 2020 21:12:51 GMT"
332 ]
333 },
334 "body": {
335 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"one: first commit to review\",\"testPlan\":\"LOL! What testing?!\",\"summary\":\"This file was modified with 'mod1' as its contents.\"},\"revisionIDFieldInfo\":{\"value\":null,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"one: first commit to review\"},{\"type\":\"testPlan\",\"value\":\"LOL! What testing?!\"},{\"type\":\"summary\",\"value\":\"This file was modified with 'mod1' as its contents.\"}]},\"error_code\":null,\"error_info\":null}"
336 },
337 "status": {
338 "code": 200,
339 "message": "OK"
340 }
341 }
342 },
343 {
344 "request": {
345 "headers": {
346 "content-length": [
347 "284"
348 ],
349 "accept": [
350 "application/mercurial-0.1"
351 ],
352 "content-type": [
353 "application/x-www-form-urlencoded"
354 ],
355 "host": [
356 "phab.mercurial-scm.org"
357 ],
358 "user-agent": [
359 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
360 ]
361 },
362 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22two%3A+second+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod2%27+as+its+contents.%5Cn%5CnTest+Plan%3A%5CnHaha%21+yeah%2C+right.%22%7D&output=json",
363 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
364 "method": "POST"
365 },
366 "response": {
367 "headers": {
368 "x-xss-protection": [
369 "1; mode=block"
370 ],
371 "strict-transport-security": [
372 "max-age=0; includeSubdomains; preload"
373 ],
374 "transfer-encoding": [
375 "chunked"
376 ],
377 "x-frame-options": [
378 "Deny"
379 ],
380 "expires": [
381 "Sat, 01 Jan 2000 00:00:00 GMT"
382 ],
383 "content-type": [
384 "application/json"
385 ],
386 "referrer-policy": [
387 "no-referrer"
388 ],
389 "server": [
390 "Apache/2.4.10 (Debian)"
391 ],
392 "cache-control": [
393 "no-store"
394 ],
395 "x-content-type-options": [
396 "nosniff"
397 ],
398 "date": [
399 "Wed, 08 Apr 2020 21:12:51 GMT"
400 ]
401 },
402 "body": {
403 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"two: second commit to review\",\"testPlan\":\"Haha! yeah, right.\",\"summary\":\"This file was modified with 'mod2' as its contents.\"},\"revisionIDFieldInfo\":{\"value\":null,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"two: second commit to review\"},{\"type\":\"testPlan\",\"value\":\"Haha! yeah, right.\"},{\"type\":\"summary\",\"value\":\"This file was modified with 'mod2' as its contents.\"}]},\"error_code\":null,\"error_info\":null}"
404 },
405 "status": {
406 "code": 200,
407 "message": "OK"
408 }
409 }
410 },
411 {
412 "request": {
413 "headers": {
414 "content-length": [
415 "183"
416 ],
417 "accept": [
418 "application/mercurial-0.1"
419 ],
420 "content-type": [
421 "application/x-www-form-urlencoded"
422 ],
423 "host": [
424 "phab.mercurial-scm.org"
425 ],
426 "user-agent": [
427 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
428 ]
429 },
430 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%223%3A+a+commit+with+no+detailed+message%22%7D&output=json",
431 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
432 "method": "POST"
433 },
434 "response": {
435 "headers": {
436 "x-xss-protection": [
437 "1; mode=block"
438 ],
439 "strict-transport-security": [
440 "max-age=0; includeSubdomains; preload"
441 ],
442 "transfer-encoding": [
443 "chunked"
444 ],
445 "x-frame-options": [
446 "Deny"
447 ],
448 "expires": [
449 "Sat, 01 Jan 2000 00:00:00 GMT"
450 ],
451 "content-type": [
452 "application/json"
453 ],
454 "referrer-policy": [
455 "no-referrer"
456 ],
457 "server": [
458 "Apache/2.4.10 (Debian)"
459 ],
460 "cache-control": [
461 "no-store"
462 ],
463 "x-content-type-options": [
464 "nosniff"
465 ],
466 "date": [
467 "Wed, 08 Apr 2020 21:12:52 GMT"
468 ]
469 },
470 "body": {
471 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"3: a commit with no detailed message\"},\"revisionIDFieldInfo\":{\"value\":null,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"3: a commit with no detailed message\"}]},\"error_code\":null,\"error_info\":null}"
472 },
473 "status": {
474 "code": 200,
475 "message": "OK"
476 }
477 }
478 },
479 {
480 "request": {
481 "headers": {
482 "content-length": [
483 "710"
484 ],
485 "accept": [
486 "application/mercurial-0.1"
487 ],
488 "content-type": [
489 "application/x-www-form-urlencoded"
490 ],
491 "host": [
492 "phab.mercurial-scm.org"
493 ],
494 "user-agent": [
495 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
496 ]
497 },
498 "body": "__conduit__=1&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-wsgu5klkhfav5w7whedy%22%7D%2C+%7B%22type%22%3A+%22title%22%2C+%22value%22%3A+%22one%3A+first+commit+to+review%22%7D%2C+%7B%22type%22%3A+%22testPlan%22%2C+%22value%22%3A+%22LOL%21++What+testing%3F%21%5Cn%5CnHaha%21+yeah%2C+right.%22%7D%2C+%7B%22type%22%3A+%22summary%22%2C+%22value%22%3A+%22This+file+was+modified+with+%27mod1%27+as+its+contents.%5Cn%5Cntwo%3A+second+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod2%27+as+its+contents.%5Cn%5Cn3%3A+a+commit+with+no+detailed+message%22%7D%5D%7D&output=json",
499 "uri": "https://phab.mercurial-scm.org//api/differential.revision.edit",
500 "method": "POST"
501 },
502 "response": {
503 "headers": {
504 "x-xss-protection": [
505 "1; mode=block"
506 ],
507 "strict-transport-security": [
508 "max-age=0; includeSubdomains; preload"
509 ],
510 "transfer-encoding": [
511 "chunked"
512 ],
513 "x-frame-options": [
514 "Deny"
515 ],
516 "expires": [
517 "Sat, 01 Jan 2000 00:00:00 GMT"
518 ],
519 "content-type": [
520 "application/json"
521 ],
522 "referrer-policy": [
523 "no-referrer"
524 ],
525 "server": [
526 "Apache/2.4.10 (Debian)"
527 ],
528 "cache-control": [
529 "no-store"
530 ],
531 "x-content-type-options": [
532 "nosniff"
533 ],
534 "date": [
535 "Wed, 08 Apr 2020 21:12:52 GMT"
536 ]
537 },
538 "body": {
539 "string": "{\"result\":{\"object\":{\"id\":8386,\"phid\":\"PHID-DREV-vljbu77pqc7mc7kbjtda\"},\"transactions\":[{\"phid\":\"PHID-XACT-DREV-53554u7xxma5ilf\"},{\"phid\":\"PHID-XACT-DREV-uuawwpix7ys5h2o\"},{\"phid\":\"PHID-XACT-DREV-ayqnuzfys4wwult\"},{\"phid\":\"PHID-XACT-DREV-7cwnl5hsynwvae4\"},{\"phid\":\"PHID-XACT-DREV-q2g3p7fuwk2eldg\"},{\"phid\":\"PHID-XACT-DREV-32j4eonnv72por3\"},{\"phid\":\"PHID-XACT-DREV-h4hqh7acick3f6t\"}]},\"error_code\":null,\"error_info\":null}"
540 },
541 "status": {
542 "code": 200,
543 "message": "OK"
544 }
545 }
546 },
547 {
548 "request": {
549 "headers": {
550 "content-length": [
551 "146"
552 ],
553 "accept": [
554 "application/mercurial-0.1"
555 ],
556 "content-type": [
557 "application/x-www-form-urlencoded"
558 ],
559 "host": [
560 "phab.mercurial-scm.org"
561 ],
562 "user-agent": [
563 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
564 ]
565 },
566 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22ids%22%3A+%5B8386%5D%7D&output=json",
567 "uri": "https://phab.mercurial-scm.org//api/differential.query",
568 "method": "POST"
569 },
570 "response": {
571 "headers": {
572 "x-xss-protection": [
573 "1; mode=block"
574 ],
575 "strict-transport-security": [
576 "max-age=0; includeSubdomains; preload"
577 ],
578 "transfer-encoding": [
579 "chunked"
580 ],
581 "x-frame-options": [
582 "Deny"
583 ],
584 "expires": [
585 "Sat, 01 Jan 2000 00:00:00 GMT"
586 ],
587 "content-type": [
588 "application/json"
589 ],
590 "referrer-policy": [
591 "no-referrer"
592 ],
593 "server": [
594 "Apache/2.4.10 (Debian)"
595 ],
596 "cache-control": [
597 "no-store"
598 ],
599 "x-content-type-options": [
600 "nosniff"
601 ],
602 "date": [
603 "Wed, 08 Apr 2020 21:12:53 GMT"
604 ]
605 },
606 "body": {
607 "string": "{\"result\":[{\"id\":\"8386\",\"phid\":\"PHID-DREV-vljbu77pqc7mc7kbjtda\",\"title\":\"one: first commit to review\",\"uri\":\"https:\\/\\/phab.mercurial-scm.org\\/D8386\",\"dateCreated\":\"1586380372\",\"dateModified\":\"1586380372\",\"authorPHID\":\"PHID-USER-tzhaient733lwrlbcag5\",\"status\":\"0\",\"statusName\":\"Needs Review\",\"properties\":{\"draft.broadcast\":true,\"lines.added\":1,\"lines.removed\":1},\"branch\":\"default\",\"summary\":\"This file was modified with 'mod1' as its contents.\\n\\ntwo: second commit to review\\n\\nThis file was modified with 'mod2' as its contents.\\n\\n3: a commit with no detailed message\",\"testPlan\":\"LOL! What testing?!\\n\\nHaha! yeah, right.\",\"lineCount\":\"2\",\"activeDiffPHID\":\"PHID-DIFF-wsgu5klkhfav5w7whedy\",\"diffs\":[\"21005\"],\"commits\":[],\"reviewers\":{\"PHID-PROJ-3dvcxzznrjru2xmmses3\":\"PHID-PROJ-3dvcxzznrjru2xmmses3\"},\"ccs\":[\"PHID-USER-q42dn7cc3donqriafhjx\"],\"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\"],[\"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\"],[\"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-bvunnehri4u2isyr7bc3\",\"sourcePath\":\"\\/\"}],\"error_code\":null,\"error_info\":null}"
608 },
609 "status": {
610 "code": 200,
611 "message": "OK"
612 }
613 }
614 }
615 ],
616 "version": 1
617 } No newline at end of file
This diff has been collapsed as it changes many lines, (753 lines changed) Show them Hide them
@@ -0,0 +1,753
1 {
2 "interactions": [
3 {
4 "request": {
5 "headers": {
6 "content-length": [
7 "183"
8 ],
9 "accept": [
10 "application/mercurial-0.1"
11 ],
12 "content-type": [
13 "application/x-www-form-urlencoded"
14 ],
15 "host": [
16 "phab.mercurial-scm.org"
17 ],
18 "user-agent": [
19 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
20 ]
21 },
22 "body": "__conduit__=1&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",
23 "uri": "https://phab.mercurial-scm.org//api/diffusion.repository.search",
24 "method": "POST"
25 },
26 "response": {
27 "headers": {
28 "x-xss-protection": [
29 "1; mode=block"
30 ],
31 "strict-transport-security": [
32 "max-age=0; includeSubdomains; preload"
33 ],
34 "transfer-encoding": [
35 "chunked"
36 ],
37 "x-frame-options": [
38 "Deny"
39 ],
40 "expires": [
41 "Sat, 01 Jan 2000 00:00:00 GMT"
42 ],
43 "content-type": [
44 "application/json"
45 ],
46 "referrer-policy": [
47 "no-referrer"
48 ],
49 "server": [
50 "Apache/2.4.10 (Debian)"
51 ],
52 "cache-control": [
53 "no-store"
54 ],
55 "x-content-type-options": [
56 "nosniff"
57 ],
58 "date": [
59 "Wed, 08 Apr 2020 21:12:54 GMT"
60 ]
61 },
62 "body": {
63 "string": "{\"result\":{\"data\":[{\"id\":2,\"type\":\"REPO\",\"phid\":\"PHID-REPO-bvunnehri4u2isyr7bc3\",\"fields\":{\"name\":\"Mercurial\",\"vcs\":\"hg\",\"callsign\":\"HG\",\"shortName\":null,\"status\":\"active\",\"isImporting\":false,\"almanacServicePHID\":null,\"refRules\":{\"fetchRules\":[],\"trackRules\":[],\"permanentRefRules\":[]},\"spacePHID\":null,\"dateCreated\":1498761653,\"dateModified\":1500403184,\"policy\":{\"view\":\"public\",\"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}"
64 },
65 "status": {
66 "code": 200,
67 "message": "OK"
68 }
69 }
70 },
71 {
72 "request": {
73 "headers": {
74 "content-length": [
75 "1160"
76 ],
77 "accept": [
78 "application/mercurial-0.1"
79 ],
80 "content-type": [
81 "application/x-www-form-urlencoded"
82 ],
83 "host": [
84 "phab.mercurial-scm.org"
85 ],
86 "user-agent": [
87 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
88 ]
89 },
90 "body": "__conduit__=1&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%22file.txt%22%3A+%7B%22addLines%22%3A+1%2C+%22awayPaths%22%3A+%5B%5D%2C+%22commitHash%22%3A+null%2C+%22currentPath%22%3A+%22file.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-added%5Cn%2Bmod3%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+%22file.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-bvunnehri4u2isyr7bc3%22%2C+%22sourceControlBaseRevision%22%3A+%2298d480e0d494906d9758c44c622951b429afd862%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",
91 "uri": "https://phab.mercurial-scm.org//api/differential.creatediff",
92 "method": "POST"
93 },
94 "response": {
95 "headers": {
96 "x-xss-protection": [
97 "1; mode=block"
98 ],
99 "strict-transport-security": [
100 "max-age=0; includeSubdomains; preload"
101 ],
102 "transfer-encoding": [
103 "chunked"
104 ],
105 "x-frame-options": [
106 "Deny"
107 ],
108 "expires": [
109 "Sat, 01 Jan 2000 00:00:00 GMT"
110 ],
111 "content-type": [
112 "application/json"
113 ],
114 "referrer-policy": [
115 "no-referrer"
116 ],
117 "server": [
118 "Apache/2.4.10 (Debian)"
119 ],
120 "cache-control": [
121 "no-store"
122 ],
123 "x-content-type-options": [
124 "nosniff"
125 ],
126 "date": [
127 "Wed, 08 Apr 2020 21:12:55 GMT"
128 ]
129 },
130 "body": {
131 "string": "{\"result\":{\"diffid\":21006,\"phid\":\"PHID-DIFF-j6mteixl347wzuphwdft\",\"uri\":\"https:\\/\\/phab.mercurial-scm.org\\/differential\\/diff\\/21006\\/\"},\"error_code\":null,\"error_info\":null}"
132 },
133 "status": {
134 "code": 200,
135 "message": "OK"
136 }
137 }
138 },
139 {
140 "request": {
141 "headers": {
142 "content-length": [
143 "482"
144 ],
145 "accept": [
146 "application/mercurial-0.1"
147 ],
148 "content-type": [
149 "application/x-www-form-urlencoded"
150 ],
151 "host": [
152 "phab.mercurial-scm.org"
153 ],
154 "user-agent": [
155 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
156 ]
157 },
158 "body": "__conduit__=1&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%22d235829e802c98c0171dac4a265b4b9bad07093a%5C%22%2C+%5C%22parent%5C%22%3A+%5C%2298d480e0d494906d9758c44c622951b429afd862%5C%22%2C+%5C%22user%5C%22%3A+%5C%22test%5C%22%7D%22%2C+%22diff_id%22%3A+21006%2C+%22name%22%3A+%22hg%3Ameta%22%7D&output=json",
159 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
160 "method": "POST"
161 },
162 "response": {
163 "headers": {
164 "x-xss-protection": [
165 "1; mode=block"
166 ],
167 "strict-transport-security": [
168 "max-age=0; includeSubdomains; preload"
169 ],
170 "transfer-encoding": [
171 "chunked"
172 ],
173 "x-frame-options": [
174 "Deny"
175 ],
176 "expires": [
177 "Sat, 01 Jan 2000 00:00:00 GMT"
178 ],
179 "content-type": [
180 "application/json"
181 ],
182 "referrer-policy": [
183 "no-referrer"
184 ],
185 "server": [
186 "Apache/2.4.10 (Debian)"
187 ],
188 "cache-control": [
189 "no-store"
190 ],
191 "x-content-type-options": [
192 "nosniff"
193 ],
194 "date": [
195 "Wed, 08 Apr 2020 21:12:55 GMT"
196 ]
197 },
198 "body": {
199 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
200 },
201 "status": {
202 "code": 200,
203 "message": "OK"
204 }
205 }
206 },
207 {
208 "request": {
209 "headers": {
210 "content-length": [
211 "1362"
212 ],
213 "accept": [
214 "application/mercurial-0.1"
215 ],
216 "content-type": [
217 "application/x-www-form-urlencoded"
218 ],
219 "host": [
220 "phab.mercurial-scm.org"
221 ],
222 "user-agent": [
223 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
224 ]
225 },
226 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22data%22%3A+%22%7B%5C%2224a4438154bad90603d53a4dd31d8daff7844b36%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%2224a4438154bad90603d53a4dd31d8daff7844b36%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%22a959a3f69d8d498d96102cda0bc03ed89706891e%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22a959a3f69d8d498d96102cda0bc03ed89706891e%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%22a959a3f69d8d498d96102cda0bc03ed89706891e%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2298d480e0d494906d9758c44c622951b429afd862%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22d235829e802c98c0171dac4a265b4b9bad07093a%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%22d235829e802c98c0171dac4a265b4b9bad07093a%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2224a4438154bad90603d53a4dd31d8daff7844b36%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%7D%22%2C+%22diff_id%22%3A+21006%2C+%22name%22%3A+%22local%3Acommits%22%7D&output=json",
227 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
228 "method": "POST"
229 },
230 "response": {
231 "headers": {
232 "x-xss-protection": [
233 "1; mode=block"
234 ],
235 "strict-transport-security": [
236 "max-age=0; includeSubdomains; preload"
237 ],
238 "transfer-encoding": [
239 "chunked"
240 ],
241 "x-frame-options": [
242 "Deny"
243 ],
244 "expires": [
245 "Sat, 01 Jan 2000 00:00:00 GMT"
246 ],
247 "content-type": [
248 "application/json"
249 ],
250 "referrer-policy": [
251 "no-referrer"
252 ],
253 "server": [
254 "Apache/2.4.10 (Debian)"
255 ],
256 "cache-control": [
257 "no-store"
258 ],
259 "x-content-type-options": [
260 "nosniff"
261 ],
262 "date": [
263 "Wed, 08 Apr 2020 21:12:55 GMT"
264 ]
265 },
266 "body": {
267 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
268 },
269 "status": {
270 "code": 200,
271 "message": "OK"
272 }
273 }
274 },
275 {
276 "request": {
277 "headers": {
278 "content-length": [
279 "287"
280 ],
281 "accept": [
282 "application/mercurial-0.1"
283 ],
284 "content-type": [
285 "application/x-www-form-urlencoded"
286 ],
287 "host": [
288 "phab.mercurial-scm.org"
289 ],
290 "user-agent": [
291 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
292 ]
293 },
294 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22one%3A+first+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod1%27+as+its+contents.%5Cn%5CnTest+Plan%3A%5CnLOL%21++What+testing%3F%21%22%7D&output=json",
295 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
296 "method": "POST"
297 },
298 "response": {
299 "headers": {
300 "x-xss-protection": [
301 "1; mode=block"
302 ],
303 "strict-transport-security": [
304 "max-age=0; includeSubdomains; preload"
305 ],
306 "transfer-encoding": [
307 "chunked"
308 ],
309 "x-frame-options": [
310 "Deny"
311 ],
312 "expires": [
313 "Sat, 01 Jan 2000 00:00:00 GMT"
314 ],
315 "content-type": [
316 "application/json"
317 ],
318 "referrer-policy": [
319 "no-referrer"
320 ],
321 "server": [
322 "Apache/2.4.10 (Debian)"
323 ],
324 "cache-control": [
325 "no-store"
326 ],
327 "x-content-type-options": [
328 "nosniff"
329 ],
330 "date": [
331 "Wed, 08 Apr 2020 21:12:56 GMT"
332 ]
333 },
334 "body": {
335 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"one: first commit to review\",\"testPlan\":\"LOL! What testing?!\",\"summary\":\"This file was modified with 'mod1' as its contents.\"},\"revisionIDFieldInfo\":{\"value\":null,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"one: first commit to review\"},{\"type\":\"testPlan\",\"value\":\"LOL! What testing?!\"},{\"type\":\"summary\",\"value\":\"This file was modified with 'mod1' as its contents.\"}]},\"error_code\":null,\"error_info\":null}"
336 },
337 "status": {
338 "code": 200,
339 "message": "OK"
340 }
341 }
342 },
343 {
344 "request": {
345 "headers": {
346 "content-length": [
347 "284"
348 ],
349 "accept": [
350 "application/mercurial-0.1"
351 ],
352 "content-type": [
353 "application/x-www-form-urlencoded"
354 ],
355 "host": [
356 "phab.mercurial-scm.org"
357 ],
358 "user-agent": [
359 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
360 ]
361 },
362 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22two%3A+second+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod2%27+as+its+contents.%5Cn%5CnTest+Plan%3A%5CnHaha%21+yeah%2C+right.%22%7D&output=json",
363 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
364 "method": "POST"
365 },
366 "response": {
367 "headers": {
368 "x-xss-protection": [
369 "1; mode=block"
370 ],
371 "strict-transport-security": [
372 "max-age=0; includeSubdomains; preload"
373 ],
374 "transfer-encoding": [
375 "chunked"
376 ],
377 "x-frame-options": [
378 "Deny"
379 ],
380 "expires": [
381 "Sat, 01 Jan 2000 00:00:00 GMT"
382 ],
383 "content-type": [
384 "application/json"
385 ],
386 "referrer-policy": [
387 "no-referrer"
388 ],
389 "server": [
390 "Apache/2.4.10 (Debian)"
391 ],
392 "cache-control": [
393 "no-store"
394 ],
395 "x-content-type-options": [
396 "nosniff"
397 ],
398 "date": [
399 "Wed, 08 Apr 2020 21:12:56 GMT"
400 ]
401 },
402 "body": {
403 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"two: second commit to review\",\"testPlan\":\"Haha! yeah, right.\",\"summary\":\"This file was modified with 'mod2' as its contents.\"},\"revisionIDFieldInfo\":{\"value\":null,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"two: second commit to review\"},{\"type\":\"testPlan\",\"value\":\"Haha! yeah, right.\"},{\"type\":\"summary\",\"value\":\"This file was modified with 'mod2' as its contents.\"}]},\"error_code\":null,\"error_info\":null}"
404 },
405 "status": {
406 "code": 200,
407 "message": "OK"
408 }
409 }
410 },
411 {
412 "request": {
413 "headers": {
414 "content-length": [
415 "183"
416 ],
417 "accept": [
418 "application/mercurial-0.1"
419 ],
420 "content-type": [
421 "application/x-www-form-urlencoded"
422 ],
423 "host": [
424 "phab.mercurial-scm.org"
425 ],
426 "user-agent": [
427 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
428 ]
429 },
430 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%223%3A+a+commit+with+no+detailed+message%22%7D&output=json",
431 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
432 "method": "POST"
433 },
434 "response": {
435 "headers": {
436 "x-xss-protection": [
437 "1; mode=block"
438 ],
439 "strict-transport-security": [
440 "max-age=0; includeSubdomains; preload"
441 ],
442 "transfer-encoding": [
443 "chunked"
444 ],
445 "x-frame-options": [
446 "Deny"
447 ],
448 "expires": [
449 "Sat, 01 Jan 2000 00:00:00 GMT"
450 ],
451 "content-type": [
452 "application/json"
453 ],
454 "referrer-policy": [
455 "no-referrer"
456 ],
457 "server": [
458 "Apache/2.4.10 (Debian)"
459 ],
460 "cache-control": [
461 "no-store"
462 ],
463 "x-content-type-options": [
464 "nosniff"
465 ],
466 "date": [
467 "Wed, 08 Apr 2020 21:12:57 GMT"
468 ]
469 },
470 "body": {
471 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"3: a commit with no detailed message\"},\"revisionIDFieldInfo\":{\"value\":null,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"3: a commit with no detailed message\"}]},\"error_code\":null,\"error_info\":null}"
472 },
473 "status": {
474 "code": 200,
475 "message": "OK"
476 }
477 }
478 },
479 {
480 "request": {
481 "headers": {
482 "content-length": [
483 "710"
484 ],
485 "accept": [
486 "application/mercurial-0.1"
487 ],
488 "content-type": [
489 "application/x-www-form-urlencoded"
490 ],
491 "host": [
492 "phab.mercurial-scm.org"
493 ],
494 "user-agent": [
495 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
496 ]
497 },
498 "body": "__conduit__=1&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-j6mteixl347wzuphwdft%22%7D%2C+%7B%22type%22%3A+%22title%22%2C+%22value%22%3A+%22one%3A+first+commit+to+review%22%7D%2C+%7B%22type%22%3A+%22testPlan%22%2C+%22value%22%3A+%22LOL%21++What+testing%3F%21%5Cn%5CnHaha%21+yeah%2C+right.%22%7D%2C+%7B%22type%22%3A+%22summary%22%2C+%22value%22%3A+%22This+file+was+modified+with+%27mod1%27+as+its+contents.%5Cn%5Cntwo%3A+second+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod2%27+as+its+contents.%5Cn%5Cn3%3A+a+commit+with+no+detailed+message%22%7D%5D%7D&output=json",
499 "uri": "https://phab.mercurial-scm.org//api/differential.revision.edit",
500 "method": "POST"
501 },
502 "response": {
503 "headers": {
504 "x-xss-protection": [
505 "1; mode=block"
506 ],
507 "strict-transport-security": [
508 "max-age=0; includeSubdomains; preload"
509 ],
510 "transfer-encoding": [
511 "chunked"
512 ],
513 "x-frame-options": [
514 "Deny"
515 ],
516 "expires": [
517 "Sat, 01 Jan 2000 00:00:00 GMT"
518 ],
519 "content-type": [
520 "application/json"
521 ],
522 "referrer-policy": [
523 "no-referrer"
524 ],
525 "server": [
526 "Apache/2.4.10 (Debian)"
527 ],
528 "cache-control": [
529 "no-store"
530 ],
531 "x-content-type-options": [
532 "nosniff"
533 ],
534 "date": [
535 "Wed, 08 Apr 2020 21:12:57 GMT"
536 ]
537 },
538 "body": {
539 "string": "{\"result\":{\"object\":{\"id\":8387,\"phid\":\"PHID-DREV-6ov3pvjim4txejzekw2t\"},\"transactions\":[{\"phid\":\"PHID-XACT-DREV-ypn7okwtaudnadw\"},{\"phid\":\"PHID-XACT-DREV-g2r45z4erxl56g4\"},{\"phid\":\"PHID-XACT-DREV-h6dgu3eetalcv72\"},{\"phid\":\"PHID-XACT-DREV-rl7yelqfeezlivr\"},{\"phid\":\"PHID-XACT-DREV-j7cpnfpbxxphsbp\"},{\"phid\":\"PHID-XACT-DREV-57vpcydiiiu4zu5\"},{\"phid\":\"PHID-XACT-DREV-dou37gk5rry34zv\"}]},\"error_code\":null,\"error_info\":null}"
540 },
541 "status": {
542 "code": 200,
543 "message": "OK"
544 }
545 }
546 },
547 {
548 "request": {
549 "headers": {
550 "content-length": [
551 "146"
552 ],
553 "accept": [
554 "application/mercurial-0.1"
555 ],
556 "content-type": [
557 "application/x-www-form-urlencoded"
558 ],
559 "host": [
560 "phab.mercurial-scm.org"
561 ],
562 "user-agent": [
563 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
564 ]
565 },
566 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22ids%22%3A+%5B8387%5D%7D&output=json",
567 "uri": "https://phab.mercurial-scm.org//api/differential.query",
568 "method": "POST"
569 },
570 "response": {
571 "headers": {
572 "x-xss-protection": [
573 "1; mode=block"
574 ],
575 "strict-transport-security": [
576 "max-age=0; includeSubdomains; preload"
577 ],
578 "transfer-encoding": [
579 "chunked"
580 ],
581 "x-frame-options": [
582 "Deny"
583 ],
584 "expires": [
585 "Sat, 01 Jan 2000 00:00:00 GMT"
586 ],
587 "content-type": [
588 "application/json"
589 ],
590 "referrer-policy": [
591 "no-referrer"
592 ],
593 "server": [
594 "Apache/2.4.10 (Debian)"
595 ],
596 "cache-control": [
597 "no-store"
598 ],
599 "x-content-type-options": [
600 "nosniff"
601 ],
602 "date": [
603 "Wed, 08 Apr 2020 21:12:58 GMT"
604 ]
605 },
606 "body": {
607 "string": "{\"result\":[{\"id\":\"8387\",\"phid\":\"PHID-DREV-6ov3pvjim4txejzekw2t\",\"title\":\"one: first commit to review\",\"uri\":\"https:\\/\\/phab.mercurial-scm.org\\/D8387\",\"dateCreated\":\"1586380377\",\"dateModified\":\"1586380377\",\"authorPHID\":\"PHID-USER-tzhaient733lwrlbcag5\",\"status\":\"0\",\"statusName\":\"Needs Review\",\"properties\":{\"draft.broadcast\":true,\"lines.added\":1,\"lines.removed\":1},\"branch\":\"default\",\"summary\":\"This file was modified with 'mod1' as its contents.\\n\\ntwo: second commit to review\\n\\nThis file was modified with 'mod2' as its contents.\\n\\n3: a commit with no detailed message\",\"testPlan\":\"LOL! What testing?!\\n\\nHaha! yeah, right.\",\"lineCount\":\"2\",\"activeDiffPHID\":\"PHID-DIFF-j6mteixl347wzuphwdft\",\"diffs\":[\"21006\"],\"commits\":[],\"reviewers\":{\"PHID-PROJ-3dvcxzznrjru2xmmses3\":\"PHID-PROJ-3dvcxzznrjru2xmmses3\"},\"ccs\":[\"PHID-USER-q42dn7cc3donqriafhjx\"],\"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\"],[\"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\"],[\"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-bvunnehri4u2isyr7bc3\",\"sourcePath\":\"\\/\"}],\"error_code\":null,\"error_info\":null}"
608 },
609 "status": {
610 "code": 200,
611 "message": "OK"
612 }
613 }
614 },
615 {
616 "request": {
617 "headers": {
618 "content-length": [
619 "482"
620 ],
621 "accept": [
622 "application/mercurial-0.1"
623 ],
624 "content-type": [
625 "application/x-www-form-urlencoded"
626 ],
627 "host": [
628 "phab.mercurial-scm.org"
629 ],
630 "user-agent": [
631 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
632 ]
633 },
634 "body": "__conduit__=1&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%22921f8265efbd92e92bfa5d7a0e047908de9844a5%5C%22%2C+%5C%22parent%5C%22%3A+%5C%2298d480e0d494906d9758c44c622951b429afd862%5C%22%2C+%5C%22user%5C%22%3A+%5C%22test%5C%22%7D%22%2C+%22diff_id%22%3A+21006%2C+%22name%22%3A+%22hg%3Ameta%22%7D&output=json",
635 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
636 "method": "POST"
637 },
638 "response": {
639 "headers": {
640 "x-xss-protection": [
641 "1; mode=block"
642 ],
643 "strict-transport-security": [
644 "max-age=0; includeSubdomains; preload"
645 ],
646 "transfer-encoding": [
647 "chunked"
648 ],
649 "x-frame-options": [
650 "Deny"
651 ],
652 "expires": [
653 "Sat, 01 Jan 2000 00:00:00 GMT"
654 ],
655 "content-type": [
656 "application/json"
657 ],
658 "referrer-policy": [
659 "no-referrer"
660 ],
661 "server": [
662 "Apache/2.4.10 (Debian)"
663 ],
664 "cache-control": [
665 "no-store"
666 ],
667 "x-content-type-options": [
668 "nosniff"
669 ],
670 "date": [
671 "Wed, 08 Apr 2020 21:12:58 GMT"
672 ]
673 },
674 "body": {
675 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
676 },
677 "status": {
678 "code": 200,
679 "message": "OK"
680 }
681 }
682 },
683 {
684 "request": {
685 "headers": {
686 "content-length": [
687 "1362"
688 ],
689 "accept": [
690 "application/mercurial-0.1"
691 ],
692 "content-type": [
693 "application/x-www-form-urlencoded"
694 ],
695 "host": [
696 "phab.mercurial-scm.org"
697 ],
698 "user-agent": [
699 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
700 ]
701 },
702 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22data%22%3A+%22%7B%5C%22602c4e7382436988e46c0d56fb3883968302b3f6%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%22602c4e7382436988e46c0d56fb3883968302b3f6%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2298d480e0d494906d9758c44c622951b429afd862%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22832553266fe8c3330d968e6987df4ae793483b2b%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%22832553266fe8c3330d968e6987df4ae793483b2b%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%22602c4e7382436988e46c0d56fb3883968302b3f6%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22921f8265efbd92e92bfa5d7a0e047908de9844a5%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%22921f8265efbd92e92bfa5d7a0e047908de9844a5%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%22832553266fe8c3330d968e6987df4ae793483b2b%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%7D%22%2C+%22diff_id%22%3A+21006%2C+%22name%22%3A+%22local%3Acommits%22%7D&output=json",
703 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
704 "method": "POST"
705 },
706 "response": {
707 "headers": {
708 "x-xss-protection": [
709 "1; mode=block"
710 ],
711 "strict-transport-security": [
712 "max-age=0; includeSubdomains; preload"
713 ],
714 "transfer-encoding": [
715 "chunked"
716 ],
717 "x-frame-options": [
718 "Deny"
719 ],
720 "expires": [
721 "Sat, 01 Jan 2000 00:00:00 GMT"
722 ],
723 "content-type": [
724 "application/json"
725 ],
726 "referrer-policy": [
727 "no-referrer"
728 ],
729 "server": [
730 "Apache/2.4.10 (Debian)"
731 ],
732 "cache-control": [
733 "no-store"
734 ],
735 "x-content-type-options": [
736 "nosniff"
737 ],
738 "date": [
739 "Wed, 08 Apr 2020 21:12:59 GMT"
740 ]
741 },
742 "body": {
743 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
744 },
745 "status": {
746 "code": 200,
747 "message": "OK"
748 }
749 }
750 }
751 ],
752 "version": 1
753 } No newline at end of file
This diff has been collapsed as it changes many lines, (685 lines changed) Show them Hide them
@@ -0,0 +1,685
1 {
2 "interactions": [
3 {
4 "request": {
5 "headers": {
6 "content-length": [
7 "170"
8 ],
9 "accept": [
10 "application/mercurial-0.1"
11 ],
12 "content-type": [
13 "application/x-www-form-urlencoded"
14 ],
15 "host": [
16 "phab.mercurial-scm.org"
17 ],
18 "user-agent": [
19 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
20 ]
21 },
22 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22revisionIDs%22%3A+%5B8387%2C+8387%2C+8387%5D%7D&output=json",
23 "uri": "https://phab.mercurial-scm.org//api/differential.querydiffs",
24 "method": "POST"
25 },
26 "response": {
27 "headers": {
28 "x-xss-protection": [
29 "1; mode=block"
30 ],
31 "strict-transport-security": [
32 "max-age=0; includeSubdomains; preload"
33 ],
34 "transfer-encoding": [
35 "chunked"
36 ],
37 "x-frame-options": [
38 "Deny"
39 ],
40 "expires": [
41 "Sat, 01 Jan 2000 00:00:00 GMT"
42 ],
43 "content-type": [
44 "application/json"
45 ],
46 "referrer-policy": [
47 "no-referrer"
48 ],
49 "server": [
50 "Apache/2.4.10 (Debian)"
51 ],
52 "cache-control": [
53 "no-store"
54 ],
55 "x-content-type-options": [
56 "nosniff"
57 ],
58 "date": [
59 "Wed, 08 Apr 2020 21:13:08 GMT"
60 ]
61 },
62 "body": {
63 "string": "{\"result\":{\"21007\":{\"id\":\"21007\",\"revisionID\":\"8387\",\"dateCreated\":\"1586380382\",\"dateModified\":\"1586380385\",\"sourceControlBaseRevision\":\"98d480e0d494906d9758c44c622951b429afd862\",\"sourceControlPath\":\"\\/\",\"sourceControlSystem\":\"hg\",\"branch\":\"default\",\"bookmark\":null,\"creationMethod\":\"phabsend\",\"description\":null,\"unitStatus\":\"0\",\"lintStatus\":\"0\",\"changes\":[{\"id\":\"56825\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"yXvxVg6uibwd\"},\"oldPath\":null,\"currentPath\":\"file2.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":{\"unix:filemode\":\"100644\"},\"type\":\"1\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"0\",\"hunks\":[{\"oldOffset\":\"0\",\"newOffset\":\"1\",\"oldLength\":\"0\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"+modified\\n\"}]},{\"id\":\"56824\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"cAKuVP31KNrx\"},\"oldPath\":\"file.txt\",\"currentPath\":\"file.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":[],\"type\":\"2\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"1\",\"hunks\":[{\"oldOffset\":\"1\",\"newOffset\":\"1\",\"oldLength\":\"1\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"-added\\n+mod3\\n\"}]}],\"properties\":{\"hg:meta\":{\"branch\":\"default\",\"date\":\"0 0\",\"node\":\"e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac\",\"parent\":\"98d480e0d494906d9758c44c622951b429afd862\",\"user\":\"test\"},\"local:commits\":{\"0124e5474c880e4fb40c8326ad2b75ae3e57ee5f\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"0124e5474c880e4fb40c8326ad2b75ae3e57ee5f\",\"parents\":[\"602c4e7382436988e46c0d56fb3883968302b3f6\"],\"time\":0},\"602c4e7382436988e46c0d56fb3883968302b3f6\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"602c4e7382436988e46c0d56fb3883968302b3f6\",\"parents\":[\"98d480e0d494906d9758c44c622951b429afd862\"],\"time\":0},\"e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac\",\"parents\":[\"0124e5474c880e4fb40c8326ad2b75ae3e57ee5f\"],\"time\":0}}},\"authorName\":\"test\",\"authorEmail\":\"test\"},\"21006\":{\"id\":\"21006\",\"revisionID\":\"8387\",\"dateCreated\":\"1586380375\",\"dateModified\":\"1586380377\",\"sourceControlBaseRevision\":\"98d480e0d494906d9758c44c622951b429afd862\",\"sourceControlPath\":\"\\/\",\"sourceControlSystem\":\"hg\",\"branch\":\"default\",\"bookmark\":null,\"creationMethod\":\"phabsend\",\"description\":null,\"unitStatus\":\"0\",\"lintStatus\":\"0\",\"changes\":[{\"id\":\"56823\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"cAKuVP31KNrx\"},\"oldPath\":\"file.txt\",\"currentPath\":\"file.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":[],\"type\":\"2\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"1\",\"hunks\":[{\"oldOffset\":\"1\",\"newOffset\":\"1\",\"oldLength\":\"1\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"-added\\n+mod3\\n\"}]}],\"properties\":{\"hg:meta\":{\"branch\":\"default\",\"date\":\"0 0\",\"node\":\"921f8265efbd92e92bfa5d7a0e047908de9844a5\",\"parent\":\"98d480e0d494906d9758c44c622951b429afd862\",\"user\":\"test\"},\"local:commits\":{\"602c4e7382436988e46c0d56fb3883968302b3f6\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"602c4e7382436988e46c0d56fb3883968302b3f6\",\"parents\":[\"98d480e0d494906d9758c44c622951b429afd862\"],\"time\":0},\"832553266fe8c3330d968e6987df4ae793483b2b\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"832553266fe8c3330d968e6987df4ae793483b2b\",\"parents\":[\"602c4e7382436988e46c0d56fb3883968302b3f6\"],\"time\":0},\"921f8265efbd92e92bfa5d7a0e047908de9844a5\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"921f8265efbd92e92bfa5d7a0e047908de9844a5\",\"parents\":[\"832553266fe8c3330d968e6987df4ae793483b2b\"],\"time\":0}}},\"authorName\":\"test\",\"authorEmail\":\"test\"}},\"error_code\":null,\"error_info\":null}"
64 },
65 "status": {
66 "code": 200,
67 "message": "OK"
68 }
69 }
70 },
71 {
72 "request": {
73 "headers": {
74 "content-length": [
75 "183"
76 ],
77 "accept": [
78 "application/mercurial-0.1"
79 ],
80 "content-type": [
81 "application/x-www-form-urlencoded"
82 ],
83 "host": [
84 "phab.mercurial-scm.org"
85 ],
86 "user-agent": [
87 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
88 ]
89 },
90 "body": "__conduit__=1&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",
91 "uri": "https://phab.mercurial-scm.org//api/diffusion.repository.search",
92 "method": "POST"
93 },
94 "response": {
95 "headers": {
96 "x-xss-protection": [
97 "1; mode=block"
98 ],
99 "strict-transport-security": [
100 "max-age=0; includeSubdomains; preload"
101 ],
102 "transfer-encoding": [
103 "chunked"
104 ],
105 "x-frame-options": [
106 "Deny"
107 ],
108 "expires": [
109 "Sat, 01 Jan 2000 00:00:00 GMT"
110 ],
111 "content-type": [
112 "application/json"
113 ],
114 "referrer-policy": [
115 "no-referrer"
116 ],
117 "server": [
118 "Apache/2.4.10 (Debian)"
119 ],
120 "cache-control": [
121 "no-store"
122 ],
123 "x-content-type-options": [
124 "nosniff"
125 ],
126 "date": [
127 "Wed, 08 Apr 2020 21:13:08 GMT"
128 ]
129 },
130 "body": {
131 "string": "{\"result\":{\"data\":[{\"id\":2,\"type\":\"REPO\",\"phid\":\"PHID-REPO-bvunnehri4u2isyr7bc3\",\"fields\":{\"name\":\"Mercurial\",\"vcs\":\"hg\",\"callsign\":\"HG\",\"shortName\":null,\"status\":\"active\",\"isImporting\":false,\"almanacServicePHID\":null,\"refRules\":{\"fetchRules\":[],\"trackRules\":[],\"permanentRefRules\":[]},\"spacePHID\":null,\"dateCreated\":1498761653,\"dateModified\":1500403184,\"policy\":{\"view\":\"public\",\"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}"
132 },
133 "status": {
134 "code": 200,
135 "message": "OK"
136 }
137 }
138 },
139 {
140 "request": {
141 "headers": {
142 "content-length": [
143 "1736"
144 ],
145 "accept": [
146 "application/mercurial-0.1"
147 ],
148 "content-type": [
149 "application/x-www-form-urlencoded"
150 ],
151 "host": [
152 "phab.mercurial-scm.org"
153 ],
154 "user-agent": [
155 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
156 ]
157 },
158 "body": "__conduit__=1&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%22file.txt%22%3A+%7B%22addLines%22%3A+1%2C+%22awayPaths%22%3A+%5B%5D%2C+%22commitHash%22%3A+null%2C+%22currentPath%22%3A+%22file.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-added%5Cn%2Bmod3%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+%22file.txt%22%2C+%22oldProperties%22%3A+%7B%7D%2C+%22type%22%3A+2%7D%2C+%22file2.txt%22%3A+%7B%22addLines%22%3A+1%2C+%22awayPaths%22%3A+%5B%5D%2C+%22commitHash%22%3A+null%2C+%22currentPath%22%3A+%22file2.txt%22%2C+%22delLines%22%3A+0%2C+%22fileType%22%3A+1%2C+%22hunks%22%3A+%5B%7B%22addLines%22%3A+1%2C+%22corpus%22%3A+%22%2Bmodified%5Cn%22%2C+%22delLines%22%3A+0%2C+%22newLength%22%3A+1%2C+%22newOffset%22%3A+1%2C+%22oldLength%22%3A+0%2C+%22oldOffset%22%3A+0%7D%5D%2C+%22metadata%22%3A+%7B%7D%2C+%22newProperties%22%3A+%7B%22unix%3Afilemode%22%3A+%22100644%22%7D%2C+%22oldPath%22%3A+null%2C+%22oldProperties%22%3A+%7B%7D%2C+%22type%22%3A+1%7D%7D%2C+%22creationMethod%22%3A+%22phabsend%22%2C+%22lintStatus%22%3A+%22none%22%2C+%22repositoryPHID%22%3A+%22PHID-REPO-bvunnehri4u2isyr7bc3%22%2C+%22sourceControlBaseRevision%22%3A+%2298d480e0d494906d9758c44c622951b429afd862%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",
159 "uri": "https://phab.mercurial-scm.org//api/differential.creatediff",
160 "method": "POST"
161 },
162 "response": {
163 "headers": {
164 "x-xss-protection": [
165 "1; mode=block"
166 ],
167 "strict-transport-security": [
168 "max-age=0; includeSubdomains; preload"
169 ],
170 "transfer-encoding": [
171 "chunked"
172 ],
173 "x-frame-options": [
174 "Deny"
175 ],
176 "expires": [
177 "Sat, 01 Jan 2000 00:00:00 GMT"
178 ],
179 "content-type": [
180 "application/json"
181 ],
182 "referrer-policy": [
183 "no-referrer"
184 ],
185 "server": [
186 "Apache/2.4.10 (Debian)"
187 ],
188 "cache-control": [
189 "no-store"
190 ],
191 "x-content-type-options": [
192 "nosniff"
193 ],
194 "date": [
195 "Wed, 08 Apr 2020 21:13:08 GMT"
196 ]
197 },
198 "body": {
199 "string": "{\"result\":{\"diffid\":21008,\"phid\":\"PHID-DIFF-wwqrxqimkcomhphpy4fb\",\"uri\":\"https:\\/\\/phab.mercurial-scm.org\\/differential\\/diff\\/21008\\/\"},\"error_code\":null,\"error_info\":null}"
200 },
201 "status": {
202 "code": 200,
203 "message": "OK"
204 }
205 }
206 },
207 {
208 "request": {
209 "headers": {
210 "content-length": [
211 "482"
212 ],
213 "accept": [
214 "application/mercurial-0.1"
215 ],
216 "content-type": [
217 "application/x-www-form-urlencoded"
218 ],
219 "host": [
220 "phab.mercurial-scm.org"
221 ],
222 "user-agent": [
223 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
224 ]
225 },
226 "body": "__conduit__=1&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%22e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac%5C%22%2C+%5C%22parent%5C%22%3A+%5C%2298d480e0d494906d9758c44c622951b429afd862%5C%22%2C+%5C%22user%5C%22%3A+%5C%22test%5C%22%7D%22%2C+%22diff_id%22%3A+21008%2C+%22name%22%3A+%22hg%3Ameta%22%7D&output=json",
227 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
228 "method": "POST"
229 },
230 "response": {
231 "headers": {
232 "x-xss-protection": [
233 "1; mode=block"
234 ],
235 "strict-transport-security": [
236 "max-age=0; includeSubdomains; preload"
237 ],
238 "transfer-encoding": [
239 "chunked"
240 ],
241 "x-frame-options": [
242 "Deny"
243 ],
244 "expires": [
245 "Sat, 01 Jan 2000 00:00:00 GMT"
246 ],
247 "content-type": [
248 "application/json"
249 ],
250 "referrer-policy": [
251 "no-referrer"
252 ],
253 "server": [
254 "Apache/2.4.10 (Debian)"
255 ],
256 "cache-control": [
257 "no-store"
258 ],
259 "x-content-type-options": [
260 "nosniff"
261 ],
262 "date": [
263 "Wed, 08 Apr 2020 21:13:09 GMT"
264 ]
265 },
266 "body": {
267 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
268 },
269 "status": {
270 "code": 200,
271 "message": "OK"
272 }
273 }
274 },
275 {
276 "request": {
277 "headers": {
278 "content-length": [
279 "1362"
280 ],
281 "accept": [
282 "application/mercurial-0.1"
283 ],
284 "content-type": [
285 "application/x-www-form-urlencoded"
286 ],
287 "host": [
288 "phab.mercurial-scm.org"
289 ],
290 "user-agent": [
291 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
292 ]
293 },
294 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22data%22%3A+%22%7B%5C%220124e5474c880e4fb40c8326ad2b75ae3e57ee5f%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%220124e5474c880e4fb40c8326ad2b75ae3e57ee5f%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%22602c4e7382436988e46c0d56fb3883968302b3f6%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22602c4e7382436988e46c0d56fb3883968302b3f6%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%22602c4e7382436988e46c0d56fb3883968302b3f6%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2298d480e0d494906d9758c44c622951b429afd862%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac%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%22e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%220124e5474c880e4fb40c8326ad2b75ae3e57ee5f%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%7D%22%2C+%22diff_id%22%3A+21008%2C+%22name%22%3A+%22local%3Acommits%22%7D&output=json",
295 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
296 "method": "POST"
297 },
298 "response": {
299 "headers": {
300 "x-xss-protection": [
301 "1; mode=block"
302 ],
303 "strict-transport-security": [
304 "max-age=0; includeSubdomains; preload"
305 ],
306 "transfer-encoding": [
307 "chunked"
308 ],
309 "x-frame-options": [
310 "Deny"
311 ],
312 "expires": [
313 "Sat, 01 Jan 2000 00:00:00 GMT"
314 ],
315 "content-type": [
316 "application/json"
317 ],
318 "referrer-policy": [
319 "no-referrer"
320 ],
321 "server": [
322 "Apache/2.4.10 (Debian)"
323 ],
324 "cache-control": [
325 "no-store"
326 ],
327 "x-content-type-options": [
328 "nosniff"
329 ],
330 "date": [
331 "Wed, 08 Apr 2020 21:13:09 GMT"
332 ]
333 },
334 "body": {
335 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
336 },
337 "status": {
338 "code": 200,
339 "message": "OK"
340 }
341 }
342 },
343 {
344 "request": {
345 "headers": {
346 "content-length": [
347 "364"
348 ],
349 "accept": [
350 "application/mercurial-0.1"
351 ],
352 "content-type": [
353 "application/x-www-form-urlencoded"
354 ],
355 "host": [
356 "phab.mercurial-scm.org"
357 ],
358 "user-agent": [
359 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
360 ]
361 },
362 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22one%3A+first+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod1%27+as+its+contents.%5Cn%5CnTest+Plan%3A%5CnLOL%21++What+testing%3F%21%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8387%22%7D&output=json",
363 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
364 "method": "POST"
365 },
366 "response": {
367 "headers": {
368 "x-xss-protection": [
369 "1; mode=block"
370 ],
371 "strict-transport-security": [
372 "max-age=0; includeSubdomains; preload"
373 ],
374 "transfer-encoding": [
375 "chunked"
376 ],
377 "x-frame-options": [
378 "Deny"
379 ],
380 "expires": [
381 "Sat, 01 Jan 2000 00:00:00 GMT"
382 ],
383 "content-type": [
384 "application/json"
385 ],
386 "referrer-policy": [
387 "no-referrer"
388 ],
389 "server": [
390 "Apache/2.4.10 (Debian)"
391 ],
392 "cache-control": [
393 "no-store"
394 ],
395 "x-content-type-options": [
396 "nosniff"
397 ],
398 "date": [
399 "Wed, 08 Apr 2020 21:13:10 GMT"
400 ]
401 },
402 "body": {
403 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"one: first commit to review\",\"testPlan\":\"LOL! What testing?!\",\"revisionID\":8387,\"summary\":\"This file was modified with 'mod1' as its contents.\"},\"revisionIDFieldInfo\":{\"value\":8387,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"one: first commit to review\"},{\"type\":\"testPlan\",\"value\":\"LOL! What testing?!\"},{\"type\":\"summary\",\"value\":\"This file was modified with 'mod1' as its contents.\"}]},\"error_code\":null,\"error_info\":null}"
404 },
405 "status": {
406 "code": 200,
407 "message": "OK"
408 }
409 }
410 },
411 {
412 "request": {
413 "headers": {
414 "content-length": [
415 "361"
416 ],
417 "accept": [
418 "application/mercurial-0.1"
419 ],
420 "content-type": [
421 "application/x-www-form-urlencoded"
422 ],
423 "host": [
424 "phab.mercurial-scm.org"
425 ],
426 "user-agent": [
427 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
428 ]
429 },
430 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22two%3A+second+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod2%27+as+its+contents.%5Cn%5CnTest+Plan%3A%5CnHaha%21+yeah%2C+right.%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8387%22%7D&output=json",
431 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
432 "method": "POST"
433 },
434 "response": {
435 "headers": {
436 "x-xss-protection": [
437 "1; mode=block"
438 ],
439 "strict-transport-security": [
440 "max-age=0; includeSubdomains; preload"
441 ],
442 "transfer-encoding": [
443 "chunked"
444 ],
445 "x-frame-options": [
446 "Deny"
447 ],
448 "expires": [
449 "Sat, 01 Jan 2000 00:00:00 GMT"
450 ],
451 "content-type": [
452 "application/json"
453 ],
454 "referrer-policy": [
455 "no-referrer"
456 ],
457 "server": [
458 "Apache/2.4.10 (Debian)"
459 ],
460 "cache-control": [
461 "no-store"
462 ],
463 "x-content-type-options": [
464 "nosniff"
465 ],
466 "date": [
467 "Wed, 08 Apr 2020 21:13:10 GMT"
468 ]
469 },
470 "body": {
471 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"two: second commit to review\",\"testPlan\":\"Haha! yeah, right.\",\"revisionID\":8387,\"summary\":\"This file was modified with 'mod2' as its contents.\"},\"revisionIDFieldInfo\":{\"value\":8387,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"two: second commit to review\"},{\"type\":\"testPlan\",\"value\":\"Haha! yeah, right.\"},{\"type\":\"summary\",\"value\":\"This file was modified with 'mod2' as its contents.\"}]},\"error_code\":null,\"error_info\":null}"
472 },
473 "status": {
474 "code": 200,
475 "message": "OK"
476 }
477 }
478 },
479 {
480 "request": {
481 "headers": {
482 "content-length": [
483 "260"
484 ],
485 "accept": [
486 "application/mercurial-0.1"
487 ],
488 "content-type": [
489 "application/x-www-form-urlencoded"
490 ],
491 "host": [
492 "phab.mercurial-scm.org"
493 ],
494 "user-agent": [
495 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
496 ]
497 },
498 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%223%3A+a+commit+with+no+detailed+message%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8387%22%7D&output=json",
499 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
500 "method": "POST"
501 },
502 "response": {
503 "headers": {
504 "x-xss-protection": [
505 "1; mode=block"
506 ],
507 "strict-transport-security": [
508 "max-age=0; includeSubdomains; preload"
509 ],
510 "transfer-encoding": [
511 "chunked"
512 ],
513 "x-frame-options": [
514 "Deny"
515 ],
516 "expires": [
517 "Sat, 01 Jan 2000 00:00:00 GMT"
518 ],
519 "content-type": [
520 "application/json"
521 ],
522 "referrer-policy": [
523 "no-referrer"
524 ],
525 "server": [
526 "Apache/2.4.10 (Debian)"
527 ],
528 "cache-control": [
529 "no-store"
530 ],
531 "x-content-type-options": [
532 "nosniff"
533 ],
534 "date": [
535 "Wed, 08 Apr 2020 21:13:11 GMT"
536 ]
537 },
538 "body": {
539 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"3: a commit with no detailed message\",\"revisionID\":8387},\"revisionIDFieldInfo\":{\"value\":8387,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"3: a commit with no detailed message\"}]},\"error_code\":null,\"error_info\":null}"
540 },
541 "status": {
542 "code": 200,
543 "message": "OK"
544 }
545 }
546 },
547 {
548 "request": {
549 "headers": {
550 "content-length": [
551 "744"
552 ],
553 "accept": [
554 "application/mercurial-0.1"
555 ],
556 "content-type": [
557 "application/x-www-form-urlencoded"
558 ],
559 "host": [
560 "phab.mercurial-scm.org"
561 ],
562 "user-agent": [
563 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
564 ]
565 },
566 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22objectIdentifier%22%3A+8387%2C+%22transactions%22%3A+%5B%7B%22type%22%3A+%22update%22%2C+%22value%22%3A+%22PHID-DIFF-wwqrxqimkcomhphpy4fb%22%7D%2C+%7B%22type%22%3A+%22title%22%2C+%22value%22%3A+%22one%3A+first+commit+to+review%22%7D%2C+%7B%22type%22%3A+%22testPlan%22%2C+%22value%22%3A+%22LOL%21++What+testing%3F%21%5Cn%5CnHaha%21+yeah%2C+right.%22%7D%2C+%7B%22type%22%3A+%22summary%22%2C+%22value%22%3A+%22This+file+was+modified+with+%27mod1%27+as+its+contents.%5Cn%5Cntwo%3A+second+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod2%27+as+its+contents.%5Cn%5Cn3%3A+a+commit+with+no+detailed+message%22%7D%5D%7D&output=json",
567 "uri": "https://phab.mercurial-scm.org//api/differential.revision.edit",
568 "method": "POST"
569 },
570 "response": {
571 "headers": {
572 "x-xss-protection": [
573 "1; mode=block"
574 ],
575 "strict-transport-security": [
576 "max-age=0; includeSubdomains; preload"
577 ],
578 "transfer-encoding": [
579 "chunked"
580 ],
581 "x-frame-options": [
582 "Deny"
583 ],
584 "expires": [
585 "Sat, 01 Jan 2000 00:00:00 GMT"
586 ],
587 "content-type": [
588 "application/json"
589 ],
590 "referrer-policy": [
591 "no-referrer"
592 ],
593 "server": [
594 "Apache/2.4.10 (Debian)"
595 ],
596 "cache-control": [
597 "no-store"
598 ],
599 "x-content-type-options": [
600 "nosniff"
601 ],
602 "date": [
603 "Wed, 08 Apr 2020 21:13:11 GMT"
604 ]
605 },
606 "body": {
607 "string": "{\"result\":{\"object\":{\"id\":8387,\"phid\":\"PHID-DREV-6ov3pvjim4txejzekw2t\"},\"transactions\":[{\"phid\":\"PHID-XACT-DREV-yev5udwjourvj2j\"}]},\"error_code\":null,\"error_info\":null}"
608 },
609 "status": {
610 "code": 200,
611 "message": "OK"
612 }
613 }
614 },
615 {
616 "request": {
617 "headers": {
618 "content-length": [
619 "146"
620 ],
621 "accept": [
622 "application/mercurial-0.1"
623 ],
624 "content-type": [
625 "application/x-www-form-urlencoded"
626 ],
627 "host": [
628 "phab.mercurial-scm.org"
629 ],
630 "user-agent": [
631 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
632 ]
633 },
634 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22ids%22%3A+%5B8387%5D%7D&output=json",
635 "uri": "https://phab.mercurial-scm.org//api/differential.query",
636 "method": "POST"
637 },
638 "response": {
639 "headers": {
640 "x-xss-protection": [
641 "1; mode=block"
642 ],
643 "strict-transport-security": [
644 "max-age=0; includeSubdomains; preload"
645 ],
646 "transfer-encoding": [
647 "chunked"
648 ],
649 "x-frame-options": [
650 "Deny"
651 ],
652 "expires": [
653 "Sat, 01 Jan 2000 00:00:00 GMT"
654 ],
655 "content-type": [
656 "application/json"
657 ],
658 "referrer-policy": [
659 "no-referrer"
660 ],
661 "server": [
662 "Apache/2.4.10 (Debian)"
663 ],
664 "cache-control": [
665 "no-store"
666 ],
667 "x-content-type-options": [
668 "nosniff"
669 ],
670 "date": [
671 "Wed, 08 Apr 2020 21:13:12 GMT"
672 ]
673 },
674 "body": {
675 "string": "{\"result\":[{\"id\":\"8387\",\"phid\":\"PHID-DREV-6ov3pvjim4txejzekw2t\",\"title\":\"one: first commit to review\",\"uri\":\"https:\\/\\/phab.mercurial-scm.org\\/D8387\",\"dateCreated\":\"1586380377\",\"dateModified\":\"1586380391\",\"authorPHID\":\"PHID-USER-tzhaient733lwrlbcag5\",\"status\":\"0\",\"statusName\":\"Needs Review\",\"properties\":{\"draft.broadcast\":true,\"lines.added\":2,\"lines.removed\":1},\"branch\":\"default\",\"summary\":\"This file was modified with 'mod1' as its contents.\\n\\ntwo: second commit to review\\n\\nThis file was modified with 'mod2' as its contents.\\n\\n3: a commit with no detailed message\",\"testPlan\":\"LOL! What testing?!\\n\\nHaha! yeah, right.\",\"lineCount\":\"3\",\"activeDiffPHID\":\"PHID-DIFF-wwqrxqimkcomhphpy4fb\",\"diffs\":[\"21008\",\"21007\",\"21006\"],\"commits\":[],\"reviewers\":{\"PHID-PROJ-3dvcxzznrjru2xmmses3\":\"PHID-PROJ-3dvcxzznrjru2xmmses3\"},\"ccs\":[\"PHID-USER-q42dn7cc3donqriafhjx\"],\"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\"],[\"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\"],[\"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-bvunnehri4u2isyr7bc3\",\"sourcePath\":\"\\/\"}],\"error_code\":null,\"error_info\":null}"
676 },
677 "status": {
678 "code": 200,
679 "message": "OK"
680 }
681 }
682 }
683 ],
684 "version": 1
685 } No newline at end of file
This diff has been collapsed as it changes many lines, (1028 lines changed) Show them Hide them
@@ -0,0 +1,1028
1 {
2 "interactions": [
3 {
4 "request": {
5 "headers": {
6 "content-length": [
7 "194"
8 ],
9 "accept": [
10 "application/mercurial-0.1"
11 ],
12 "content-type": [
13 "application/x-www-form-urlencoded"
14 ],
15 "host": [
16 "phab.mercurial-scm.org"
17 ],
18 "user-agent": [
19 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
20 ]
21 },
22 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22revisionIDs%22%3A+%5B8388%2C+8388%2C+8388%2C+8388%2C+8388%2C+8388%5D%7D&output=json",
23 "uri": "https://phab.mercurial-scm.org//api/differential.querydiffs",
24 "method": "POST"
25 },
26 "response": {
27 "headers": {
28 "x-xss-protection": [
29 "1; mode=block"
30 ],
31 "strict-transport-security": [
32 "max-age=0; includeSubdomains; preload"
33 ],
34 "transfer-encoding": [
35 "chunked"
36 ],
37 "x-frame-options": [
38 "Deny"
39 ],
40 "expires": [
41 "Sat, 01 Jan 2000 00:00:00 GMT"
42 ],
43 "content-type": [
44 "application/json"
45 ],
46 "referrer-policy": [
47 "no-referrer"
48 ],
49 "server": [
50 "Apache/2.4.10 (Debian)"
51 ],
52 "cache-control": [
53 "no-store"
54 ],
55 "x-content-type-options": [
56 "nosniff"
57 ],
58 "date": [
59 "Wed, 08 Apr 2020 21:13:29 GMT"
60 ]
61 },
62 "body": {
63 "string": "{\"result\":{\"21010\":{\"id\":\"21010\",\"revisionID\":\"8388\",\"dateCreated\":\"1586380401\",\"dateModified\":\"1586380405\",\"sourceControlBaseRevision\":\"0000000000000000000000000000000000000000\",\"sourceControlPath\":\"\\/\",\"sourceControlSystem\":\"hg\",\"branch\":\"default\",\"bookmark\":null,\"creationMethod\":\"phabsend\",\"description\":null,\"unitStatus\":\"0\",\"lintStatus\":\"0\",\"changes\":[{\"id\":\"56831\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"r1N4i770De9n\"},\"oldPath\":null,\"currentPath\":\"file2.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":{\"unix:filemode\":\"100644\"},\"type\":\"1\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"0\",\"hunks\":[{\"oldOffset\":\"0\",\"newOffset\":\"1\",\"oldLength\":\"0\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"+another mod\\n\"}]},{\"id\":\"56830\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"cAKuVP31KNrx\"},\"oldPath\":null,\"currentPath\":\"file.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":{\"unix:filemode\":\"100644\"},\"type\":\"1\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"0\",\"hunks\":[{\"oldOffset\":\"0\",\"newOffset\":\"1\",\"oldLength\":\"0\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"+mod3\\n\"}]}],\"properties\":{\"hg:meta\":{\"branch\":\"default\",\"date\":\"0 0\",\"node\":\"ac7db67f0991021fb38d3cbf31f5d605e694d3a9\",\"parent\":\"0000000000000000000000000000000000000000\",\"user\":\"test\"},\"local:commits\":{\"15e9b14b4b4c37ccd18298d058a184068718765e\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"15e9b14b4b4c37ccd18298d058a184068718765e\",\"parents\":[\"0000000000000000000000000000000000000000\"],\"time\":0},\"30682b960804bd91823ea5ccb5d6a7d999f8d1ea\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"30682b960804bd91823ea5ccb5d6a7d999f8d1ea\",\"parents\":[\"3ee132d41dbc24bf5a4df3e97573d6e922446565\"],\"time\":0},\"3ee132d41dbc24bf5a4df3e97573d6e922446565\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"3ee132d41dbc24bf5a4df3e97573d6e922446565\",\"parents\":[\"6320b7d714cf2b2b71370eafeae29e2988d07872\"],\"time\":0},\"6320b7d714cf2b2b71370eafeae29e2988d07872\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"6320b7d714cf2b2b71370eafeae29e2988d07872\",\"parents\":[\"15e9b14b4b4c37ccd18298d058a184068718765e\"],\"time\":0},\"ac7db67f0991021fb38d3cbf31f5d605e694d3a9\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"ac7db67f0991021fb38d3cbf31f5d605e694d3a9\",\"parents\":[\"30682b960804bd91823ea5ccb5d6a7d999f8d1ea\"],\"time\":0}}},\"authorName\":\"test\",\"authorEmail\":\"test\"}},\"error_code\":null,\"error_info\":null}"
64 },
65 "status": {
66 "code": 200,
67 "message": "OK"
68 }
69 }
70 },
71 {
72 "request": {
73 "headers": {
74 "content-length": [
75 "183"
76 ],
77 "accept": [
78 "application/mercurial-0.1"
79 ],
80 "content-type": [
81 "application/x-www-form-urlencoded"
82 ],
83 "host": [
84 "phab.mercurial-scm.org"
85 ],
86 "user-agent": [
87 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
88 ]
89 },
90 "body": "__conduit__=1&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",
91 "uri": "https://phab.mercurial-scm.org//api/diffusion.repository.search",
92 "method": "POST"
93 },
94 "response": {
95 "headers": {
96 "x-xss-protection": [
97 "1; mode=block"
98 ],
99 "strict-transport-security": [
100 "max-age=0; includeSubdomains; preload"
101 ],
102 "transfer-encoding": [
103 "chunked"
104 ],
105 "x-frame-options": [
106 "Deny"
107 ],
108 "expires": [
109 "Sat, 01 Jan 2000 00:00:00 GMT"
110 ],
111 "content-type": [
112 "application/json"
113 ],
114 "referrer-policy": [
115 "no-referrer"
116 ],
117 "server": [
118 "Apache/2.4.10 (Debian)"
119 ],
120 "cache-control": [
121 "no-store"
122 ],
123 "x-content-type-options": [
124 "nosniff"
125 ],
126 "date": [
127 "Wed, 08 Apr 2020 21:13:29 GMT"
128 ]
129 },
130 "body": {
131 "string": "{\"result\":{\"data\":[{\"id\":2,\"type\":\"REPO\",\"phid\":\"PHID-REPO-bvunnehri4u2isyr7bc3\",\"fields\":{\"name\":\"Mercurial\",\"vcs\":\"hg\",\"callsign\":\"HG\",\"shortName\":null,\"status\":\"active\",\"isImporting\":false,\"almanacServicePHID\":null,\"refRules\":{\"fetchRules\":[],\"trackRules\":[],\"permanentRefRules\":[]},\"spacePHID\":null,\"dateCreated\":1498761653,\"dateModified\":1500403184,\"policy\":{\"view\":\"public\",\"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}"
132 },
133 "status": {
134 "code": 200,
135 "message": "OK"
136 }
137 }
138 },
139 {
140 "request": {
141 "headers": {
142 "content-length": [
143 "2327"
144 ],
145 "accept": [
146 "application/mercurial-0.1"
147 ],
148 "content-type": [
149 "application/x-www-form-urlencoded"
150 ],
151 "host": [
152 "phab.mercurial-scm.org"
153 ],
154 "user-agent": [
155 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
156 ]
157 },
158 "body": "__conduit__=1&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%22file.txt%22%3A+%7B%22addLines%22%3A+1%2C+%22awayPaths%22%3A+%5B%5D%2C+%22commitHash%22%3A+null%2C+%22currentPath%22%3A+%22file.txt%22%2C+%22delLines%22%3A+0%2C+%22fileType%22%3A+1%2C+%22hunks%22%3A+%5B%7B%22addLines%22%3A+1%2C+%22corpus%22%3A+%22%2Bmod3%5Cn%22%2C+%22delLines%22%3A+0%2C+%22newLength%22%3A+1%2C+%22newOffset%22%3A+1%2C+%22oldLength%22%3A+0%2C+%22oldOffset%22%3A+0%7D%5D%2C+%22metadata%22%3A+%7B%7D%2C+%22newProperties%22%3A+%7B%22unix%3Afilemode%22%3A+%22100644%22%7D%2C+%22oldPath%22%3A+null%2C+%22oldProperties%22%3A+%7B%7D%2C+%22type%22%3A+1%7D%2C+%22file2.txt%22%3A+%7B%22addLines%22%3A+1%2C+%22awayPaths%22%3A+%5B%5D%2C+%22commitHash%22%3A+null%2C+%22currentPath%22%3A+%22file2.txt%22%2C+%22delLines%22%3A+0%2C+%22fileType%22%3A+1%2C+%22hunks%22%3A+%5B%7B%22addLines%22%3A+1%2C+%22corpus%22%3A+%22%2Bamended+mod%5Cn%22%2C+%22delLines%22%3A+0%2C+%22newLength%22%3A+1%2C+%22newOffset%22%3A+1%2C+%22oldLength%22%3A+0%2C+%22oldOffset%22%3A+0%7D%5D%2C+%22metadata%22%3A+%7B%7D%2C+%22newProperties%22%3A+%7B%22unix%3Afilemode%22%3A+%22100644%22%7D%2C+%22oldPath%22%3A+null%2C+%22oldProperties%22%3A+%7B%7D%2C+%22type%22%3A+1%7D%2C+%22file3.txt%22%3A+%7B%22addLines%22%3A+1%2C+%22awayPaths%22%3A+%5B%5D%2C+%22commitHash%22%3A+null%2C+%22currentPath%22%3A+%22file3.txt%22%2C+%22delLines%22%3A+0%2C+%22fileType%22%3A+1%2C+%22hunks%22%3A+%5B%7B%22addLines%22%3A+1%2C+%22corpus%22%3A+%22%2Bfoo%5Cn%22%2C+%22delLines%22%3A+0%2C+%22newLength%22%3A+1%2C+%22newOffset%22%3A+1%2C+%22oldLength%22%3A+0%2C+%22oldOffset%22%3A+0%7D%5D%2C+%22metadata%22%3A+%7B%7D%2C+%22newProperties%22%3A+%7B%22unix%3Afilemode%22%3A+%22100644%22%7D%2C+%22oldPath%22%3A+null%2C+%22oldProperties%22%3A+%7B%7D%2C+%22type%22%3A+1%7D%7D%2C+%22creationMethod%22%3A+%22phabsend%22%2C+%22lintStatus%22%3A+%22none%22%2C+%22repositoryPHID%22%3A+%22PHID-REPO-bvunnehri4u2isyr7bc3%22%2C+%22sourceControlBaseRevision%22%3A+%220000000000000000000000000000000000000000%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",
159 "uri": "https://phab.mercurial-scm.org//api/differential.creatediff",
160 "method": "POST"
161 },
162 "response": {
163 "headers": {
164 "x-xss-protection": [
165 "1; mode=block"
166 ],
167 "strict-transport-security": [
168 "max-age=0; includeSubdomains; preload"
169 ],
170 "transfer-encoding": [
171 "chunked"
172 ],
173 "x-frame-options": [
174 "Deny"
175 ],
176 "expires": [
177 "Sat, 01 Jan 2000 00:00:00 GMT"
178 ],
179 "content-type": [
180 "application/json"
181 ],
182 "referrer-policy": [
183 "no-referrer"
184 ],
185 "server": [
186 "Apache/2.4.10 (Debian)"
187 ],
188 "cache-control": [
189 "no-store"
190 ],
191 "x-content-type-options": [
192 "nosniff"
193 ],
194 "date": [
195 "Wed, 08 Apr 2020 21:13:30 GMT"
196 ]
197 },
198 "body": {
199 "string": "{\"result\":{\"diffid\":21011,\"phid\":\"PHID-DIFF-vyaqmcwywxowtnjrfkkw\",\"uri\":\"https:\\/\\/phab.mercurial-scm.org\\/differential\\/diff\\/21011\\/\"},\"error_code\":null,\"error_info\":null}"
200 },
201 "status": {
202 "code": 200,
203 "message": "OK"
204 }
205 }
206 },
207 {
208 "request": {
209 "headers": {
210 "content-length": [
211 "482"
212 ],
213 "accept": [
214 "application/mercurial-0.1"
215 ],
216 "content-type": [
217 "application/x-www-form-urlencoded"
218 ],
219 "host": [
220 "phab.mercurial-scm.org"
221 ],
222 "user-agent": [
223 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
224 ]
225 },
226 "body": "__conduit__=1&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%22b50946d5e4901d7f7801d572342ef90d06a85a85%5C%22%2C+%5C%22parent%5C%22%3A+%5C%220000000000000000000000000000000000000000%5C%22%2C+%5C%22user%5C%22%3A+%5C%22test%5C%22%7D%22%2C+%22diff_id%22%3A+21011%2C+%22name%22%3A+%22hg%3Ameta%22%7D&output=json",
227 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
228 "method": "POST"
229 },
230 "response": {
231 "headers": {
232 "x-xss-protection": [
233 "1; mode=block"
234 ],
235 "strict-transport-security": [
236 "max-age=0; includeSubdomains; preload"
237 ],
238 "transfer-encoding": [
239 "chunked"
240 ],
241 "x-frame-options": [
242 "Deny"
243 ],
244 "expires": [
245 "Sat, 01 Jan 2000 00:00:00 GMT"
246 ],
247 "content-type": [
248 "application/json"
249 ],
250 "referrer-policy": [
251 "no-referrer"
252 ],
253 "server": [
254 "Apache/2.4.10 (Debian)"
255 ],
256 "cache-control": [
257 "no-store"
258 ],
259 "x-content-type-options": [
260 "nosniff"
261 ],
262 "date": [
263 "Wed, 08 Apr 2020 21:13:30 GMT"
264 ]
265 },
266 "body": {
267 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
268 },
269 "status": {
270 "code": 200,
271 "message": "OK"
272 }
273 }
274 },
275 {
276 "request": {
277 "headers": {
278 "content-length": [
279 "2514"
280 ],
281 "accept": [
282 "application/mercurial-0.1"
283 ],
284 "content-type": [
285 "application/x-www-form-urlencoded"
286 ],
287 "host": [
288 "phab.mercurial-scm.org"
289 ],
290 "user-agent": [
291 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
292 ]
293 },
294 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22data%22%3A+%22%7B%5C%2215e9b14b4b4c37ccd18298d058a184068718765e%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%2215e9b14b4b4c37ccd18298d058a184068718765e%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%220000000000000000000000000000000000000000%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%2230682b960804bd91823ea5ccb5d6a7d999f8d1ea%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%2230682b960804bd91823ea5ccb5d6a7d999f8d1ea%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%223ee132d41dbc24bf5a4df3e97573d6e922446565%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%223ee132d41dbc24bf5a4df3e97573d6e922446565%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%223ee132d41dbc24bf5a4df3e97573d6e922446565%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%226320b7d714cf2b2b71370eafeae29e2988d07872%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%226320b7d714cf2b2b71370eafeae29e2988d07872%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%226320b7d714cf2b2b71370eafeae29e2988d07872%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2215e9b14b4b4c37ccd18298d058a184068718765e%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%226bc15dc99efd596be5908c187f68d6810671121e%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%226bc15dc99efd596be5908c187f68d6810671121e%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2230682b960804bd91823ea5ccb5d6a7d999f8d1ea%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22b50946d5e4901d7f7801d572342ef90d06a85a85%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%22b50946d5e4901d7f7801d572342ef90d06a85a85%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%226bc15dc99efd596be5908c187f68d6810671121e%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%7D%22%2C+%22diff_id%22%3A+21011%2C+%22name%22%3A+%22local%3Acommits%22%7D&output=json",
295 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
296 "method": "POST"
297 },
298 "response": {
299 "headers": {
300 "x-xss-protection": [
301 "1; mode=block"
302 ],
303 "strict-transport-security": [
304 "max-age=0; includeSubdomains; preload"
305 ],
306 "transfer-encoding": [
307 "chunked"
308 ],
309 "x-frame-options": [
310 "Deny"
311 ],
312 "expires": [
313 "Sat, 01 Jan 2000 00:00:00 GMT"
314 ],
315 "content-type": [
316 "application/json"
317 ],
318 "referrer-policy": [
319 "no-referrer"
320 ],
321 "server": [
322 "Apache/2.4.10 (Debian)"
323 ],
324 "cache-control": [
325 "no-store"
326 ],
327 "x-content-type-options": [
328 "nosniff"
329 ],
330 "date": [
331 "Wed, 08 Apr 2020 21:13:30 GMT"
332 ]
333 },
334 "body": {
335 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
336 },
337 "status": {
338 "code": 200,
339 "message": "OK"
340 }
341 }
342 },
343 {
344 "request": {
345 "headers": {
346 "content-length": [
347 "232"
348 ],
349 "accept": [
350 "application/mercurial-0.1"
351 ],
352 "content-type": [
353 "application/x-www-form-urlencoded"
354 ],
355 "host": [
356 "phab.mercurial-scm.org"
357 ],
358 "user-agent": [
359 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
360 ]
361 },
362 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22added+file%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8388%22%7D&output=json",
363 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
364 "method": "POST"
365 },
366 "response": {
367 "headers": {
368 "x-xss-protection": [
369 "1; mode=block"
370 ],
371 "strict-transport-security": [
372 "max-age=0; includeSubdomains; preload"
373 ],
374 "transfer-encoding": [
375 "chunked"
376 ],
377 "x-frame-options": [
378 "Deny"
379 ],
380 "expires": [
381 "Sat, 01 Jan 2000 00:00:00 GMT"
382 ],
383 "content-type": [
384 "application/json"
385 ],
386 "referrer-policy": [
387 "no-referrer"
388 ],
389 "server": [
390 "Apache/2.4.10 (Debian)"
391 ],
392 "cache-control": [
393 "no-store"
394 ],
395 "x-content-type-options": [
396 "nosniff"
397 ],
398 "date": [
399 "Wed, 08 Apr 2020 21:13:31 GMT"
400 ]
401 },
402 "body": {
403 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"added file\",\"revisionID\":8388},\"revisionIDFieldInfo\":{\"value\":8388,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"added file\"}]},\"error_code\":null,\"error_info\":null}"
404 },
405 "status": {
406 "code": 200,
407 "message": "OK"
408 }
409 }
410 },
411 {
412 "request": {
413 "headers": {
414 "content-length": [
415 "364"
416 ],
417 "accept": [
418 "application/mercurial-0.1"
419 ],
420 "content-type": [
421 "application/x-www-form-urlencoded"
422 ],
423 "host": [
424 "phab.mercurial-scm.org"
425 ],
426 "user-agent": [
427 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
428 ]
429 },
430 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22one%3A+first+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod1%27+as+its+contents.%5Cn%5CnTest+Plan%3A%5CnLOL%21++What+testing%3F%21%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8388%22%7D&output=json",
431 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
432 "method": "POST"
433 },
434 "response": {
435 "headers": {
436 "x-xss-protection": [
437 "1; mode=block"
438 ],
439 "strict-transport-security": [
440 "max-age=0; includeSubdomains; preload"
441 ],
442 "transfer-encoding": [
443 "chunked"
444 ],
445 "x-frame-options": [
446 "Deny"
447 ],
448 "expires": [
449 "Sat, 01 Jan 2000 00:00:00 GMT"
450 ],
451 "content-type": [
452 "application/json"
453 ],
454 "referrer-policy": [
455 "no-referrer"
456 ],
457 "server": [
458 "Apache/2.4.10 (Debian)"
459 ],
460 "cache-control": [
461 "no-store"
462 ],
463 "x-content-type-options": [
464 "nosniff"
465 ],
466 "date": [
467 "Wed, 08 Apr 2020 21:13:31 GMT"
468 ]
469 },
470 "body": {
471 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"one: first commit to review\",\"testPlan\":\"LOL! What testing?!\",\"revisionID\":8388,\"summary\":\"This file was modified with 'mod1' as its contents.\"},\"revisionIDFieldInfo\":{\"value\":8388,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"one: first commit to review\"},{\"type\":\"testPlan\",\"value\":\"LOL! What testing?!\"},{\"type\":\"summary\",\"value\":\"This file was modified with 'mod1' as its contents.\"}]},\"error_code\":null,\"error_info\":null}"
472 },
473 "status": {
474 "code": 200,
475 "message": "OK"
476 }
477 }
478 },
479 {
480 "request": {
481 "headers": {
482 "content-length": [
483 "361"
484 ],
485 "accept": [
486 "application/mercurial-0.1"
487 ],
488 "content-type": [
489 "application/x-www-form-urlencoded"
490 ],
491 "host": [
492 "phab.mercurial-scm.org"
493 ],
494 "user-agent": [
495 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
496 ]
497 },
498 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22two%3A+second+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod2%27+as+its+contents.%5Cn%5CnTest+Plan%3A%5CnHaha%21+yeah%2C+right.%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8388%22%7D&output=json",
499 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
500 "method": "POST"
501 },
502 "response": {
503 "headers": {
504 "x-xss-protection": [
505 "1; mode=block"
506 ],
507 "strict-transport-security": [
508 "max-age=0; includeSubdomains; preload"
509 ],
510 "transfer-encoding": [
511 "chunked"
512 ],
513 "x-frame-options": [
514 "Deny"
515 ],
516 "expires": [
517 "Sat, 01 Jan 2000 00:00:00 GMT"
518 ],
519 "content-type": [
520 "application/json"
521 ],
522 "referrer-policy": [
523 "no-referrer"
524 ],
525 "server": [
526 "Apache/2.4.10 (Debian)"
527 ],
528 "cache-control": [
529 "no-store"
530 ],
531 "x-content-type-options": [
532 "nosniff"
533 ],
534 "date": [
535 "Wed, 08 Apr 2020 21:13:32 GMT"
536 ]
537 },
538 "body": {
539 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"two: second commit to review\",\"testPlan\":\"Haha! yeah, right.\",\"revisionID\":8388,\"summary\":\"This file was modified with 'mod2' as its contents.\"},\"revisionIDFieldInfo\":{\"value\":8388,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"two: second commit to review\"},{\"type\":\"testPlan\",\"value\":\"Haha! yeah, right.\"},{\"type\":\"summary\",\"value\":\"This file was modified with 'mod2' as its contents.\"}]},\"error_code\":null,\"error_info\":null}"
540 },
541 "status": {
542 "code": 200,
543 "message": "OK"
544 }
545 }
546 },
547 {
548 "request": {
549 "headers": {
550 "content-length": [
551 "260"
552 ],
553 "accept": [
554 "application/mercurial-0.1"
555 ],
556 "content-type": [
557 "application/x-www-form-urlencoded"
558 ],
559 "host": [
560 "phab.mercurial-scm.org"
561 ],
562 "user-agent": [
563 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
564 ]
565 },
566 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%223%3A+a+commit+with+no+detailed+message%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8388%22%7D&output=json",
567 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
568 "method": "POST"
569 },
570 "response": {
571 "headers": {
572 "x-xss-protection": [
573 "1; mode=block"
574 ],
575 "strict-transport-security": [
576 "max-age=0; includeSubdomains; preload"
577 ],
578 "transfer-encoding": [
579 "chunked"
580 ],
581 "x-frame-options": [
582 "Deny"
583 ],
584 "expires": [
585 "Sat, 01 Jan 2000 00:00:00 GMT"
586 ],
587 "content-type": [
588 "application/json"
589 ],
590 "referrer-policy": [
591 "no-referrer"
592 ],
593 "server": [
594 "Apache/2.4.10 (Debian)"
595 ],
596 "cache-control": [
597 "no-store"
598 ],
599 "x-content-type-options": [
600 "nosniff"
601 ],
602 "date": [
603 "Wed, 08 Apr 2020 21:13:32 GMT"
604 ]
605 },
606 "body": {
607 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"3: a commit with no detailed message\",\"revisionID\":8388},\"revisionIDFieldInfo\":{\"value\":8388,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"3: a commit with no detailed message\"}]},\"error_code\":null,\"error_info\":null}"
608 },
609 "status": {
610 "code": 200,
611 "message": "OK"
612 }
613 }
614 },
615 {
616 "request": {
617 "headers": {
618 "content-length": [
619 "251"
620 ],
621 "accept": [
622 "application/mercurial-0.1"
623 ],
624 "content-type": [
625 "application/x-www-form-urlencoded"
626 ],
627 "host": [
628 "phab.mercurial-scm.org"
629 ],
630 "user-agent": [
631 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
632 ]
633 },
634 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22four%3A+extend+the+fold+range%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8388%22%7D&output=json",
635 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
636 "method": "POST"
637 },
638 "response": {
639 "headers": {
640 "x-xss-protection": [
641 "1; mode=block"
642 ],
643 "strict-transport-security": [
644 "max-age=0; includeSubdomains; preload"
645 ],
646 "transfer-encoding": [
647 "chunked"
648 ],
649 "x-frame-options": [
650 "Deny"
651 ],
652 "expires": [
653 "Sat, 01 Jan 2000 00:00:00 GMT"
654 ],
655 "content-type": [
656 "application/json"
657 ],
658 "referrer-policy": [
659 "no-referrer"
660 ],
661 "server": [
662 "Apache/2.4.10 (Debian)"
663 ],
664 "cache-control": [
665 "no-store"
666 ],
667 "x-content-type-options": [
668 "nosniff"
669 ],
670 "date": [
671 "Wed, 08 Apr 2020 21:13:33 GMT"
672 ]
673 },
674 "body": {
675 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"four: extend the fold range\",\"revisionID\":8388},\"revisionIDFieldInfo\":{\"value\":8388,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"four: extend the fold range\"}]},\"error_code\":null,\"error_info\":null}"
676 },
677 "status": {
678 "code": 200,
679 "message": "OK"
680 }
681 }
682 },
683 {
684 "request": {
685 "headers": {
686 "content-length": [
687 "251"
688 ],
689 "accept": [
690 "application/mercurial-0.1"
691 ],
692 "content-type": [
693 "application/x-www-form-urlencoded"
694 ],
695 "host": [
696 "phab.mercurial-scm.org"
697 ],
698 "user-agent": [
699 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
700 ]
701 },
702 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22four%3A+extend+the+fold+range%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8388%22%7D&output=json",
703 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
704 "method": "POST"
705 },
706 "response": {
707 "headers": {
708 "x-xss-protection": [
709 "1; mode=block"
710 ],
711 "strict-transport-security": [
712 "max-age=0; includeSubdomains; preload"
713 ],
714 "transfer-encoding": [
715 "chunked"
716 ],
717 "x-frame-options": [
718 "Deny"
719 ],
720 "expires": [
721 "Sat, 01 Jan 2000 00:00:00 GMT"
722 ],
723 "content-type": [
724 "application/json"
725 ],
726 "referrer-policy": [
727 "no-referrer"
728 ],
729 "server": [
730 "Apache/2.4.10 (Debian)"
731 ],
732 "cache-control": [
733 "no-store"
734 ],
735 "x-content-type-options": [
736 "nosniff"
737 ],
738 "date": [
739 "Wed, 08 Apr 2020 21:13:33 GMT"
740 ]
741 },
742 "body": {
743 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"four: extend the fold range\",\"revisionID\":8388},\"revisionIDFieldInfo\":{\"value\":8388,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"four: extend the fold range\"}]},\"error_code\":null,\"error_info\":null}"
744 },
745 "status": {
746 "code": 200,
747 "message": "OK"
748 }
749 }
750 },
751 {
752 "request": {
753 "headers": {
754 "content-length": [
755 "836"
756 ],
757 "accept": [
758 "application/mercurial-0.1"
759 ],
760 "content-type": [
761 "application/x-www-form-urlencoded"
762 ],
763 "host": [
764 "phab.mercurial-scm.org"
765 ],
766 "user-agent": [
767 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
768 ]
769 },
770 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22objectIdentifier%22%3A+8388%2C+%22transactions%22%3A+%5B%7B%22type%22%3A+%22update%22%2C+%22value%22%3A+%22PHID-DIFF-vyaqmcwywxowtnjrfkkw%22%7D%2C+%7B%22type%22%3A+%22title%22%2C+%22value%22%3A+%22added+file%22%7D%2C+%7B%22type%22%3A+%22testPlan%22%2C+%22value%22%3A+%22LOL%21++What+testing%3F%21%5Cn%5CnHaha%21+yeah%2C+right.%22%7D%2C+%7B%22type%22%3A+%22summary%22%2C+%22value%22%3A+%22one%3A+first+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod1%27+as+its+contents.%5Cn%5Cntwo%3A+second+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod2%27+as+its+contents.%5Cn%5Cn3%3A+a+commit+with+no+detailed+message%5Cn%5Cnfour%3A+extend+the+fold+range%5Cn%5Cnfour%3A+extend+the+fold+range%22%7D%5D%7D&output=json",
771 "uri": "https://phab.mercurial-scm.org//api/differential.revision.edit",
772 "method": "POST"
773 },
774 "response": {
775 "headers": {
776 "x-xss-protection": [
777 "1; mode=block"
778 ],
779 "strict-transport-security": [
780 "max-age=0; includeSubdomains; preload"
781 ],
782 "transfer-encoding": [
783 "chunked"
784 ],
785 "x-frame-options": [
786 "Deny"
787 ],
788 "expires": [
789 "Sat, 01 Jan 2000 00:00:00 GMT"
790 ],
791 "content-type": [
792 "application/json"
793 ],
794 "referrer-policy": [
795 "no-referrer"
796 ],
797 "server": [
798 "Apache/2.4.10 (Debian)"
799 ],
800 "cache-control": [
801 "no-store"
802 ],
803 "x-content-type-options": [
804 "nosniff"
805 ],
806 "date": [
807 "Wed, 08 Apr 2020 21:13:33 GMT"
808 ]
809 },
810 "body": {
811 "string": "{\"result\":{\"object\":{\"id\":8388,\"phid\":\"PHID-DREV-v5iywrnzj4h4uwo57pob\"},\"transactions\":[{\"phid\":\"PHID-XACT-DREV-hnejfcaarddna5z\"},{\"phid\":\"PHID-XACT-DREV-7icktpjfcm77foq\"}]},\"error_code\":null,\"error_info\":null}"
812 },
813 "status": {
814 "code": 200,
815 "message": "OK"
816 }
817 }
818 },
819 {
820 "request": {
821 "headers": {
822 "content-length": [
823 "146"
824 ],
825 "accept": [
826 "application/mercurial-0.1"
827 ],
828 "content-type": [
829 "application/x-www-form-urlencoded"
830 ],
831 "host": [
832 "phab.mercurial-scm.org"
833 ],
834 "user-agent": [
835 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
836 ]
837 },
838 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22ids%22%3A+%5B8388%5D%7D&output=json",
839 "uri": "https://phab.mercurial-scm.org//api/differential.query",
840 "method": "POST"
841 },
842 "response": {
843 "headers": {
844 "x-xss-protection": [
845 "1; mode=block"
846 ],
847 "strict-transport-security": [
848 "max-age=0; includeSubdomains; preload"
849 ],
850 "transfer-encoding": [
851 "chunked"
852 ],
853 "x-frame-options": [
854 "Deny"
855 ],
856 "expires": [
857 "Sat, 01 Jan 2000 00:00:00 GMT"
858 ],
859 "content-type": [
860 "application/json"
861 ],
862 "referrer-policy": [
863 "no-referrer"
864 ],
865 "server": [
866 "Apache/2.4.10 (Debian)"
867 ],
868 "cache-control": [
869 "no-store"
870 ],
871 "x-content-type-options": [
872 "nosniff"
873 ],
874 "date": [
875 "Wed, 08 Apr 2020 21:13:34 GMT"
876 ]
877 },
878 "body": {
879 "string": "{\"result\":[{\"id\":\"8388\",\"phid\":\"PHID-DREV-v5iywrnzj4h4uwo57pob\",\"title\":\"added file\",\"uri\":\"https:\\/\\/phab.mercurial-scm.org\\/D8388\",\"dateCreated\":\"1586380405\",\"dateModified\":\"1586380414\",\"authorPHID\":\"PHID-USER-tzhaient733lwrlbcag5\",\"status\":\"0\",\"statusName\":\"Needs Review\",\"properties\":{\"draft.broadcast\":true,\"lines.added\":3,\"lines.removed\":0},\"branch\":\"default\",\"summary\":\"one: first commit to review\\n\\nThis file was modified with 'mod1' as its contents.\\n\\ntwo: second commit to review\\n\\nThis file was modified with 'mod2' as its contents.\\n\\n3: a commit with no detailed message\\n\\nfour: extend the fold range\\n\\nfour: extend the fold range\",\"testPlan\":\"LOL! What testing?!\\n\\nHaha! yeah, right.\",\"lineCount\":\"3\",\"activeDiffPHID\":\"PHID-DIFF-vyaqmcwywxowtnjrfkkw\",\"diffs\":[\"21011\",\"21010\"],\"commits\":[],\"reviewers\":{\"PHID-PROJ-3dvcxzznrjru2xmmses3\":\"PHID-PROJ-3dvcxzznrjru2xmmses3\"},\"ccs\":[\"PHID-USER-q42dn7cc3donqriafhjx\"],\"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\"],[\"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\"],[\"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\"],[\"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\"],[\"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\"],[\"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-bvunnehri4u2isyr7bc3\",\"sourcePath\":\"\\/\"}],\"error_code\":null,\"error_info\":null}"
880 },
881 "status": {
882 "code": 200,
883 "message": "OK"
884 }
885 }
886 },
887 {
888 "request": {
889 "headers": {
890 "content-length": [
891 "482"
892 ],
893 "accept": [
894 "application/mercurial-0.1"
895 ],
896 "content-type": [
897 "application/x-www-form-urlencoded"
898 ],
899 "host": [
900 "phab.mercurial-scm.org"
901 ],
902 "user-agent": [
903 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
904 ]
905 },
906 "body": "__conduit__=1&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%22b50946d5e4901d7f7801d572342ef90d06a85a85%5C%22%2C+%5C%22parent%5C%22%3A+%5C%220000000000000000000000000000000000000000%5C%22%2C+%5C%22user%5C%22%3A+%5C%22test%5C%22%7D%22%2C+%22diff_id%22%3A+21011%2C+%22name%22%3A+%22hg%3Ameta%22%7D&output=json",
907 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
908 "method": "POST"
909 },
910 "response": {
911 "headers": {
912 "x-xss-protection": [
913 "1; mode=block"
914 ],
915 "strict-transport-security": [
916 "max-age=0; includeSubdomains; preload"
917 ],
918 "transfer-encoding": [
919 "chunked"
920 ],
921 "x-frame-options": [
922 "Deny"
923 ],
924 "expires": [
925 "Sat, 01 Jan 2000 00:00:00 GMT"
926 ],
927 "content-type": [
928 "application/json"
929 ],
930 "referrer-policy": [
931 "no-referrer"
932 ],
933 "server": [
934 "Apache/2.4.10 (Debian)"
935 ],
936 "cache-control": [
937 "no-store"
938 ],
939 "x-content-type-options": [
940 "nosniff"
941 ],
942 "date": [
943 "Wed, 08 Apr 2020 21:13:35 GMT"
944 ],
945 "connection": [
946 "close"
947 ]
948 },
949 "body": {
950 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
951 },
952 "status": {
953 "code": 200,
954 "message": "OK"
955 }
956 }
957 },
958 {
959 "request": {
960 "headers": {
961 "content-length": [
962 "2514"
963 ],
964 "accept": [
965 "application/mercurial-0.1"
966 ],
967 "content-type": [
968 "application/x-www-form-urlencoded"
969 ],
970 "host": [
971 "phab.mercurial-scm.org"
972 ],
973 "user-agent": [
974 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
975 ]
976 },
977 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22data%22%3A+%22%7B%5C%2215e9b14b4b4c37ccd18298d058a184068718765e%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%2215e9b14b4b4c37ccd18298d058a184068718765e%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%220000000000000000000000000000000000000000%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%2230682b960804bd91823ea5ccb5d6a7d999f8d1ea%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%2230682b960804bd91823ea5ccb5d6a7d999f8d1ea%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%223ee132d41dbc24bf5a4df3e97573d6e922446565%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%223ee132d41dbc24bf5a4df3e97573d6e922446565%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%223ee132d41dbc24bf5a4df3e97573d6e922446565%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%226320b7d714cf2b2b71370eafeae29e2988d07872%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%226320b7d714cf2b2b71370eafeae29e2988d07872%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%226320b7d714cf2b2b71370eafeae29e2988d07872%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2215e9b14b4b4c37ccd18298d058a184068718765e%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%226bc15dc99efd596be5908c187f68d6810671121e%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%226bc15dc99efd596be5908c187f68d6810671121e%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2230682b960804bd91823ea5ccb5d6a7d999f8d1ea%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22b50946d5e4901d7f7801d572342ef90d06a85a85%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%22b50946d5e4901d7f7801d572342ef90d06a85a85%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%226bc15dc99efd596be5908c187f68d6810671121e%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%7D%22%2C+%22diff_id%22%3A+21011%2C+%22name%22%3A+%22local%3Acommits%22%7D&output=json",
978 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
979 "method": "POST"
980 },
981 "response": {
982 "headers": {
983 "x-xss-protection": [
984 "1; mode=block"
985 ],
986 "strict-transport-security": [
987 "max-age=0; includeSubdomains; preload"
988 ],
989 "transfer-encoding": [
990 "chunked"
991 ],
992 "x-frame-options": [
993 "Deny"
994 ],
995 "expires": [
996 "Sat, 01 Jan 2000 00:00:00 GMT"
997 ],
998 "content-type": [
999 "application/json"
1000 ],
1001 "referrer-policy": [
1002 "no-referrer"
1003 ],
1004 "server": [
1005 "Apache/2.4.10 (Debian)"
1006 ],
1007 "cache-control": [
1008 "no-store"
1009 ],
1010 "x-content-type-options": [
1011 "nosniff"
1012 ],
1013 "date": [
1014 "Wed, 08 Apr 2020 21:13:35 GMT"
1015 ]
1016 },
1017 "body": {
1018 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
1019 },
1020 "status": {
1021 "code": 200,
1022 "message": "OK"
1023 }
1024 }
1025 }
1026 ],
1027 "version": 1
1028 } No newline at end of file
This diff has been collapsed as it changes many lines, (824 lines changed) Show them Hide them
@@ -0,0 +1,824
1 {
2 "interactions": [
3 {
4 "request": {
5 "headers": {
6 "content-length": [
7 "170"
8 ],
9 "accept": [
10 "application/mercurial-0.1"
11 ],
12 "content-type": [
13 "application/x-www-form-urlencoded"
14 ],
15 "host": [
16 "phab.mercurial-scm.org"
17 ],
18 "user-agent": [
19 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
20 ]
21 },
22 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22revisionIDs%22%3A+%5B8387%2C+8387%2C+8387%5D%7D&output=json",
23 "uri": "https://phab.mercurial-scm.org//api/differential.querydiffs",
24 "method": "POST"
25 },
26 "response": {
27 "headers": {
28 "x-xss-protection": [
29 "1; mode=block"
30 ],
31 "strict-transport-security": [
32 "max-age=0; includeSubdomains; preload"
33 ],
34 "transfer-encoding": [
35 "chunked"
36 ],
37 "x-frame-options": [
38 "Deny"
39 ],
40 "expires": [
41 "Sat, 01 Jan 2000 00:00:00 GMT"
42 ],
43 "content-type": [
44 "application/json"
45 ],
46 "referrer-policy": [
47 "no-referrer"
48 ],
49 "server": [
50 "Apache/2.4.10 (Debian)"
51 ],
52 "cache-control": [
53 "no-store"
54 ],
55 "x-content-type-options": [
56 "nosniff"
57 ],
58 "date": [
59 "Wed, 08 Apr 2020 21:13:01 GMT"
60 ],
61 "connection": [
62 "close"
63 ]
64 },
65 "body": {
66 "string": "{\"result\":{\"21006\":{\"id\":\"21006\",\"revisionID\":\"8387\",\"dateCreated\":\"1586380375\",\"dateModified\":\"1586380377\",\"sourceControlBaseRevision\":\"98d480e0d494906d9758c44c622951b429afd862\",\"sourceControlPath\":\"\\/\",\"sourceControlSystem\":\"hg\",\"branch\":\"default\",\"bookmark\":null,\"creationMethod\":\"phabsend\",\"description\":null,\"unitStatus\":\"0\",\"lintStatus\":\"0\",\"changes\":[{\"id\":\"56823\",\"metadata\":{\"line:first\":1,\"hash.effect\":\"cAKuVP31KNrx\"},\"oldPath\":\"file.txt\",\"currentPath\":\"file.txt\",\"awayPaths\":[],\"oldProperties\":[],\"newProperties\":[],\"type\":\"2\",\"fileType\":\"1\",\"commitHash\":null,\"addLines\":\"1\",\"delLines\":\"1\",\"hunks\":[{\"oldOffset\":\"1\",\"newOffset\":\"1\",\"oldLength\":\"1\",\"newLength\":\"1\",\"addLines\":null,\"delLines\":null,\"isMissingOldNewline\":null,\"isMissingNewNewline\":null,\"corpus\":\"-added\\n+mod3\\n\"}]}],\"properties\":{\"hg:meta\":{\"branch\":\"default\",\"date\":\"0 0\",\"node\":\"921f8265efbd92e92bfa5d7a0e047908de9844a5\",\"parent\":\"98d480e0d494906d9758c44c622951b429afd862\",\"user\":\"test\"},\"local:commits\":{\"602c4e7382436988e46c0d56fb3883968302b3f6\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"602c4e7382436988e46c0d56fb3883968302b3f6\",\"parents\":[\"98d480e0d494906d9758c44c622951b429afd862\"],\"time\":0},\"832553266fe8c3330d968e6987df4ae793483b2b\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"832553266fe8c3330d968e6987df4ae793483b2b\",\"parents\":[\"602c4e7382436988e46c0d56fb3883968302b3f6\"],\"time\":0},\"921f8265efbd92e92bfa5d7a0e047908de9844a5\":{\"author\":\"test\",\"authorEmail\":\"test\",\"branch\":\"default\",\"commit\":\"921f8265efbd92e92bfa5d7a0e047908de9844a5\",\"parents\":[\"832553266fe8c3330d968e6987df4ae793483b2b\"],\"time\":0}}},\"authorName\":\"test\",\"authorEmail\":\"test\"}},\"error_code\":null,\"error_info\":null}"
67 },
68 "status": {
69 "code": 200,
70 "message": "OK"
71 }
72 }
73 },
74 {
75 "request": {
76 "headers": {
77 "content-length": [
78 "183"
79 ],
80 "accept": [
81 "application/mercurial-0.1"
82 ],
83 "content-type": [
84 "application/x-www-form-urlencoded"
85 ],
86 "host": [
87 "phab.mercurial-scm.org"
88 ],
89 "user-agent": [
90 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
91 ]
92 },
93 "body": "__conduit__=1&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",
94 "uri": "https://phab.mercurial-scm.org//api/diffusion.repository.search",
95 "method": "POST"
96 },
97 "response": {
98 "headers": {
99 "x-xss-protection": [
100 "1; mode=block"
101 ],
102 "strict-transport-security": [
103 "max-age=0; includeSubdomains; preload"
104 ],
105 "transfer-encoding": [
106 "chunked"
107 ],
108 "x-frame-options": [
109 "Deny"
110 ],
111 "expires": [
112 "Sat, 01 Jan 2000 00:00:00 GMT"
113 ],
114 "content-type": [
115 "application/json"
116 ],
117 "referrer-policy": [
118 "no-referrer"
119 ],
120 "server": [
121 "Apache/2.4.10 (Debian)"
122 ],
123 "cache-control": [
124 "no-store"
125 ],
126 "x-content-type-options": [
127 "nosniff"
128 ],
129 "date": [
130 "Wed, 08 Apr 2020 21:13:02 GMT"
131 ]
132 },
133 "body": {
134 "string": "{\"result\":{\"data\":[{\"id\":2,\"type\":\"REPO\",\"phid\":\"PHID-REPO-bvunnehri4u2isyr7bc3\",\"fields\":{\"name\":\"Mercurial\",\"vcs\":\"hg\",\"callsign\":\"HG\",\"shortName\":null,\"status\":\"active\",\"isImporting\":false,\"almanacServicePHID\":null,\"refRules\":{\"fetchRules\":[],\"trackRules\":[],\"permanentRefRules\":[]},\"spacePHID\":null,\"dateCreated\":1498761653,\"dateModified\":1500403184,\"policy\":{\"view\":\"public\",\"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}"
135 },
136 "status": {
137 "code": 200,
138 "message": "OK"
139 }
140 }
141 },
142 {
143 "request": {
144 "headers": {
145 "content-length": [
146 "1736"
147 ],
148 "accept": [
149 "application/mercurial-0.1"
150 ],
151 "content-type": [
152 "application/x-www-form-urlencoded"
153 ],
154 "host": [
155 "phab.mercurial-scm.org"
156 ],
157 "user-agent": [
158 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
159 ]
160 },
161 "body": "__conduit__=1&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%22file.txt%22%3A+%7B%22addLines%22%3A+1%2C+%22awayPaths%22%3A+%5B%5D%2C+%22commitHash%22%3A+null%2C+%22currentPath%22%3A+%22file.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-added%5Cn%2Bmod3%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+%22file.txt%22%2C+%22oldProperties%22%3A+%7B%7D%2C+%22type%22%3A+2%7D%2C+%22file2.txt%22%3A+%7B%22addLines%22%3A+1%2C+%22awayPaths%22%3A+%5B%5D%2C+%22commitHash%22%3A+null%2C+%22currentPath%22%3A+%22file2.txt%22%2C+%22delLines%22%3A+0%2C+%22fileType%22%3A+1%2C+%22hunks%22%3A+%5B%7B%22addLines%22%3A+1%2C+%22corpus%22%3A+%22%2Bmodified%5Cn%22%2C+%22delLines%22%3A+0%2C+%22newLength%22%3A+1%2C+%22newOffset%22%3A+1%2C+%22oldLength%22%3A+0%2C+%22oldOffset%22%3A+0%7D%5D%2C+%22metadata%22%3A+%7B%7D%2C+%22newProperties%22%3A+%7B%22unix%3Afilemode%22%3A+%22100644%22%7D%2C+%22oldPath%22%3A+null%2C+%22oldProperties%22%3A+%7B%7D%2C+%22type%22%3A+1%7D%7D%2C+%22creationMethod%22%3A+%22phabsend%22%2C+%22lintStatus%22%3A+%22none%22%2C+%22repositoryPHID%22%3A+%22PHID-REPO-bvunnehri4u2isyr7bc3%22%2C+%22sourceControlBaseRevision%22%3A+%2298d480e0d494906d9758c44c622951b429afd862%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",
162 "uri": "https://phab.mercurial-scm.org//api/differential.creatediff",
163 "method": "POST"
164 },
165 "response": {
166 "headers": {
167 "x-xss-protection": [
168 "1; mode=block"
169 ],
170 "strict-transport-security": [
171 "max-age=0; includeSubdomains; preload"
172 ],
173 "transfer-encoding": [
174 "chunked"
175 ],
176 "x-frame-options": [
177 "Deny"
178 ],
179 "expires": [
180 "Sat, 01 Jan 2000 00:00:00 GMT"
181 ],
182 "content-type": [
183 "application/json"
184 ],
185 "referrer-policy": [
186 "no-referrer"
187 ],
188 "server": [
189 "Apache/2.4.10 (Debian)"
190 ],
191 "cache-control": [
192 "no-store"
193 ],
194 "x-content-type-options": [
195 "nosniff"
196 ],
197 "date": [
198 "Wed, 08 Apr 2020 21:13:02 GMT"
199 ]
200 },
201 "body": {
202 "string": "{\"result\":{\"diffid\":21007,\"phid\":\"PHID-DIFF-zkluur4ou3j4pswpif6e\",\"uri\":\"https:\\/\\/phab.mercurial-scm.org\\/differential\\/diff\\/21007\\/\"},\"error_code\":null,\"error_info\":null}"
203 },
204 "status": {
205 "code": 200,
206 "message": "OK"
207 }
208 }
209 },
210 {
211 "request": {
212 "headers": {
213 "content-length": [
214 "482"
215 ],
216 "accept": [
217 "application/mercurial-0.1"
218 ],
219 "content-type": [
220 "application/x-www-form-urlencoded"
221 ],
222 "host": [
223 "phab.mercurial-scm.org"
224 ],
225 "user-agent": [
226 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
227 ]
228 },
229 "body": "__conduit__=1&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%22e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac%5C%22%2C+%5C%22parent%5C%22%3A+%5C%2298d480e0d494906d9758c44c622951b429afd862%5C%22%2C+%5C%22user%5C%22%3A+%5C%22test%5C%22%7D%22%2C+%22diff_id%22%3A+21007%2C+%22name%22%3A+%22hg%3Ameta%22%7D&output=json",
230 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
231 "method": "POST"
232 },
233 "response": {
234 "headers": {
235 "x-xss-protection": [
236 "1; mode=block"
237 ],
238 "strict-transport-security": [
239 "max-age=0; includeSubdomains; preload"
240 ],
241 "transfer-encoding": [
242 "chunked"
243 ],
244 "x-frame-options": [
245 "Deny"
246 ],
247 "expires": [
248 "Sat, 01 Jan 2000 00:00:00 GMT"
249 ],
250 "content-type": [
251 "application/json"
252 ],
253 "referrer-policy": [
254 "no-referrer"
255 ],
256 "server": [
257 "Apache/2.4.10 (Debian)"
258 ],
259 "cache-control": [
260 "no-store"
261 ],
262 "x-content-type-options": [
263 "nosniff"
264 ],
265 "date": [
266 "Wed, 08 Apr 2020 21:13:03 GMT"
267 ]
268 },
269 "body": {
270 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
271 },
272 "status": {
273 "code": 200,
274 "message": "OK"
275 }
276 }
277 },
278 {
279 "request": {
280 "headers": {
281 "content-length": [
282 "1362"
283 ],
284 "accept": [
285 "application/mercurial-0.1"
286 ],
287 "content-type": [
288 "application/x-www-form-urlencoded"
289 ],
290 "host": [
291 "phab.mercurial-scm.org"
292 ],
293 "user-agent": [
294 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
295 ]
296 },
297 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22data%22%3A+%22%7B%5C%220124e5474c880e4fb40c8326ad2b75ae3e57ee5f%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%220124e5474c880e4fb40c8326ad2b75ae3e57ee5f%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%22602c4e7382436988e46c0d56fb3883968302b3f6%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22602c4e7382436988e46c0d56fb3883968302b3f6%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%22602c4e7382436988e46c0d56fb3883968302b3f6%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2298d480e0d494906d9758c44c622951b429afd862%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac%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%22e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%220124e5474c880e4fb40c8326ad2b75ae3e57ee5f%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%7D%22%2C+%22diff_id%22%3A+21007%2C+%22name%22%3A+%22local%3Acommits%22%7D&output=json",
298 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
299 "method": "POST"
300 },
301 "response": {
302 "headers": {
303 "x-xss-protection": [
304 "1; mode=block"
305 ],
306 "strict-transport-security": [
307 "max-age=0; includeSubdomains; preload"
308 ],
309 "transfer-encoding": [
310 "chunked"
311 ],
312 "x-frame-options": [
313 "Deny"
314 ],
315 "expires": [
316 "Sat, 01 Jan 2000 00:00:00 GMT"
317 ],
318 "content-type": [
319 "application/json"
320 ],
321 "referrer-policy": [
322 "no-referrer"
323 ],
324 "server": [
325 "Apache/2.4.10 (Debian)"
326 ],
327 "cache-control": [
328 "no-store"
329 ],
330 "x-content-type-options": [
331 "nosniff"
332 ],
333 "date": [
334 "Wed, 08 Apr 2020 21:13:03 GMT"
335 ]
336 },
337 "body": {
338 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
339 },
340 "status": {
341 "code": 200,
342 "message": "OK"
343 }
344 }
345 },
346 {
347 "request": {
348 "headers": {
349 "content-length": [
350 "364"
351 ],
352 "accept": [
353 "application/mercurial-0.1"
354 ],
355 "content-type": [
356 "application/x-www-form-urlencoded"
357 ],
358 "host": [
359 "phab.mercurial-scm.org"
360 ],
361 "user-agent": [
362 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
363 ]
364 },
365 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22one%3A+first+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod1%27+as+its+contents.%5Cn%5CnTest+Plan%3A%5CnLOL%21++What+testing%3F%21%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8387%22%7D&output=json",
366 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
367 "method": "POST"
368 },
369 "response": {
370 "headers": {
371 "x-xss-protection": [
372 "1; mode=block"
373 ],
374 "strict-transport-security": [
375 "max-age=0; includeSubdomains; preload"
376 ],
377 "transfer-encoding": [
378 "chunked"
379 ],
380 "x-frame-options": [
381 "Deny"
382 ],
383 "expires": [
384 "Sat, 01 Jan 2000 00:00:00 GMT"
385 ],
386 "content-type": [
387 "application/json"
388 ],
389 "referrer-policy": [
390 "no-referrer"
391 ],
392 "server": [
393 "Apache/2.4.10 (Debian)"
394 ],
395 "cache-control": [
396 "no-store"
397 ],
398 "x-content-type-options": [
399 "nosniff"
400 ],
401 "date": [
402 "Wed, 08 Apr 2020 21:13:04 GMT"
403 ]
404 },
405 "body": {
406 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"one: first commit to review\",\"testPlan\":\"LOL! What testing?!\",\"revisionID\":8387,\"summary\":\"This file was modified with 'mod1' as its contents.\"},\"revisionIDFieldInfo\":{\"value\":8387,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"one: first commit to review\"},{\"type\":\"testPlan\",\"value\":\"LOL! What testing?!\"},{\"type\":\"summary\",\"value\":\"This file was modified with 'mod1' as its contents.\"}]},\"error_code\":null,\"error_info\":null}"
407 },
408 "status": {
409 "code": 200,
410 "message": "OK"
411 }
412 }
413 },
414 {
415 "request": {
416 "headers": {
417 "content-length": [
418 "361"
419 ],
420 "accept": [
421 "application/mercurial-0.1"
422 ],
423 "content-type": [
424 "application/x-www-form-urlencoded"
425 ],
426 "host": [
427 "phab.mercurial-scm.org"
428 ],
429 "user-agent": [
430 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
431 ]
432 },
433 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%22two%3A+second+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod2%27+as+its+contents.%5Cn%5CnTest+Plan%3A%5CnHaha%21+yeah%2C+right.%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8387%22%7D&output=json",
434 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
435 "method": "POST"
436 },
437 "response": {
438 "headers": {
439 "x-xss-protection": [
440 "1; mode=block"
441 ],
442 "strict-transport-security": [
443 "max-age=0; includeSubdomains; preload"
444 ],
445 "transfer-encoding": [
446 "chunked"
447 ],
448 "x-frame-options": [
449 "Deny"
450 ],
451 "expires": [
452 "Sat, 01 Jan 2000 00:00:00 GMT"
453 ],
454 "content-type": [
455 "application/json"
456 ],
457 "referrer-policy": [
458 "no-referrer"
459 ],
460 "server": [
461 "Apache/2.4.10 (Debian)"
462 ],
463 "cache-control": [
464 "no-store"
465 ],
466 "x-content-type-options": [
467 "nosniff"
468 ],
469 "date": [
470 "Wed, 08 Apr 2020 21:13:04 GMT"
471 ]
472 },
473 "body": {
474 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"two: second commit to review\",\"testPlan\":\"Haha! yeah, right.\",\"revisionID\":8387,\"summary\":\"This file was modified with 'mod2' as its contents.\"},\"revisionIDFieldInfo\":{\"value\":8387,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"two: second commit to review\"},{\"type\":\"testPlan\",\"value\":\"Haha! yeah, right.\"},{\"type\":\"summary\",\"value\":\"This file was modified with 'mod2' as its contents.\"}]},\"error_code\":null,\"error_info\":null}"
475 },
476 "status": {
477 "code": 200,
478 "message": "OK"
479 }
480 }
481 },
482 {
483 "request": {
484 "headers": {
485 "content-length": [
486 "260"
487 ],
488 "accept": [
489 "application/mercurial-0.1"
490 ],
491 "content-type": [
492 "application/x-www-form-urlencoded"
493 ],
494 "host": [
495 "phab.mercurial-scm.org"
496 ],
497 "user-agent": [
498 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
499 ]
500 },
501 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22corpus%22%3A+%223%3A+a+commit+with+no+detailed+message%5Cn%5CnDifferential+Revision%3A+https%3A%2F%2Fphab.mercurial-scm.org%2FD8387%22%7D&output=json",
502 "uri": "https://phab.mercurial-scm.org//api/differential.parsecommitmessage",
503 "method": "POST"
504 },
505 "response": {
506 "headers": {
507 "x-xss-protection": [
508 "1; mode=block"
509 ],
510 "strict-transport-security": [
511 "max-age=0; includeSubdomains; preload"
512 ],
513 "transfer-encoding": [
514 "chunked"
515 ],
516 "x-frame-options": [
517 "Deny"
518 ],
519 "expires": [
520 "Sat, 01 Jan 2000 00:00:00 GMT"
521 ],
522 "content-type": [
523 "application/json"
524 ],
525 "referrer-policy": [
526 "no-referrer"
527 ],
528 "server": [
529 "Apache/2.4.10 (Debian)"
530 ],
531 "cache-control": [
532 "no-store"
533 ],
534 "x-content-type-options": [
535 "nosniff"
536 ],
537 "date": [
538 "Wed, 08 Apr 2020 21:13:04 GMT"
539 ]
540 },
541 "body": {
542 "string": "{\"result\":{\"errors\":[],\"fields\":{\"title\":\"3: a commit with no detailed message\",\"revisionID\":8387},\"revisionIDFieldInfo\":{\"value\":8387,\"validDomain\":\"https:\\/\\/phab.mercurial-scm.org\"},\"transactions\":[{\"type\":\"title\",\"value\":\"3: a commit with no detailed message\"}]},\"error_code\":null,\"error_info\":null}"
543 },
544 "status": {
545 "code": 200,
546 "message": "OK"
547 }
548 }
549 },
550 {
551 "request": {
552 "headers": {
553 "content-length": [
554 "744"
555 ],
556 "accept": [
557 "application/mercurial-0.1"
558 ],
559 "content-type": [
560 "application/x-www-form-urlencoded"
561 ],
562 "host": [
563 "phab.mercurial-scm.org"
564 ],
565 "user-agent": [
566 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
567 ]
568 },
569 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22objectIdentifier%22%3A+8387%2C+%22transactions%22%3A+%5B%7B%22type%22%3A+%22update%22%2C+%22value%22%3A+%22PHID-DIFF-zkluur4ou3j4pswpif6e%22%7D%2C+%7B%22type%22%3A+%22title%22%2C+%22value%22%3A+%22one%3A+first+commit+to+review%22%7D%2C+%7B%22type%22%3A+%22testPlan%22%2C+%22value%22%3A+%22LOL%21++What+testing%3F%21%5Cn%5CnHaha%21+yeah%2C+right.%22%7D%2C+%7B%22type%22%3A+%22summary%22%2C+%22value%22%3A+%22This+file+was+modified+with+%27mod1%27+as+its+contents.%5Cn%5Cntwo%3A+second+commit+to+review%5Cn%5CnThis+file+was+modified+with+%27mod2%27+as+its+contents.%5Cn%5Cn3%3A+a+commit+with+no+detailed+message%22%7D%5D%7D&output=json",
570 "uri": "https://phab.mercurial-scm.org//api/differential.revision.edit",
571 "method": "POST"
572 },
573 "response": {
574 "headers": {
575 "x-xss-protection": [
576 "1; mode=block"
577 ],
578 "strict-transport-security": [
579 "max-age=0; includeSubdomains; preload"
580 ],
581 "transfer-encoding": [
582 "chunked"
583 ],
584 "x-frame-options": [
585 "Deny"
586 ],
587 "expires": [
588 "Sat, 01 Jan 2000 00:00:00 GMT"
589 ],
590 "content-type": [
591 "application/json"
592 ],
593 "referrer-policy": [
594 "no-referrer"
595 ],
596 "server": [
597 "Apache/2.4.10 (Debian)"
598 ],
599 "cache-control": [
600 "no-store"
601 ],
602 "x-content-type-options": [
603 "nosniff"
604 ],
605 "date": [
606 "Wed, 08 Apr 2020 21:13:05 GMT"
607 ]
608 },
609 "body": {
610 "string": "{\"result\":{\"object\":{\"id\":8387,\"phid\":\"PHID-DREV-6ov3pvjim4txejzekw2t\"},\"transactions\":[{\"phid\":\"PHID-XACT-DREV-thuey6pboatact4\"}]},\"error_code\":null,\"error_info\":null}"
611 },
612 "status": {
613 "code": 200,
614 "message": "OK"
615 }
616 }
617 },
618 {
619 "request": {
620 "headers": {
621 "content-length": [
622 "146"
623 ],
624 "accept": [
625 "application/mercurial-0.1"
626 ],
627 "content-type": [
628 "application/x-www-form-urlencoded"
629 ],
630 "host": [
631 "phab.mercurial-scm.org"
632 ],
633 "user-agent": [
634 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
635 ]
636 },
637 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22ids%22%3A+%5B8387%5D%7D&output=json",
638 "uri": "https://phab.mercurial-scm.org//api/differential.query",
639 "method": "POST"
640 },
641 "response": {
642 "headers": {
643 "x-xss-protection": [
644 "1; mode=block"
645 ],
646 "strict-transport-security": [
647 "max-age=0; includeSubdomains; preload"
648 ],
649 "transfer-encoding": [
650 "chunked"
651 ],
652 "x-frame-options": [
653 "Deny"
654 ],
655 "expires": [
656 "Sat, 01 Jan 2000 00:00:00 GMT"
657 ],
658 "content-type": [
659 "application/json"
660 ],
661 "referrer-policy": [
662 "no-referrer"
663 ],
664 "server": [
665 "Apache/2.4.10 (Debian)"
666 ],
667 "cache-control": [
668 "no-store"
669 ],
670 "x-content-type-options": [
671 "nosniff"
672 ],
673 "date": [
674 "Wed, 08 Apr 2020 21:13:06 GMT"
675 ]
676 },
677 "body": {
678 "string": "{\"result\":[{\"id\":\"8387\",\"phid\":\"PHID-DREV-6ov3pvjim4txejzekw2t\",\"title\":\"one: first commit to review\",\"uri\":\"https:\\/\\/phab.mercurial-scm.org\\/D8387\",\"dateCreated\":\"1586380377\",\"dateModified\":\"1586380385\",\"authorPHID\":\"PHID-USER-tzhaient733lwrlbcag5\",\"status\":\"0\",\"statusName\":\"Needs Review\",\"properties\":{\"draft.broadcast\":true,\"lines.added\":2,\"lines.removed\":1},\"branch\":\"default\",\"summary\":\"This file was modified with 'mod1' as its contents.\\n\\ntwo: second commit to review\\n\\nThis file was modified with 'mod2' as its contents.\\n\\n3: a commit with no detailed message\",\"testPlan\":\"LOL! What testing?!\\n\\nHaha! yeah, right.\",\"lineCount\":\"3\",\"activeDiffPHID\":\"PHID-DIFF-zkluur4ou3j4pswpif6e\",\"diffs\":[\"21007\",\"21006\"],\"commits\":[],\"reviewers\":{\"PHID-PROJ-3dvcxzznrjru2xmmses3\":\"PHID-PROJ-3dvcxzznrjru2xmmses3\"},\"ccs\":[\"PHID-USER-q42dn7cc3donqriafhjx\"],\"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\"],[\"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\"],[\"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-bvunnehri4u2isyr7bc3\",\"sourcePath\":\"\\/\"}],\"error_code\":null,\"error_info\":null}"
679 },
680 "status": {
681 "code": 200,
682 "message": "OK"
683 }
684 }
685 },
686 {
687 "request": {
688 "headers": {
689 "content-length": [
690 "482"
691 ],
692 "accept": [
693 "application/mercurial-0.1"
694 ],
695 "content-type": [
696 "application/x-www-form-urlencoded"
697 ],
698 "host": [
699 "phab.mercurial-scm.org"
700 ],
701 "user-agent": [
702 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
703 ]
704 },
705 "body": "__conduit__=1&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%22e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac%5C%22%2C+%5C%22parent%5C%22%3A+%5C%2298d480e0d494906d9758c44c622951b429afd862%5C%22%2C+%5C%22user%5C%22%3A+%5C%22test%5C%22%7D%22%2C+%22diff_id%22%3A+21007%2C+%22name%22%3A+%22hg%3Ameta%22%7D&output=json",
706 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
707 "method": "POST"
708 },
709 "response": {
710 "headers": {
711 "x-xss-protection": [
712 "1; mode=block"
713 ],
714 "strict-transport-security": [
715 "max-age=0; includeSubdomains; preload"
716 ],
717 "transfer-encoding": [
718 "chunked"
719 ],
720 "x-frame-options": [
721 "Deny"
722 ],
723 "expires": [
724 "Sat, 01 Jan 2000 00:00:00 GMT"
725 ],
726 "content-type": [
727 "application/json"
728 ],
729 "referrer-policy": [
730 "no-referrer"
731 ],
732 "server": [
733 "Apache/2.4.10 (Debian)"
734 ],
735 "cache-control": [
736 "no-store"
737 ],
738 "x-content-type-options": [
739 "nosniff"
740 ],
741 "date": [
742 "Wed, 08 Apr 2020 21:13:06 GMT"
743 ]
744 },
745 "body": {
746 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
747 },
748 "status": {
749 "code": 200,
750 "message": "OK"
751 }
752 }
753 },
754 {
755 "request": {
756 "headers": {
757 "content-length": [
758 "1362"
759 ],
760 "accept": [
761 "application/mercurial-0.1"
762 ],
763 "content-type": [
764 "application/x-www-form-urlencoded"
765 ],
766 "host": [
767 "phab.mercurial-scm.org"
768 ],
769 "user-agent": [
770 "mercurial/proto-1.0 (Mercurial 5.3.2+463-d35fbae9dd33+20200408)"
771 ]
772 },
773 "body": "__conduit__=1&params=%7B%22__conduit__%22%3A+%7B%22token%22%3A+%22cli-hahayouwish%22%7D%2C+%22data%22%3A+%22%7B%5C%220124e5474c880e4fb40c8326ad2b75ae3e57ee5f%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%220124e5474c880e4fb40c8326ad2b75ae3e57ee5f%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%22602c4e7382436988e46c0d56fb3883968302b3f6%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22602c4e7382436988e46c0d56fb3883968302b3f6%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%22602c4e7382436988e46c0d56fb3883968302b3f6%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%2298d480e0d494906d9758c44c622951b429afd862%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%2C+%5C%22e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac%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%22e4edb1fe3565eaaecc1787ada4fcc2b7e9018fac%5C%22%2C+%5C%22parents%5C%22%3A+%5B%5C%220124e5474c880e4fb40c8326ad2b75ae3e57ee5f%5C%22%5D%2C+%5C%22time%5C%22%3A+0%7D%7D%22%2C+%22diff_id%22%3A+21007%2C+%22name%22%3A+%22local%3Acommits%22%7D&output=json",
774 "uri": "https://phab.mercurial-scm.org//api/differential.setdiffproperty",
775 "method": "POST"
776 },
777 "response": {
778 "headers": {
779 "x-xss-protection": [
780 "1; mode=block"
781 ],
782 "strict-transport-security": [
783 "max-age=0; includeSubdomains; preload"
784 ],
785 "transfer-encoding": [
786 "chunked"
787 ],
788 "x-frame-options": [
789 "Deny"
790 ],
791 "expires": [
792 "Sat, 01 Jan 2000 00:00:00 GMT"
793 ],
794 "content-type": [
795 "application/json"
796 ],
797 "referrer-policy": [
798 "no-referrer"
799 ],
800 "server": [
801 "Apache/2.4.10 (Debian)"
802 ],
803 "cache-control": [
804 "no-store"
805 ],
806 "x-content-type-options": [
807 "nosniff"
808 ],
809 "date": [
810 "Wed, 08 Apr 2020 21:13:06 GMT"
811 ]
812 },
813 "body": {
814 "string": "{\"result\":null,\"error_code\":null,\"error_info\":null}"
815 },
816 "status": {
817 "code": 200,
818 "message": "OK"
819 }
820 }
821 }
822 ],
823 "version": 1
824 } No newline at end of file
@@ -1,2104 +1,2219
1 1 # phabricator.py - simple Phabricator integration
2 2 #
3 3 # Copyright 2017 Facebook, Inc.
4 4 #
5 5 # This software may be used and distributed according to the terms of the
6 6 # GNU General Public License version 2 or any later version.
7 7 """simple Phabricator integration (EXPERIMENTAL)
8 8
9 9 This extension provides a ``phabsend`` command which sends a stack of
10 10 changesets to Phabricator, and a ``phabread`` command which prints a stack of
11 11 revisions in a format suitable for :hg:`import`, and a ``phabupdate`` command
12 12 to update statuses in batch.
13 13
14 14 A "phabstatus" view for :hg:`show` is also provided; it displays status
15 15 information of Phabricator differentials associated with unfinished
16 16 changesets.
17 17
18 18 By default, Phabricator requires ``Test Plan`` which might prevent some
19 19 changeset from being sent. The requirement could be disabled by changing
20 20 ``differential.require-test-plan-field`` config server side.
21 21
22 22 Config::
23 23
24 24 [phabricator]
25 25 # Phabricator URL
26 26 url = https://phab.example.com/
27 27
28 28 # Repo callsign. If a repo has a URL https://$HOST/diffusion/FOO, then its
29 29 # callsign is "FOO".
30 30 callsign = FOO
31 31
32 32 # curl command to use. If not set (default), use builtin HTTP library to
33 33 # communicate. If set, use the specified curl command. This could be useful
34 34 # if you need to specify advanced options that is not easily supported by
35 35 # the internal library.
36 36 curlcmd = curl --connect-timeout 2 --retry 3 --silent
37 37
38 38 [auth]
39 39 example.schemes = https
40 40 example.prefix = phab.example.com
41 41
42 42 # API token. Get it from https://$HOST/conduit/login/
43 43 example.phabtoken = cli-xxxxxxxxxxxxxxxxxxxxxxxxxxxx
44 44 """
45 45
46 46 from __future__ import absolute_import
47 47
48 48 import base64
49 49 import contextlib
50 50 import hashlib
51 51 import itertools
52 52 import json
53 53 import mimetypes
54 54 import operator
55 55 import re
56 56
57 57 from mercurial.node import bin, nullid, short
58 58 from mercurial.i18n import _
59 59 from mercurial.pycompat import getattr
60 60 from mercurial.thirdparty import attr
61 61 from mercurial import (
62 62 cmdutil,
63 63 context,
64 64 copies,
65 65 encoding,
66 66 error,
67 67 exthelper,
68 68 graphmod,
69 69 httpconnection as httpconnectionmod,
70 70 localrepo,
71 71 logcmdutil,
72 72 match,
73 73 mdiff,
74 74 obsutil,
75 75 parser,
76 76 patch,
77 77 phases,
78 78 pycompat,
79 79 scmutil,
80 80 smartset,
81 81 tags,
82 82 templatefilters,
83 83 templateutil,
84 84 url as urlmod,
85 85 util,
86 86 )
87 87 from mercurial.utils import (
88 88 procutil,
89 89 stringutil,
90 90 )
91 91 from . import show
92 92
93 93
94 94 # Note for extension authors: ONLY specify testedwith = 'ships-with-hg-core' for
95 95 # extensions which SHIP WITH MERCURIAL. Non-mainline extensions should
96 96 # be specifying the version(s) of Mercurial they are tested with, or
97 97 # leave the attribute unspecified.
98 98 testedwith = b'ships-with-hg-core'
99 99
100 100 eh = exthelper.exthelper()
101 101
102 102 cmdtable = eh.cmdtable
103 103 command = eh.command
104 104 configtable = eh.configtable
105 105 templatekeyword = eh.templatekeyword
106 106 uisetup = eh.finaluisetup
107 107
108 108 # developer config: phabricator.batchsize
109 109 eh.configitem(
110 110 b'phabricator', b'batchsize', default=12,
111 111 )
112 112 eh.configitem(
113 113 b'phabricator', b'callsign', default=None,
114 114 )
115 115 eh.configitem(
116 116 b'phabricator', b'curlcmd', default=None,
117 117 )
118 118 # developer config: phabricator.debug
119 119 eh.configitem(
120 120 b'phabricator', b'debug', default=False,
121 121 )
122 122 # developer config: phabricator.repophid
123 123 eh.configitem(
124 124 b'phabricator', b'repophid', default=None,
125 125 )
126 126 eh.configitem(
127 127 b'phabricator', b'url', default=None,
128 128 )
129 129 eh.configitem(
130 130 b'phabsend', b'confirm', default=False,
131 131 )
132 132 eh.configitem(
133 133 b'phabimport', b'secret', default=False,
134 134 )
135 135 eh.configitem(
136 136 b'phabimport', b'obsolete', default=False,
137 137 )
138 138
139 139 colortable = {
140 140 b'phabricator.action.created': b'green',
141 141 b'phabricator.action.skipped': b'magenta',
142 142 b'phabricator.action.updated': b'magenta',
143 143 b'phabricator.desc': b'',
144 144 b'phabricator.drev': b'bold',
145 145 b'phabricator.node': b'',
146 146 b'phabricator.status.abandoned': b'magenta dim',
147 147 b'phabricator.status.accepted': b'green bold',
148 148 b'phabricator.status.closed': b'green',
149 149 b'phabricator.status.needsreview': b'yellow',
150 150 b'phabricator.status.needsrevision': b'red',
151 151 b'phabricator.status.changesplanned': b'red',
152 152 }
153 153
154 154 _VCR_FLAGS = [
155 155 (
156 156 b'',
157 157 b'test-vcr',
158 158 b'',
159 159 _(
160 160 b'Path to a vcr file. If nonexistent, will record a new vcr transcript'
161 161 b', otherwise will mock all http requests using the specified vcr file.'
162 162 b' (ADVANCED)'
163 163 ),
164 164 ),
165 165 ]
166 166
167 167
168 168 @eh.wrapfunction(localrepo, "loadhgrc")
169 169 def _loadhgrc(orig, ui, wdirvfs, hgvfs, requirements):
170 170 """Load ``.arcconfig`` content into a ui instance on repository open.
171 171 """
172 172 result = False
173 173 arcconfig = {}
174 174
175 175 try:
176 176 # json.loads only accepts bytes from 3.6+
177 177 rawparams = encoding.unifromlocal(wdirvfs.read(b".arcconfig"))
178 178 # json.loads only returns unicode strings
179 179 arcconfig = pycompat.rapply(
180 180 lambda x: encoding.unitolocal(x)
181 181 if isinstance(x, pycompat.unicode)
182 182 else x,
183 183 pycompat.json_loads(rawparams),
184 184 )
185 185
186 186 result = True
187 187 except ValueError:
188 188 ui.warn(_(b"invalid JSON in %s\n") % wdirvfs.join(b".arcconfig"))
189 189 except IOError:
190 190 pass
191 191
192 192 cfg = util.sortdict()
193 193
194 194 if b"repository.callsign" in arcconfig:
195 195 cfg[(b"phabricator", b"callsign")] = arcconfig[b"repository.callsign"]
196 196
197 197 if b"phabricator.uri" in arcconfig:
198 198 cfg[(b"phabricator", b"url")] = arcconfig[b"phabricator.uri"]
199 199
200 200 if cfg:
201 201 ui.applyconfig(cfg, source=wdirvfs.join(b".arcconfig"))
202 202
203 203 return orig(ui, wdirvfs, hgvfs, requirements) or result # Load .hg/hgrc
204 204
205 205
206 206 def vcrcommand(name, flags, spec, helpcategory=None, optionalrepo=False):
207 207 fullflags = flags + _VCR_FLAGS
208 208
209 209 def hgmatcher(r1, r2):
210 210 if r1.uri != r2.uri or r1.method != r2.method:
211 211 return False
212 212 r1params = util.urlreq.parseqs(r1.body)
213 213 r2params = util.urlreq.parseqs(r2.body)
214 214 for key in r1params:
215 215 if key not in r2params:
216 216 return False
217 217 value = r1params[key][0]
218 218 # we want to compare json payloads without worrying about ordering
219 219 if value.startswith(b'{') and value.endswith(b'}'):
220 220 r1json = pycompat.json_loads(value)
221 221 r2json = pycompat.json_loads(r2params[key][0])
222 222 if r1json != r2json:
223 223 return False
224 224 elif r2params[key][0] != value:
225 225 return False
226 226 return True
227 227
228 228 def sanitiserequest(request):
229 229 request.body = re.sub(
230 230 br'cli-[a-z0-9]+', br'cli-hahayouwish', request.body
231 231 )
232 232 return request
233 233
234 234 def sanitiseresponse(response):
235 235 if 'set-cookie' in response['headers']:
236 236 del response['headers']['set-cookie']
237 237 return response
238 238
239 239 def decorate(fn):
240 240 def inner(*args, **kwargs):
241 241 cassette = pycompat.fsdecode(kwargs.pop('test_vcr', None))
242 242 if cassette:
243 243 import hgdemandimport
244 244
245 245 with hgdemandimport.deactivated():
246 246 import vcr as vcrmod
247 247 import vcr.stubs as stubs
248 248
249 249 vcr = vcrmod.VCR(
250 250 serializer='json',
251 251 before_record_request=sanitiserequest,
252 252 before_record_response=sanitiseresponse,
253 253 custom_patches=[
254 254 (
255 255 urlmod,
256 256 'httpconnection',
257 257 stubs.VCRHTTPConnection,
258 258 ),
259 259 (
260 260 urlmod,
261 261 'httpsconnection',
262 262 stubs.VCRHTTPSConnection,
263 263 ),
264 264 ],
265 265 )
266 266 vcr.register_matcher('hgmatcher', hgmatcher)
267 267 with vcr.use_cassette(cassette, match_on=['hgmatcher']):
268 268 return fn(*args, **kwargs)
269 269 return fn(*args, **kwargs)
270 270
271 271 cmd = util.checksignature(inner, depth=2)
272 272 cmd.__name__ = fn.__name__
273 273 cmd.__doc__ = fn.__doc__
274 274
275 275 return command(
276 276 name,
277 277 fullflags,
278 278 spec,
279 279 helpcategory=helpcategory,
280 280 optionalrepo=optionalrepo,
281 281 )(cmd)
282 282
283 283 return decorate
284 284
285 285
286 286 def _debug(ui, *msg, **opts):
287 287 """write debug output for Phabricator if ``phabricator.debug`` is set
288 288
289 289 Specifically, this avoids dumping Conduit and HTTP auth chatter that is
290 290 printed with the --debug argument.
291 291 """
292 292 if ui.configbool(b"phabricator", b"debug"):
293 293 flag = ui.debugflag
294 294 try:
295 295 ui.debugflag = True
296 296 ui.write(*msg, **opts)
297 297 finally:
298 298 ui.debugflag = flag
299 299
300 300
301 301 def urlencodenested(params):
302 302 """like urlencode, but works with nested parameters.
303 303
304 304 For example, if params is {'a': ['b', 'c'], 'd': {'e': 'f'}}, it will be
305 305 flattened to {'a[0]': 'b', 'a[1]': 'c', 'd[e]': 'f'} and then passed to
306 306 urlencode. Note: the encoding is consistent with PHP's http_build_query.
307 307 """
308 308 flatparams = util.sortdict()
309 309
310 310 def process(prefix, obj):
311 311 if isinstance(obj, bool):
312 312 obj = {True: b'true', False: b'false'}[obj] # Python -> PHP form
313 313 lister = lambda l: [(b'%d' % k, v) for k, v in enumerate(l)]
314 314 items = {list: lister, dict: lambda x: x.items()}.get(type(obj))
315 315 if items is None:
316 316 flatparams[prefix] = obj
317 317 else:
318 318 for k, v in items(obj):
319 319 if prefix:
320 320 process(b'%s[%s]' % (prefix, k), v)
321 321 else:
322 322 process(k, v)
323 323
324 324 process(b'', params)
325 325 return util.urlreq.urlencode(flatparams)
326 326
327 327
328 328 def readurltoken(ui):
329 329 """return conduit url, token and make sure they exist
330 330
331 331 Currently read from [auth] config section. In the future, it might
332 332 make sense to read from .arcconfig and .arcrc as well.
333 333 """
334 334 url = ui.config(b'phabricator', b'url')
335 335 if not url:
336 336 raise error.Abort(
337 337 _(b'config %s.%s is required') % (b'phabricator', b'url')
338 338 )
339 339
340 340 res = httpconnectionmod.readauthforuri(ui, url, util.url(url).user)
341 341 token = None
342 342
343 343 if res:
344 344 group, auth = res
345 345
346 346 ui.debug(b"using auth.%s.* for authentication\n" % group)
347 347
348 348 token = auth.get(b'phabtoken')
349 349
350 350 if not token:
351 351 raise error.Abort(
352 352 _(b'Can\'t find conduit token associated to %s') % (url,)
353 353 )
354 354
355 355 return url, token
356 356
357 357
358 358 def callconduit(ui, name, params):
359 359 """call Conduit API, params is a dict. return json.loads result, or None"""
360 360 host, token = readurltoken(ui)
361 361 url, authinfo = util.url(b'/'.join([host, b'api', name])).authinfo()
362 362 ui.debug(b'Conduit Call: %s %s\n' % (url, pycompat.byterepr(params)))
363 363 params = params.copy()
364 364 params[b'__conduit__'] = {
365 365 b'token': token,
366 366 }
367 367 rawdata = {
368 368 b'params': templatefilters.json(params),
369 369 b'output': b'json',
370 370 b'__conduit__': 1,
371 371 }
372 372 data = urlencodenested(rawdata)
373 373 curlcmd = ui.config(b'phabricator', b'curlcmd')
374 374 if curlcmd:
375 375 sin, sout = procutil.popen2(
376 376 b'%s -d @- %s' % (curlcmd, procutil.shellquote(url))
377 377 )
378 378 sin.write(data)
379 379 sin.close()
380 380 body = sout.read()
381 381 else:
382 382 urlopener = urlmod.opener(ui, authinfo)
383 383 request = util.urlreq.request(pycompat.strurl(url), data=data)
384 384 with contextlib.closing(urlopener.open(request)) as rsp:
385 385 body = rsp.read()
386 386 ui.debug(b'Conduit Response: %s\n' % body)
387 387 parsed = pycompat.rapply(
388 388 lambda x: encoding.unitolocal(x)
389 389 if isinstance(x, pycompat.unicode)
390 390 else x,
391 391 # json.loads only accepts bytes from py3.6+
392 392 pycompat.json_loads(encoding.unifromlocal(body)),
393 393 )
394 394 if parsed.get(b'error_code'):
395 395 msg = _(b'Conduit Error (%s): %s') % (
396 396 parsed[b'error_code'],
397 397 parsed[b'error_info'],
398 398 )
399 399 raise error.Abort(msg)
400 400 return parsed[b'result']
401 401
402 402
403 403 @vcrcommand(b'debugcallconduit', [], _(b'METHOD'), optionalrepo=True)
404 404 def debugcallconduit(ui, repo, name):
405 405 """call Conduit API
406 406
407 407 Call parameters are read from stdin as a JSON blob. Result will be written
408 408 to stdout as a JSON blob.
409 409 """
410 410 # json.loads only accepts bytes from 3.6+
411 411 rawparams = encoding.unifromlocal(ui.fin.read())
412 412 # json.loads only returns unicode strings
413 413 params = pycompat.rapply(
414 414 lambda x: encoding.unitolocal(x)
415 415 if isinstance(x, pycompat.unicode)
416 416 else x,
417 417 pycompat.json_loads(rawparams),
418 418 )
419 419 # json.dumps only accepts unicode strings
420 420 result = pycompat.rapply(
421 421 lambda x: encoding.unifromlocal(x) if isinstance(x, bytes) else x,
422 422 callconduit(ui, name, params),
423 423 )
424 424 s = json.dumps(result, sort_keys=True, indent=2, separators=(u',', u': '))
425 425 ui.write(b'%s\n' % encoding.unitolocal(s))
426 426
427 427
428 428 def getrepophid(repo):
429 429 """given callsign, return repository PHID or None"""
430 430 # developer config: phabricator.repophid
431 431 repophid = repo.ui.config(b'phabricator', b'repophid')
432 432 if repophid:
433 433 return repophid
434 434 callsign = repo.ui.config(b'phabricator', b'callsign')
435 435 if not callsign:
436 436 return None
437 437 query = callconduit(
438 438 repo.ui,
439 439 b'diffusion.repository.search',
440 440 {b'constraints': {b'callsigns': [callsign]}},
441 441 )
442 442 if len(query[b'data']) == 0:
443 443 return None
444 444 repophid = query[b'data'][0][b'phid']
445 445 repo.ui.setconfig(b'phabricator', b'repophid', repophid)
446 446 return repophid
447 447
448 448
449 449 _differentialrevisiontagre = re.compile(br'\AD([1-9][0-9]*)\Z')
450 450 _differentialrevisiondescre = re.compile(
451 451 br'^Differential Revision:\s*(?P<url>(?:.*)D(?P<id>[1-9][0-9]*))$', re.M
452 452 )
453 453
454 454
455 455 def getoldnodedrevmap(repo, nodelist):
456 456 """find previous nodes that has been sent to Phabricator
457 457
458 458 return {node: (oldnode, Differential diff, Differential Revision ID)}
459 459 for node in nodelist with known previous sent versions, or associated
460 460 Differential Revision IDs. ``oldnode`` and ``Differential diff`` could
461 461 be ``None``.
462 462
463 463 Examines commit messages like "Differential Revision:" to get the
464 464 association information.
465 465
466 466 If such commit message line is not found, examines all precursors and their
467 467 tags. Tags with format like "D1234" are considered a match and the node
468 468 with that tag, and the number after "D" (ex. 1234) will be returned.
469 469
470 470 The ``old node``, if not None, is guaranteed to be the last diff of
471 471 corresponding Differential Revision, and exist in the repo.
472 472 """
473 473 unfi = repo.unfiltered()
474 474 has_node = unfi.changelog.index.has_node
475 475
476 476 result = {} # {node: (oldnode?, lastdiff?, drev)}
477 477 # ordered for test stability when printing new -> old mapping below
478 478 toconfirm = util.sortdict() # {node: (force, {precnode}, drev)}
479 479 for node in nodelist:
480 480 ctx = unfi[node]
481 481 # For tags like "D123", put them into "toconfirm" to verify later
482 482 precnodes = list(obsutil.allpredecessors(unfi.obsstore, [node]))
483 483 for n in precnodes:
484 484 if has_node(n):
485 485 for tag in unfi.nodetags(n):
486 486 m = _differentialrevisiontagre.match(tag)
487 487 if m:
488 488 toconfirm[node] = (0, set(precnodes), int(m.group(1)))
489 489 break
490 490 else:
491 491 continue # move to next predecessor
492 492 break # found a tag, stop
493 493 else:
494 494 # Check commit message
495 495 m = _differentialrevisiondescre.search(ctx.description())
496 496 if m:
497 497 toconfirm[node] = (1, set(precnodes), int(m.group('id')))
498 498
499 499 # Double check if tags are genuine by collecting all old nodes from
500 500 # Phabricator, and expect precursors overlap with it.
501 501 if toconfirm:
502 502 drevs = [drev for force, precs, drev in toconfirm.values()]
503 503 alldiffs = callconduit(
504 504 unfi.ui, b'differential.querydiffs', {b'revisionIDs': drevs}
505 505 )
506 506
507 507 def getnodes(d, precset):
508 508 # Ignore other nodes that were combined into the Differential
509 509 # that aren't predecessors of the current local node.
510 510 return [n for n in getlocalcommits(d) if n in precset]
511 511
512 512 for newnode, (force, precset, drev) in toconfirm.items():
513 513 diffs = [
514 514 d for d in alldiffs.values() if int(d[b'revisionID']) == drev
515 515 ]
516 516
517 517 # local predecessors known by Phabricator
518 518 phprecset = {n for d in diffs for n in getnodes(d, precset)}
519 519
520 520 # Ignore if precursors (Phabricator and local repo) do not overlap,
521 521 # and force is not set (when commit message says nothing)
522 522 if not force and not phprecset:
523 523 tagname = b'D%d' % drev
524 524 tags.tag(
525 525 repo,
526 526 tagname,
527 527 nullid,
528 528 message=None,
529 529 user=None,
530 530 date=None,
531 531 local=True,
532 532 )
533 533 unfi.ui.warn(
534 534 _(
535 535 b'D%d: local tag removed - does not match '
536 536 b'Differential history\n'
537 537 )
538 538 % drev
539 539 )
540 540 continue
541 541
542 542 # Find the last node using Phabricator metadata, and make sure it
543 543 # exists in the repo
544 544 oldnode = lastdiff = None
545 545 if diffs:
546 546 lastdiff = max(diffs, key=lambda d: int(d[b'id']))
547 547 oldnodes = getnodes(lastdiff, precset)
548 548
549 549 _debug(
550 550 unfi.ui,
551 551 b"%s mapped to old nodes %s\n"
552 552 % (
553 553 short(newnode),
554 554 stringutil.pprint([short(n) for n in sorted(oldnodes)]),
555 555 ),
556 556 )
557 557
558 558 # If this commit was the result of `hg fold` after submission,
559 559 # and now resubmitted with --fold, the easiest thing to do is
560 560 # to leave the node clear. This only results in creating a new
561 561 # diff for the _same_ Differential Revision if this commit is
562 # the first or last in the selected range.
562 # the first or last in the selected range. If we picked a node
563 # from the list instead, it would have to be the lowest if at
564 # the beginning of the --fold range, or the highest at the end.
565 # Otherwise, one or more of the nodes wouldn't be considered in
566 # the diff, and the Differential wouldn't be properly updated.
563 567 # If this commit is the result of `hg split` in the same
564 568 # scenario, there is a single oldnode here (and multiple
565 569 # newnodes mapped to it). That makes it the same as the normal
566 570 # case, as the edges of the newnode range cleanly maps to one
567 571 # oldnode each.
568 572 if len(oldnodes) == 1:
569 573 oldnode = oldnodes[0]
570 574 if oldnode and not has_node(oldnode):
571 575 oldnode = None
572 576
573 577 result[newnode] = (oldnode, lastdiff, drev)
574 578
575 579 return result
576 580
577 581
578 582 def getdrevmap(repo, revs):
579 583 """Return a dict mapping each rev in `revs` to their Differential Revision
580 584 ID or None.
581 585 """
582 586 result = {}
583 587 for rev in revs:
584 588 result[rev] = None
585 589 ctx = repo[rev]
586 590 # Check commit message
587 591 m = _differentialrevisiondescre.search(ctx.description())
588 592 if m:
589 593 result[rev] = int(m.group('id'))
590 594 continue
591 595 # Check tags
592 596 for tag in repo.nodetags(ctx.node()):
593 597 m = _differentialrevisiontagre.match(tag)
594 598 if m:
595 599 result[rev] = int(m.group(1))
596 600 break
597 601
598 602 return result
599 603
600 604
601 605 def getdiff(basectx, ctx, diffopts):
602 606 """plain-text diff without header (user, commit message, etc)"""
603 607 output = util.stringio()
604 608 for chunk, _label in patch.diffui(
605 609 ctx.repo(), basectx.p1().node(), ctx.node(), None, opts=diffopts
606 610 ):
607 611 output.write(chunk)
608 612 return output.getvalue()
609 613
610 614
611 615 class DiffChangeType(object):
612 616 ADD = 1
613 617 CHANGE = 2
614 618 DELETE = 3
615 619 MOVE_AWAY = 4
616 620 COPY_AWAY = 5
617 621 MOVE_HERE = 6
618 622 COPY_HERE = 7
619 623 MULTICOPY = 8
620 624
621 625
622 626 class DiffFileType(object):
623 627 TEXT = 1
624 628 IMAGE = 2
625 629 BINARY = 3
626 630
627 631
628 632 @attr.s
629 633 class phabhunk(dict):
630 634 """Represents a Differential hunk, which is owned by a Differential change
631 635 """
632 636
633 637 oldOffset = attr.ib(default=0) # camelcase-required
634 638 oldLength = attr.ib(default=0) # camelcase-required
635 639 newOffset = attr.ib(default=0) # camelcase-required
636 640 newLength = attr.ib(default=0) # camelcase-required
637 641 corpus = attr.ib(default='')
638 642 # These get added to the phabchange's equivalents
639 643 addLines = attr.ib(default=0) # camelcase-required
640 644 delLines = attr.ib(default=0) # camelcase-required
641 645
642 646
643 647 @attr.s
644 648 class phabchange(object):
645 649 """Represents a Differential change, owns Differential hunks and owned by a
646 650 Differential diff. Each one represents one file in a diff.
647 651 """
648 652
649 653 currentPath = attr.ib(default=None) # camelcase-required
650 654 oldPath = attr.ib(default=None) # camelcase-required
651 655 awayPaths = attr.ib(default=attr.Factory(list)) # camelcase-required
652 656 metadata = attr.ib(default=attr.Factory(dict))
653 657 oldProperties = attr.ib(default=attr.Factory(dict)) # camelcase-required
654 658 newProperties = attr.ib(default=attr.Factory(dict)) # camelcase-required
655 659 type = attr.ib(default=DiffChangeType.CHANGE)
656 660 fileType = attr.ib(default=DiffFileType.TEXT) # camelcase-required
657 661 commitHash = attr.ib(default=None) # camelcase-required
658 662 addLines = attr.ib(default=0) # camelcase-required
659 663 delLines = attr.ib(default=0) # camelcase-required
660 664 hunks = attr.ib(default=attr.Factory(list))
661 665
662 666 def copynewmetadatatoold(self):
663 667 for key in list(self.metadata.keys()):
664 668 newkey = key.replace(b'new:', b'old:')
665 669 self.metadata[newkey] = self.metadata[key]
666 670
667 671 def addoldmode(self, value):
668 672 self.oldProperties[b'unix:filemode'] = value
669 673
670 674 def addnewmode(self, value):
671 675 self.newProperties[b'unix:filemode'] = value
672 676
673 677 def addhunk(self, hunk):
674 678 if not isinstance(hunk, phabhunk):
675 679 raise error.Abort(b'phabchange.addhunk only takes phabhunks')
676 680 self.hunks.append(pycompat.byteskwargs(attr.asdict(hunk)))
677 681 # It's useful to include these stats since the Phab web UI shows them,
678 682 # and uses them to estimate how large a change a Revision is. Also used
679 683 # in email subjects for the [+++--] bit.
680 684 self.addLines += hunk.addLines
681 685 self.delLines += hunk.delLines
682 686
683 687
684 688 @attr.s
685 689 class phabdiff(object):
686 690 """Represents a Differential diff, owns Differential changes. Corresponds
687 691 to a commit.
688 692 """
689 693
690 694 # Doesn't seem to be any reason to send this (output of uname -n)
691 695 sourceMachine = attr.ib(default=b'') # camelcase-required
692 696 sourcePath = attr.ib(default=b'/') # camelcase-required
693 697 sourceControlBaseRevision = attr.ib(default=b'0' * 40) # camelcase-required
694 698 sourceControlPath = attr.ib(default=b'/') # camelcase-required
695 699 sourceControlSystem = attr.ib(default=b'hg') # camelcase-required
696 700 branch = attr.ib(default=b'default')
697 701 bookmark = attr.ib(default=None)
698 702 creationMethod = attr.ib(default=b'phabsend') # camelcase-required
699 703 lintStatus = attr.ib(default=b'none') # camelcase-required
700 704 unitStatus = attr.ib(default=b'none') # camelcase-required
701 705 changes = attr.ib(default=attr.Factory(dict))
702 706 repositoryPHID = attr.ib(default=None) # camelcase-required
703 707
704 708 def addchange(self, change):
705 709 if not isinstance(change, phabchange):
706 710 raise error.Abort(b'phabdiff.addchange only takes phabchanges')
707 711 self.changes[change.currentPath] = pycompat.byteskwargs(
708 712 attr.asdict(change)
709 713 )
710 714
711 715
712 716 def maketext(pchange, basectx, ctx, fname):
713 717 """populate the phabchange for a text file"""
714 718 repo = ctx.repo()
715 719 fmatcher = match.exact([fname])
716 720 diffopts = mdiff.diffopts(git=True, context=32767)
717 721 _pfctx, _fctx, header, fhunks = next(
718 722 patch.diffhunks(repo, basectx.p1(), ctx, fmatcher, opts=diffopts)
719 723 )
720 724
721 725 for fhunk in fhunks:
722 726 (oldOffset, oldLength, newOffset, newLength), lines = fhunk
723 727 corpus = b''.join(lines[1:])
724 728 shunk = list(header)
725 729 shunk.extend(lines)
726 730 _mf, _mt, addLines, delLines, _hb = patch.diffstatsum(
727 731 patch.diffstatdata(util.iterlines(shunk))
728 732 )
729 733 pchange.addhunk(
730 734 phabhunk(
731 735 oldOffset,
732 736 oldLength,
733 737 newOffset,
734 738 newLength,
735 739 corpus,
736 740 addLines,
737 741 delLines,
738 742 )
739 743 )
740 744
741 745
742 746 def uploadchunks(fctx, fphid):
743 747 """upload large binary files as separate chunks.
744 748 Phab requests chunking over 8MiB, and splits into 4MiB chunks
745 749 """
746 750 ui = fctx.repo().ui
747 751 chunks = callconduit(ui, b'file.querychunks', {b'filePHID': fphid})
748 752 with ui.makeprogress(
749 753 _(b'uploading file chunks'), unit=_(b'chunks'), total=len(chunks)
750 754 ) as progress:
751 755 for chunk in chunks:
752 756 progress.increment()
753 757 if chunk[b'complete']:
754 758 continue
755 759 bstart = int(chunk[b'byteStart'])
756 760 bend = int(chunk[b'byteEnd'])
757 761 callconduit(
758 762 ui,
759 763 b'file.uploadchunk',
760 764 {
761 765 b'filePHID': fphid,
762 766 b'byteStart': bstart,
763 767 b'data': base64.b64encode(fctx.data()[bstart:bend]),
764 768 b'dataEncoding': b'base64',
765 769 },
766 770 )
767 771
768 772
769 773 def uploadfile(fctx):
770 774 """upload binary files to Phabricator"""
771 775 repo = fctx.repo()
772 776 ui = repo.ui
773 777 fname = fctx.path()
774 778 size = fctx.size()
775 779 fhash = pycompat.bytestr(hashlib.sha256(fctx.data()).hexdigest())
776 780
777 781 # an allocate call is required first to see if an upload is even required
778 782 # (Phab might already have it) and to determine if chunking is needed
779 783 allocateparams = {
780 784 b'name': fname,
781 785 b'contentLength': size,
782 786 b'contentHash': fhash,
783 787 }
784 788 filealloc = callconduit(ui, b'file.allocate', allocateparams)
785 789 fphid = filealloc[b'filePHID']
786 790
787 791 if filealloc[b'upload']:
788 792 ui.write(_(b'uploading %s\n') % bytes(fctx))
789 793 if not fphid:
790 794 uploadparams = {
791 795 b'name': fname,
792 796 b'data_base64': base64.b64encode(fctx.data()),
793 797 }
794 798 fphid = callconduit(ui, b'file.upload', uploadparams)
795 799 else:
796 800 uploadchunks(fctx, fphid)
797 801 else:
798 802 ui.debug(b'server already has %s\n' % bytes(fctx))
799 803
800 804 if not fphid:
801 805 raise error.Abort(b'Upload of %s failed.' % bytes(fctx))
802 806
803 807 return fphid
804 808
805 809
806 810 def addoldbinary(pchange, oldfctx, fctx):
807 811 """add the metadata for the previous version of a binary file to the
808 812 phabchange for the new version
809 813
810 814 ``oldfctx`` is the previous version of the file; ``fctx`` is the new
811 815 version of the file, or None if the file is being removed.
812 816 """
813 817 if not fctx or fctx.cmp(oldfctx):
814 818 # Files differ, add the old one
815 819 pchange.metadata[b'old:file:size'] = oldfctx.size()
816 820 mimeguess, _enc = mimetypes.guess_type(
817 821 encoding.unifromlocal(oldfctx.path())
818 822 )
819 823 if mimeguess:
820 824 pchange.metadata[b'old:file:mime-type'] = pycompat.bytestr(
821 825 mimeguess
822 826 )
823 827 fphid = uploadfile(oldfctx)
824 828 pchange.metadata[b'old:binary-phid'] = fphid
825 829 else:
826 830 # If it's left as IMAGE/BINARY web UI might try to display it
827 831 pchange.fileType = DiffFileType.TEXT
828 832 pchange.copynewmetadatatoold()
829 833
830 834
831 835 def makebinary(pchange, fctx):
832 836 """populate the phabchange for a binary file"""
833 837 pchange.fileType = DiffFileType.BINARY
834 838 fphid = uploadfile(fctx)
835 839 pchange.metadata[b'new:binary-phid'] = fphid
836 840 pchange.metadata[b'new:file:size'] = fctx.size()
837 841 mimeguess, _enc = mimetypes.guess_type(encoding.unifromlocal(fctx.path()))
838 842 if mimeguess:
839 843 mimeguess = pycompat.bytestr(mimeguess)
840 844 pchange.metadata[b'new:file:mime-type'] = mimeguess
841 845 if mimeguess.startswith(b'image/'):
842 846 pchange.fileType = DiffFileType.IMAGE
843 847
844 848
845 849 # Copied from mercurial/patch.py
846 850 gitmode = {b'l': b'120000', b'x': b'100755', b'': b'100644'}
847 851
848 852
849 853 def notutf8(fctx):
850 854 """detect non-UTF-8 text files since Phabricator requires them to be marked
851 855 as binary
852 856 """
853 857 try:
854 858 fctx.data().decode('utf-8')
855 859 return False
856 860 except UnicodeDecodeError:
857 861 fctx.repo().ui.write(
858 862 _(b'file %s detected as non-UTF-8, marked as binary\n')
859 863 % fctx.path()
860 864 )
861 865 return True
862 866
863 867
864 868 def addremoved(pdiff, basectx, ctx, removed):
865 869 """add removed files to the phabdiff. Shouldn't include moves"""
866 870 for fname in removed:
867 871 pchange = phabchange(
868 872 currentPath=fname, oldPath=fname, type=DiffChangeType.DELETE
869 873 )
870 874 oldfctx = basectx.p1()[fname]
871 875 pchange.addoldmode(gitmode[oldfctx.flags()])
872 876 if not (oldfctx.isbinary() or notutf8(oldfctx)):
873 877 maketext(pchange, basectx, ctx, fname)
874 878
875 879 pdiff.addchange(pchange)
876 880
877 881
878 882 def addmodified(pdiff, basectx, ctx, modified):
879 883 """add modified files to the phabdiff"""
880 884 for fname in modified:
881 885 fctx = ctx[fname]
882 886 oldfctx = basectx.p1()[fname]
883 887 pchange = phabchange(currentPath=fname, oldPath=fname)
884 888 filemode = gitmode[fctx.flags()]
885 889 originalmode = gitmode[oldfctx.flags()]
886 890 if filemode != originalmode:
887 891 pchange.addoldmode(originalmode)
888 892 pchange.addnewmode(filemode)
889 893
890 894 if (
891 895 fctx.isbinary()
892 896 or notutf8(fctx)
893 897 or oldfctx.isbinary()
894 898 or notutf8(oldfctx)
895 899 ):
896 900 makebinary(pchange, fctx)
897 901 addoldbinary(pchange, oldfctx, fctx)
898 902 else:
899 903 maketext(pchange, basectx, ctx, fname)
900 904
901 905 pdiff.addchange(pchange)
902 906
903 907
904 908 def addadded(pdiff, basectx, ctx, added, removed):
905 909 """add file adds to the phabdiff, both new files and copies/moves"""
906 910 # Keep track of files that've been recorded as moved/copied, so if there are
907 911 # additional copies we can mark them (moves get removed from removed)
908 912 copiedchanges = {}
909 913 movedchanges = {}
910 914
911 915 copy = {}
912 916 if basectx != ctx:
913 917 copy = copies.pathcopies(basectx.p1(), ctx)
914 918
915 919 for fname in added:
916 920 fctx = ctx[fname]
917 921 oldfctx = None
918 922 pchange = phabchange(currentPath=fname)
919 923
920 924 filemode = gitmode[fctx.flags()]
921 925
922 926 if copy:
923 927 originalfname = copy.get(fname, fname)
924 928 else:
925 929 originalfname = fname
926 930 if fctx.renamed():
927 931 originalfname = fctx.renamed()[0]
928 932
929 933 renamed = fname != originalfname
930 934
931 935 if renamed:
932 936 oldfctx = basectx.p1()[originalfname]
933 937 originalmode = gitmode[oldfctx.flags()]
934 938 pchange.oldPath = originalfname
935 939
936 940 if originalfname in removed:
937 941 origpchange = phabchange(
938 942 currentPath=originalfname,
939 943 oldPath=originalfname,
940 944 type=DiffChangeType.MOVE_AWAY,
941 945 awayPaths=[fname],
942 946 )
943 947 movedchanges[originalfname] = origpchange
944 948 removed.remove(originalfname)
945 949 pchange.type = DiffChangeType.MOVE_HERE
946 950 elif originalfname in movedchanges:
947 951 movedchanges[originalfname].type = DiffChangeType.MULTICOPY
948 952 movedchanges[originalfname].awayPaths.append(fname)
949 953 pchange.type = DiffChangeType.COPY_HERE
950 954 else: # pure copy
951 955 if originalfname not in copiedchanges:
952 956 origpchange = phabchange(
953 957 currentPath=originalfname, type=DiffChangeType.COPY_AWAY
954 958 )
955 959 copiedchanges[originalfname] = origpchange
956 960 else:
957 961 origpchange = copiedchanges[originalfname]
958 962 origpchange.awayPaths.append(fname)
959 963 pchange.type = DiffChangeType.COPY_HERE
960 964
961 965 if filemode != originalmode:
962 966 pchange.addoldmode(originalmode)
963 967 pchange.addnewmode(filemode)
964 968 else: # Brand-new file
965 969 pchange.addnewmode(gitmode[fctx.flags()])
966 970 pchange.type = DiffChangeType.ADD
967 971
968 972 if (
969 973 fctx.isbinary()
970 974 or notutf8(fctx)
971 975 or (oldfctx and (oldfctx.isbinary() or notutf8(oldfctx)))
972 976 ):
973 977 makebinary(pchange, fctx)
974 978 if renamed:
975 979 addoldbinary(pchange, oldfctx, fctx)
976 980 else:
977 981 maketext(pchange, basectx, ctx, fname)
978 982
979 983 pdiff.addchange(pchange)
980 984
981 985 for _path, copiedchange in copiedchanges.items():
982 986 pdiff.addchange(copiedchange)
983 987 for _path, movedchange in movedchanges.items():
984 988 pdiff.addchange(movedchange)
985 989
986 990
987 991 def creatediff(basectx, ctx):
988 992 """create a Differential Diff"""
989 993 repo = ctx.repo()
990 994 repophid = getrepophid(repo)
991 995 # Create a "Differential Diff" via "differential.creatediff" API
992 996 pdiff = phabdiff(
993 997 sourceControlBaseRevision=b'%s' % basectx.p1().hex(),
994 998 branch=b'%s' % ctx.branch(),
995 999 )
996 1000 modified, added, removed, _d, _u, _i, _c = basectx.p1().status(ctx)
997 1001 # addadded will remove moved files from removed, so addremoved won't get
998 1002 # them
999 1003 addadded(pdiff, basectx, ctx, added, removed)
1000 1004 addmodified(pdiff, basectx, ctx, modified)
1001 1005 addremoved(pdiff, basectx, ctx, removed)
1002 1006 if repophid:
1003 1007 pdiff.repositoryPHID = repophid
1004 1008 diff = callconduit(
1005 1009 repo.ui,
1006 1010 b'differential.creatediff',
1007 1011 pycompat.byteskwargs(attr.asdict(pdiff)),
1008 1012 )
1009 1013 if not diff:
1010 1014 if basectx != ctx:
1011 1015 msg = _(b'cannot create diff for %s::%s') % (basectx, ctx)
1012 1016 else:
1013 1017 msg = _(b'cannot create diff for %s') % ctx
1014 1018 raise error.Abort(msg)
1015 1019 return diff
1016 1020
1017 1021
1018 1022 def writediffproperties(ctxs, diff):
1019 1023 """write metadata to diff so patches could be applied losslessly
1020 1024
1021 1025 ``ctxs`` is the list of commits that created the diff, in ascending order.
1022 1026 The list is generally a single commit, but may be several when using
1023 1027 ``phabsend --fold``.
1024 1028 """
1025 1029 # creatediff returns with a diffid but query returns with an id
1026 1030 diffid = diff.get(b'diffid', diff.get(b'id'))
1027 1031 basectx = ctxs[0]
1028 1032 tipctx = ctxs[-1]
1029 1033
1030 1034 params = {
1031 1035 b'diff_id': diffid,
1032 1036 b'name': b'hg:meta',
1033 1037 b'data': templatefilters.json(
1034 1038 {
1035 1039 b'user': tipctx.user(),
1036 1040 b'date': b'%d %d' % tipctx.date(),
1037 1041 b'branch': tipctx.branch(),
1038 1042 b'node': tipctx.hex(),
1039 1043 b'parent': basectx.p1().hex(),
1040 1044 }
1041 1045 ),
1042 1046 }
1043 1047 callconduit(basectx.repo().ui, b'differential.setdiffproperty', params)
1044 1048
1045 1049 commits = {}
1046 1050 for ctx in ctxs:
1047 1051 commits[ctx.hex()] = {
1048 1052 b'author': stringutil.person(ctx.user()),
1049 1053 b'authorEmail': stringutil.email(ctx.user()),
1050 1054 b'time': int(ctx.date()[0]),
1051 1055 b'commit': ctx.hex(),
1052 1056 b'parents': [ctx.p1().hex()],
1053 1057 b'branch': ctx.branch(),
1054 1058 }
1055 1059 params = {
1056 1060 b'diff_id': diffid,
1057 1061 b'name': b'local:commits',
1058 1062 b'data': templatefilters.json(commits),
1059 1063 }
1060 1064 callconduit(basectx.repo().ui, b'differential.setdiffproperty', params)
1061 1065
1062 1066
1063 1067 def createdifferentialrevision(
1064 1068 ctxs,
1065 1069 revid=None,
1066 1070 parentrevphid=None,
1067 1071 oldbasenode=None,
1068 1072 oldnode=None,
1069 1073 olddiff=None,
1070 1074 actions=None,
1071 1075 comment=None,
1072 1076 ):
1073 1077 """create or update a Differential Revision
1074 1078
1075 1079 If revid is None, create a new Differential Revision, otherwise update
1076 1080 revid. If parentrevphid is not None, set it as a dependency.
1077 1081
1078 1082 If there is a single commit for the new Differential Revision, ``ctxs`` will
1079 1083 be a list of that single context. Otherwise, it is a list that covers the
1080 1084 range of changes for the differential, where ``ctxs[0]`` is the first change
1081 1085 to include and ``ctxs[-1]`` is the last.
1082 1086
1083 1087 If oldnode is not None, check if the patch content (without commit message
1084 1088 and metadata) has changed before creating another diff. For a Revision with
1085 1089 a single commit, ``oldbasenode`` and ``oldnode`` have the same value. For a
1086 1090 Revision covering multiple commits, ``oldbasenode`` corresponds to
1087 1091 ``ctxs[0]`` the previous time this Revision was posted, and ``oldnode``
1088 1092 corresponds to ``ctxs[-1]``.
1089 1093
1090 1094 If actions is not None, they will be appended to the transaction.
1091 1095 """
1092 1096 ctx = ctxs[-1]
1093 1097 basectx = ctxs[0]
1094 1098
1095 1099 repo = ctx.repo()
1096 1100 if oldnode:
1097 1101 diffopts = mdiff.diffopts(git=True, context=32767)
1098 1102 unfi = repo.unfiltered()
1099 1103 oldctx = unfi[oldnode]
1100 1104 oldbasectx = unfi[oldbasenode]
1101 1105 neednewdiff = getdiff(basectx, ctx, diffopts) != getdiff(
1102 1106 oldbasectx, oldctx, diffopts
1103 1107 )
1104 1108 else:
1105 1109 neednewdiff = True
1106 1110
1107 1111 transactions = []
1108 1112 if neednewdiff:
1109 1113 diff = creatediff(basectx, ctx)
1110 1114 transactions.append({b'type': b'update', b'value': diff[b'phid']})
1111 1115 if comment:
1112 1116 transactions.append({b'type': b'comment', b'value': comment})
1113 1117 else:
1114 1118 # Even if we don't need to upload a new diff because the patch content
1115 1119 # does not change. We might still need to update its metadata so
1116 1120 # pushers could know the correct node metadata.
1117 1121 assert olddiff
1118 1122 diff = olddiff
1119 1123 writediffproperties(ctxs, diff)
1120 1124
1121 1125 # Set the parent Revision every time, so commit re-ordering is picked-up
1122 1126 if parentrevphid:
1123 1127 transactions.append(
1124 1128 {b'type': b'parents.set', b'value': [parentrevphid]}
1125 1129 )
1126 1130
1127 1131 if actions:
1128 1132 transactions += actions
1129 1133
1130 1134 # When folding multiple local commits into a single review, arcanist will
1131 1135 # take the summary line of the first commit as the title, and then
1132 1136 # concatenate the rest of the remaining messages (including each of their
1133 1137 # first lines) to the rest of the first commit message (each separated by
1134 1138 # an empty line), and use that as the summary field. Do the same here.
1135 1139 # For commits with only a one line message, there is no summary field, as
1136 1140 # this gets assigned to the title.
1137 1141 fields = util.sortdict() # sorted for stable wire protocol in tests
1138 1142
1139 1143 for i, _ctx in enumerate(ctxs):
1140 1144 # Parse commit message and update related fields.
1141 1145 desc = _ctx.description()
1142 1146 info = callconduit(
1143 1147 repo.ui, b'differential.parsecommitmessage', {b'corpus': desc}
1144 1148 )
1145 1149
1146 1150 for k in [b'title', b'summary', b'testPlan']:
1147 1151 v = info[b'fields'].get(k)
1148 1152 if not v:
1149 1153 continue
1150 1154
1151 1155 if i == 0:
1152 1156 # Title, summary and test plan (if present) are taken verbatim
1153 1157 # for the first commit.
1154 1158 fields[k] = v.rstrip()
1155 1159 continue
1156 1160 elif k == b'title':
1157 1161 # Add subsequent titles (i.e. the first line of the commit
1158 1162 # message) back to the summary.
1159 1163 k = b'summary'
1160 1164
1161 1165 # Append any current field to the existing composite field
1162 1166 fields[k] = b'\n\n'.join(filter(None, [fields.get(k), v.rstrip()]))
1163 1167
1164 1168 for k, v in fields.items():
1165 1169 transactions.append({b'type': k, b'value': v})
1166 1170
1167 1171 params = {b'transactions': transactions}
1168 1172 if revid is not None:
1169 1173 # Update an existing Differential Revision
1170 1174 params[b'objectIdentifier'] = revid
1171 1175
1172 1176 revision = callconduit(repo.ui, b'differential.revision.edit', params)
1173 1177 if not revision:
1174 1178 if len(ctxs) == 1:
1175 1179 msg = _(b'cannot create revision for %s') % ctx
1176 1180 else:
1177 1181 msg = _(b'cannot create revision for %s::%s') % (basectx, ctx)
1178 1182 raise error.Abort(msg)
1179 1183
1180 1184 return revision, diff
1181 1185
1182 1186
1183 1187 def userphids(ui, names):
1184 1188 """convert user names to PHIDs"""
1185 1189 names = [name.lower() for name in names]
1186 1190 query = {b'constraints': {b'usernames': names}}
1187 1191 result = callconduit(ui, b'user.search', query)
1188 1192 # username not found is not an error of the API. So check if we have missed
1189 1193 # some names here.
1190 1194 data = result[b'data']
1191 1195 resolved = {entry[b'fields'][b'username'].lower() for entry in data}
1192 1196 unresolved = set(names) - resolved
1193 1197 if unresolved:
1194 1198 raise error.Abort(
1195 1199 _(b'unknown username: %s') % b' '.join(sorted(unresolved))
1196 1200 )
1197 1201 return [entry[b'phid'] for entry in data]
1198 1202
1199 1203
1200 1204 def _print_phabsend_action(ui, ctx, newrevid, action):
1201 1205 """print the ``action`` that occurred when posting ``ctx`` for review
1202 1206
1203 1207 This is a utility function for the sending phase of ``phabsend``, which
1204 1208 makes it easier to show a status for all local commits with `--fold``.
1205 1209 """
1206 1210 actiondesc = ui.label(
1207 1211 {
1208 1212 b'created': _(b'created'),
1209 1213 b'skipped': _(b'skipped'),
1210 1214 b'updated': _(b'updated'),
1211 1215 }[action],
1212 1216 b'phabricator.action.%s' % action,
1213 1217 )
1214 1218 drevdesc = ui.label(b'D%d' % newrevid, b'phabricator.drev')
1215 1219 nodedesc = ui.label(bytes(ctx), b'phabricator.node')
1216 1220 desc = ui.label(ctx.description().split(b'\n')[0], b'phabricator.desc')
1217 1221 ui.write(_(b'%s - %s - %s: %s\n') % (drevdesc, actiondesc, nodedesc, desc))
1218 1222
1219 1223
1220 1224 def _amend_diff_properties(unfi, drevid, newnodes, diff):
1221 1225 """update the local commit list for the ``diff`` associated with ``drevid``
1222 1226
1223 1227 This is a utility function for the amend phase of ``phabsend``, which
1224 1228 converts failures to warning messages.
1225 1229 """
1226 1230 _debug(
1227 1231 unfi.ui,
1228 1232 b"new commits: %s\n" % stringutil.pprint([short(n) for n in newnodes]),
1229 1233 )
1230 1234
1231 1235 try:
1232 1236 writediffproperties([unfi[newnode] for newnode in newnodes], diff)
1233 1237 except util.urlerr.urlerror:
1234 1238 # If it fails just warn and keep going, otherwise the DREV
1235 1239 # associations will be lost
1236 1240 unfi.ui.warnnoi18n(b'Failed to update metadata for D%d\n' % drevid)
1237 1241
1238 1242
1239 1243 @vcrcommand(
1240 1244 b'phabsend',
1241 1245 [
1242 1246 (b'r', b'rev', [], _(b'revisions to send'), _(b'REV')),
1243 1247 (b'', b'amend', True, _(b'update commit messages')),
1244 1248 (b'', b'reviewer', [], _(b'specify reviewers')),
1245 1249 (b'', b'blocker', [], _(b'specify blocking reviewers')),
1246 1250 (
1247 1251 b'm',
1248 1252 b'comment',
1249 1253 b'',
1250 1254 _(b'add a comment to Revisions with new/updated Diffs'),
1251 1255 ),
1252 1256 (b'', b'confirm', None, _(b'ask for confirmation before sending')),
1257 (b'', b'fold', False, _(b'combine the revisions into one review')),
1253 1258 ],
1254 1259 _(b'REV [OPTIONS]'),
1255 1260 helpcategory=command.CATEGORY_IMPORT_EXPORT,
1256 1261 )
1257 1262 def phabsend(ui, repo, *revs, **opts):
1258 1263 """upload changesets to Phabricator
1259 1264
1260 1265 If there are multiple revisions specified, they will be send as a stack
1261 1266 with a linear dependencies relationship using the order specified by the
1262 1267 revset.
1263 1268
1264 1269 For the first time uploading changesets, local tags will be created to
1265 1270 maintain the association. After the first time, phabsend will check
1266 1271 obsstore and tags information so it can figure out whether to update an
1267 1272 existing Differential Revision, or create a new one.
1268 1273
1269 1274 If --amend is set, update commit messages so they have the
1270 1275 ``Differential Revision`` URL, remove related tags. This is similar to what
1271 1276 arcanist will do, and is more desired in author-push workflows. Otherwise,
1272 1277 use local tags to record the ``Differential Revision`` association.
1273 1278
1274 1279 The --confirm option lets you confirm changesets before sending them. You
1275 1280 can also add following to your configuration file to make it default
1276 1281 behaviour::
1277 1282
1278 1283 [phabsend]
1279 1284 confirm = true
1280 1285
1286 By default, a separate review will be created for each commit that is
1287 selected, and will have the same parent/child relationship in Phabricator.
1288 If ``--fold`` is set, multiple commits are rolled up into a single review
1289 as if diffed from the parent of the first revision to the last. The commit
1290 messages are concatenated in the summary field on Phabricator.
1291
1281 1292 phabsend will check obsstore and the above association to decide whether to
1282 1293 update an existing Differential Revision, or create a new one.
1283 1294 """
1284 1295 opts = pycompat.byteskwargs(opts)
1285 1296 revs = list(revs) + opts.get(b'rev', [])
1286 1297 revs = scmutil.revrange(repo, revs)
1287 1298 revs.sort() # ascending order to preserve topological parent/child in phab
1288 1299
1289 1300 if not revs:
1290 1301 raise error.Abort(_(b'phabsend requires at least one changeset'))
1291 1302 if opts.get(b'amend'):
1292 1303 cmdutil.checkunfinished(repo)
1293 1304
1305 ctxs = [repo[rev] for rev in revs]
1306
1307 fold = opts.get(b'fold')
1308 if fold:
1309 if len(revs) == 1:
1310 # TODO: just switch to --no-fold instead?
1311 raise error.Abort(_(b"cannot fold a single revision"))
1312
1313 # There's no clear way to manage multiple commits with a Dxxx tag, so
1314 # require the amend option. (We could append "_nnn", but then it
1315 # becomes jumbled if earlier commits are added to an update.) It should
1316 # lock the repo and ensure that the range is editable, but that would
1317 # make the code pretty convoluted. The default behavior of `arc` is to
1318 # create a new review anyway.
1319 if not opts.get(b"amend"):
1320 raise error.Abort(_(b"cannot fold with --no-amend"))
1321
1322 # Ensure the local commits are an unbroken range
1323 revrange = repo.revs(b'(first(%ld)::last(%ld))', revs, revs)
1324 if any(r for r in revs if r not in revrange) or any(
1325 r for r in revrange if r not in revs
1326 ):
1327 raise error.Abort(_(b"cannot fold non-linear revisions"))
1328
1329 # It might be possible to bucketize the revisions by the DREV value, and
1330 # iterate over those groups when posting, and then again when amending.
1331 # But for simplicity, require all selected revisions to be for the same
1332 # DREV (if present). Adding local revisions to an existing DREV is
1333 # acceptable.
1334 drevmatchers = [
1335 _differentialrevisiondescre.search(ctx.description())
1336 for ctx in ctxs
1337 ]
1338 if len({m.group('url') for m in drevmatchers if m}) > 1:
1339 raise error.Abort(
1340 _(b"cannot fold revisions with different DREV values")
1341 )
1342
1294 1343 # {newnode: (oldnode, olddiff, olddrev}
1295 1344 oldmap = getoldnodedrevmap(repo, [repo[r].node() for r in revs])
1296 1345
1297 1346 confirm = ui.configbool(b'phabsend', b'confirm')
1298 1347 confirm |= bool(opts.get(b'confirm'))
1299 1348 if confirm:
1300 1349 confirmed = _confirmbeforesend(repo, revs, oldmap)
1301 1350 if not confirmed:
1302 1351 raise error.Abort(_(b'phabsend cancelled'))
1303 1352
1304 1353 actions = []
1305 1354 reviewers = opts.get(b'reviewer', [])
1306 1355 blockers = opts.get(b'blocker', [])
1307 1356 phids = []
1308 1357 if reviewers:
1309 1358 phids.extend(userphids(repo.ui, reviewers))
1310 1359 if blockers:
1311 1360 phids.extend(
1312 1361 map(
1313 1362 lambda phid: b'blocking(%s)' % phid,
1314 1363 userphids(repo.ui, blockers),
1315 1364 )
1316 1365 )
1317 1366 if phids:
1318 1367 actions.append({b'type': b'reviewers.add', b'value': phids})
1319 1368
1320 1369 drevids = [] # [int]
1321 1370 diffmap = {} # {newnode: diff}
1322 1371
1323 1372 # Send patches one by one so we know their Differential Revision PHIDs and
1324 1373 # can provide dependency relationship
1325 1374 lastrevphid = None
1326 for rev in revs:
1327 ui.debug(b'sending rev %d\n' % rev)
1328 ctx = repo[rev]
1375 for ctx in ctxs:
1376 if fold:
1377 ui.debug(b'sending rev %d::%d\n' % (ctx.rev(), ctxs[-1].rev()))
1378 else:
1379 ui.debug(b'sending rev %d\n' % ctx.rev())
1329 1380
1330 1381 # Get Differential Revision ID
1331 1382 oldnode, olddiff, revid = oldmap.get(ctx.node(), (None, None, None))
1332 oldbasenode = oldnode
1383 oldbasenode, oldbasediff, oldbaserevid = oldnode, olddiff, revid
1384
1385 if fold:
1386 oldbasenode, oldbasediff, oldbaserevid = oldmap.get(
1387 ctxs[-1].node(), (None, None, None)
1388 )
1389
1333 1390 if oldnode != ctx.node() or opts.get(b'amend'):
1334 1391 # Create or update Differential Revision
1335 1392 revision, diff = createdifferentialrevision(
1336 [ctx],
1393 ctxs if fold else [ctx],
1337 1394 revid,
1338 1395 lastrevphid,
1339 1396 oldbasenode,
1340 1397 oldnode,
1341 1398 olddiff,
1342 1399 actions,
1343 1400 opts.get(b'comment'),
1344 1401 )
1402
1403 if fold:
1404 for ctx in ctxs:
1345 1405 diffmap[ctx.node()] = diff
1406 else:
1407 diffmap[ctx.node()] = diff
1408
1346 1409 newrevid = int(revision[b'object'][b'id'])
1347 1410 newrevphid = revision[b'object'][b'phid']
1348 1411 if revid:
1349 1412 action = b'updated'
1350 1413 else:
1351 1414 action = b'created'
1352 1415
1353 1416 # Create a local tag to note the association, if commit message
1354 1417 # does not have it already
1418 if not fold:
1355 1419 m = _differentialrevisiondescre.search(ctx.description())
1356 1420 if not m or int(m.group('id')) != newrevid:
1357 1421 tagname = b'D%d' % newrevid
1358 1422 tags.tag(
1359 1423 repo,
1360 1424 tagname,
1361 1425 ctx.node(),
1362 1426 message=None,
1363 1427 user=None,
1364 1428 date=None,
1365 1429 local=True,
1366 1430 )
1367 1431 else:
1368 1432 # Nothing changed. But still set "newrevphid" so the next revision
1369 1433 # could depend on this one and "newrevid" for the summary line.
1370 1434 newrevphid = querydrev(repo.ui, b'%d' % revid)[0][b'phid']
1371 1435 newrevid = revid
1372 1436 action = b'skipped'
1373 1437
1374 1438 drevids.append(newrevid)
1375 1439 lastrevphid = newrevphid
1376 1440
1441 if fold:
1442 for c in ctxs:
1443 if oldmap.get(c.node(), (None, None, None))[2]:
1444 action = b'updated'
1445 else:
1446 action = b'created'
1447 _print_phabsend_action(ui, c, newrevid, action)
1448 break
1449
1377 1450 _print_phabsend_action(ui, ctx, newrevid, action)
1378 1451
1379 1452 # Update commit messages and remove tags
1380 1453 if opts.get(b'amend'):
1381 1454 unfi = repo.unfiltered()
1382 1455 drevs = callconduit(ui, b'differential.query', {b'ids': drevids})
1383 1456 with repo.wlock(), repo.lock(), repo.transaction(b'phabsend'):
1384 1457 wnode = unfi[b'.'].node()
1385 1458 mapping = {} # {oldnode: [newnode]}
1459 newnodes = []
1460
1461 drevid = drevids[0]
1462
1386 1463 for i, rev in enumerate(revs):
1387 1464 old = unfi[rev]
1465 if not fold:
1388 1466 drevid = drevids[i]
1389 1467 drev = [d for d in drevs if int(d[b'id']) == drevid][0]
1390 newdesc = get_amended_desc(drev, old, False)
1468
1469 newdesc = get_amended_desc(drev, old, fold)
1391 1470 # Make sure commit message contain "Differential Revision"
1392 1471 if old.description() != newdesc:
1393 1472 if old.phase() == phases.public:
1394 1473 ui.warn(
1395 1474 _(b"warning: not updating public commit %s\n")
1396 1475 % scmutil.formatchangeid(old)
1397 1476 )
1398 1477 continue
1399 1478 parents = [
1400 1479 mapping.get(old.p1().node(), (old.p1(),))[0],
1401 1480 mapping.get(old.p2().node(), (old.p2(),))[0],
1402 1481 ]
1403 1482 new = context.metadataonlyctx(
1404 1483 repo,
1405 1484 old,
1406 1485 parents=parents,
1407 1486 text=newdesc,
1408 1487 user=old.user(),
1409 1488 date=old.date(),
1410 1489 extra=old.extra(),
1411 1490 )
1412 1491
1413 1492 newnode = new.commit()
1414 1493
1415 1494 mapping[old.node()] = [newnode]
1416 1495
1496 if fold:
1497 # Defer updating the (single) Diff until all nodes are
1498 # collected. No tags were created, so none need to be
1499 # removed.
1500 newnodes.append(newnode)
1501 continue
1502
1417 1503 _amend_diff_properties(
1418 1504 unfi, drevid, [newnode], diffmap[old.node()]
1419 1505 )
1506
1420 1507 # Remove local tags since it's no longer necessary
1421 1508 tagname = b'D%d' % drevid
1422 1509 if tagname in repo.tags():
1423 1510 tags.tag(
1424 1511 repo,
1425 1512 tagname,
1426 1513 nullid,
1427 1514 message=None,
1428 1515 user=None,
1429 1516 date=None,
1430 1517 local=True,
1431 1518 )
1519 elif fold:
1520 # When folding multiple commits into one review with
1521 # --fold, track even the commits that weren't amended, so
1522 # that their association isn't lost if the properties are
1523 # rewritten below.
1524 newnodes.append(old.node())
1525
1526 # If the submitted commits are public, no amend takes place so
1527 # there are no newnodes and therefore no diff update to do.
1528 if fold and newnodes:
1529 diff = diffmap[old.node()]
1530
1531 # The diff object in diffmap doesn't have the local commits
1532 # because that could be returned from differential.creatediff,
1533 # not differential.querydiffs. So use the queried diff (if
1534 # present), or force the amend (a new revision is being posted.)
1535 if not olddiff or set(newnodes) != getlocalcommits(olddiff):
1536 _debug(ui, b"updating local commit list for D%d\n" % drevid)
1537 _amend_diff_properties(unfi, drevid, newnodes, diff)
1538 else:
1539 _debug(
1540 ui,
1541 b"local commit list for D%d is already up-to-date\n"
1542 % drevid,
1543 )
1544 elif fold:
1545 _debug(ui, b"no newnodes to update\n")
1546
1432 1547 scmutil.cleanupnodes(repo, mapping, b'phabsend', fixphase=True)
1433 1548 if wnode in mapping:
1434 1549 unfi.setparents(mapping[wnode][0])
1435 1550
1436 1551
1437 1552 # Map from "hg:meta" keys to header understood by "hg import". The order is
1438 1553 # consistent with "hg export" output.
1439 1554 _metanamemap = util.sortdict(
1440 1555 [
1441 1556 (b'user', b'User'),
1442 1557 (b'date', b'Date'),
1443 1558 (b'branch', b'Branch'),
1444 1559 (b'node', b'Node ID'),
1445 1560 (b'parent', b'Parent '),
1446 1561 ]
1447 1562 )
1448 1563
1449 1564
1450 1565 def _confirmbeforesend(repo, revs, oldmap):
1451 1566 url, token = readurltoken(repo.ui)
1452 1567 ui = repo.ui
1453 1568 for rev in revs:
1454 1569 ctx = repo[rev]
1455 1570 desc = ctx.description().splitlines()[0]
1456 1571 oldnode, olddiff, drevid = oldmap.get(ctx.node(), (None, None, None))
1457 1572 if drevid:
1458 1573 drevdesc = ui.label(b'D%d' % drevid, b'phabricator.drev')
1459 1574 else:
1460 1575 drevdesc = ui.label(_(b'NEW'), b'phabricator.drev')
1461 1576
1462 1577 ui.write(
1463 1578 _(b'%s - %s: %s\n')
1464 1579 % (
1465 1580 drevdesc,
1466 1581 ui.label(bytes(ctx), b'phabricator.node'),
1467 1582 ui.label(desc, b'phabricator.desc'),
1468 1583 )
1469 1584 )
1470 1585
1471 1586 if ui.promptchoice(
1472 1587 _(b'Send the above changes to %s (yn)?$$ &Yes $$ &No') % url
1473 1588 ):
1474 1589 return False
1475 1590
1476 1591 return True
1477 1592
1478 1593
1479 1594 _knownstatusnames = {
1480 1595 b'accepted',
1481 1596 b'needsreview',
1482 1597 b'needsrevision',
1483 1598 b'closed',
1484 1599 b'abandoned',
1485 1600 b'changesplanned',
1486 1601 }
1487 1602
1488 1603
1489 1604 def _getstatusname(drev):
1490 1605 """get normalized status name from a Differential Revision"""
1491 1606 return drev[b'statusName'].replace(b' ', b'').lower()
1492 1607
1493 1608
1494 1609 # Small language to specify differential revisions. Support symbols: (), :X,
1495 1610 # +, and -.
1496 1611
1497 1612 _elements = {
1498 1613 # token-type: binding-strength, primary, prefix, infix, suffix
1499 1614 b'(': (12, None, (b'group', 1, b')'), None, None),
1500 1615 b':': (8, None, (b'ancestors', 8), None, None),
1501 1616 b'&': (5, None, None, (b'and_', 5), None),
1502 1617 b'+': (4, None, None, (b'add', 4), None),
1503 1618 b'-': (4, None, None, (b'sub', 4), None),
1504 1619 b')': (0, None, None, None, None),
1505 1620 b'symbol': (0, b'symbol', None, None, None),
1506 1621 b'end': (0, None, None, None, None),
1507 1622 }
1508 1623
1509 1624
1510 1625 def _tokenize(text):
1511 1626 view = memoryview(text) # zero-copy slice
1512 1627 special = b'():+-& '
1513 1628 pos = 0
1514 1629 length = len(text)
1515 1630 while pos < length:
1516 1631 symbol = b''.join(
1517 1632 itertools.takewhile(
1518 1633 lambda ch: ch not in special, pycompat.iterbytestr(view[pos:])
1519 1634 )
1520 1635 )
1521 1636 if symbol:
1522 1637 yield (b'symbol', symbol, pos)
1523 1638 pos += len(symbol)
1524 1639 else: # special char, ignore space
1525 1640 if text[pos : pos + 1] != b' ':
1526 1641 yield (text[pos : pos + 1], None, pos)
1527 1642 pos += 1
1528 1643 yield (b'end', None, pos)
1529 1644
1530 1645
1531 1646 def _parse(text):
1532 1647 tree, pos = parser.parser(_elements).parse(_tokenize(text))
1533 1648 if pos != len(text):
1534 1649 raise error.ParseError(b'invalid token', pos)
1535 1650 return tree
1536 1651
1537 1652
1538 1653 def _parsedrev(symbol):
1539 1654 """str -> int or None, ex. 'D45' -> 45; '12' -> 12; 'x' -> None"""
1540 1655 if symbol.startswith(b'D') and symbol[1:].isdigit():
1541 1656 return int(symbol[1:])
1542 1657 if symbol.isdigit():
1543 1658 return int(symbol)
1544 1659
1545 1660
1546 1661 def _prefetchdrevs(tree):
1547 1662 """return ({single-drev-id}, {ancestor-drev-id}) to prefetch"""
1548 1663 drevs = set()
1549 1664 ancestordrevs = set()
1550 1665 op = tree[0]
1551 1666 if op == b'symbol':
1552 1667 r = _parsedrev(tree[1])
1553 1668 if r:
1554 1669 drevs.add(r)
1555 1670 elif op == b'ancestors':
1556 1671 r, a = _prefetchdrevs(tree[1])
1557 1672 drevs.update(r)
1558 1673 ancestordrevs.update(r)
1559 1674 ancestordrevs.update(a)
1560 1675 else:
1561 1676 for t in tree[1:]:
1562 1677 r, a = _prefetchdrevs(t)
1563 1678 drevs.update(r)
1564 1679 ancestordrevs.update(a)
1565 1680 return drevs, ancestordrevs
1566 1681
1567 1682
1568 1683 def querydrev(ui, spec):
1569 1684 """return a list of "Differential Revision" dicts
1570 1685
1571 1686 spec is a string using a simple query language, see docstring in phabread
1572 1687 for details.
1573 1688
1574 1689 A "Differential Revision dict" looks like:
1575 1690
1576 1691 {
1577 1692 "activeDiffPHID": "PHID-DIFF-xoqnjkobbm6k4dk6hi72",
1578 1693 "authorPHID": "PHID-USER-tv3ohwc4v4jeu34otlye",
1579 1694 "auxiliary": {
1580 1695 "phabricator:depends-on": [
1581 1696 "PHID-DREV-gbapp366kutjebt7agcd"
1582 1697 ]
1583 1698 "phabricator:projects": [],
1584 1699 },
1585 1700 "branch": "default",
1586 1701 "ccs": [],
1587 1702 "commits": [],
1588 1703 "dateCreated": "1499181406",
1589 1704 "dateModified": "1499182103",
1590 1705 "diffs": [
1591 1706 "3",
1592 1707 "4",
1593 1708 ],
1594 1709 "hashes": [],
1595 1710 "id": "2",
1596 1711 "lineCount": "2",
1597 1712 "phid": "PHID-DREV-672qvysjcczopag46qty",
1598 1713 "properties": {},
1599 1714 "repositoryPHID": "PHID-REPO-hub2hx62ieuqeheznasv",
1600 1715 "reviewers": [],
1601 1716 "sourcePath": null
1602 1717 "status": "0",
1603 1718 "statusName": "Needs Review",
1604 1719 "summary": "",
1605 1720 "testPlan": "",
1606 1721 "title": "example",
1607 1722 "uri": "https://phab.example.com/D2",
1608 1723 }
1609 1724 """
1610 1725 # TODO: replace differential.query and differential.querydiffs with
1611 1726 # differential.diff.search because the former (and their output) are
1612 1727 # frozen, and planned to be deprecated and removed.
1613 1728
1614 1729 def fetch(params):
1615 1730 """params -> single drev or None"""
1616 1731 key = (params.get(b'ids') or params.get(b'phids') or [None])[0]
1617 1732 if key in prefetched:
1618 1733 return prefetched[key]
1619 1734 drevs = callconduit(ui, b'differential.query', params)
1620 1735 # Fill prefetched with the result
1621 1736 for drev in drevs:
1622 1737 prefetched[drev[b'phid']] = drev
1623 1738 prefetched[int(drev[b'id'])] = drev
1624 1739 if key not in prefetched:
1625 1740 raise error.Abort(
1626 1741 _(b'cannot get Differential Revision %r') % params
1627 1742 )
1628 1743 return prefetched[key]
1629 1744
1630 1745 def getstack(topdrevids):
1631 1746 """given a top, get a stack from the bottom, [id] -> [id]"""
1632 1747 visited = set()
1633 1748 result = []
1634 1749 queue = [{b'ids': [i]} for i in topdrevids]
1635 1750 while queue:
1636 1751 params = queue.pop()
1637 1752 drev = fetch(params)
1638 1753 if drev[b'id'] in visited:
1639 1754 continue
1640 1755 visited.add(drev[b'id'])
1641 1756 result.append(int(drev[b'id']))
1642 1757 auxiliary = drev.get(b'auxiliary', {})
1643 1758 depends = auxiliary.get(b'phabricator:depends-on', [])
1644 1759 for phid in depends:
1645 1760 queue.append({b'phids': [phid]})
1646 1761 result.reverse()
1647 1762 return smartset.baseset(result)
1648 1763
1649 1764 # Initialize prefetch cache
1650 1765 prefetched = {} # {id or phid: drev}
1651 1766
1652 1767 tree = _parse(spec)
1653 1768 drevs, ancestordrevs = _prefetchdrevs(tree)
1654 1769
1655 1770 # developer config: phabricator.batchsize
1656 1771 batchsize = ui.configint(b'phabricator', b'batchsize')
1657 1772
1658 1773 # Prefetch Differential Revisions in batch
1659 1774 tofetch = set(drevs)
1660 1775 for r in ancestordrevs:
1661 1776 tofetch.update(range(max(1, r - batchsize), r + 1))
1662 1777 if drevs:
1663 1778 fetch({b'ids': list(tofetch)})
1664 1779 validids = sorted(set(getstack(list(ancestordrevs))) | set(drevs))
1665 1780
1666 1781 # Walk through the tree, return smartsets
1667 1782 def walk(tree):
1668 1783 op = tree[0]
1669 1784 if op == b'symbol':
1670 1785 drev = _parsedrev(tree[1])
1671 1786 if drev:
1672 1787 return smartset.baseset([drev])
1673 1788 elif tree[1] in _knownstatusnames:
1674 1789 drevs = [
1675 1790 r
1676 1791 for r in validids
1677 1792 if _getstatusname(prefetched[r]) == tree[1]
1678 1793 ]
1679 1794 return smartset.baseset(drevs)
1680 1795 else:
1681 1796 raise error.Abort(_(b'unknown symbol: %s') % tree[1])
1682 1797 elif op in {b'and_', b'add', b'sub'}:
1683 1798 assert len(tree) == 3
1684 1799 return getattr(operator, op)(walk(tree[1]), walk(tree[2]))
1685 1800 elif op == b'group':
1686 1801 return walk(tree[1])
1687 1802 elif op == b'ancestors':
1688 1803 return getstack(walk(tree[1]))
1689 1804 else:
1690 1805 raise error.ProgrammingError(b'illegal tree: %r' % tree)
1691 1806
1692 1807 return [prefetched[r] for r in walk(tree)]
1693 1808
1694 1809
1695 1810 def getdescfromdrev(drev):
1696 1811 """get description (commit message) from "Differential Revision"
1697 1812
1698 1813 This is similar to differential.getcommitmessage API. But we only care
1699 1814 about limited fields: title, summary, test plan, and URL.
1700 1815 """
1701 1816 title = drev[b'title']
1702 1817 summary = drev[b'summary'].rstrip()
1703 1818 testplan = drev[b'testPlan'].rstrip()
1704 1819 if testplan:
1705 1820 testplan = b'Test Plan:\n%s' % testplan
1706 1821 uri = b'Differential Revision: %s' % drev[b'uri']
1707 1822 return b'\n\n'.join(filter(None, [title, summary, testplan, uri]))
1708 1823
1709 1824
1710 1825 def get_amended_desc(drev, ctx, folded):
1711 1826 """similar to ``getdescfromdrev``, but supports a folded series of commits
1712 1827
1713 1828 This is used when determining if an individual commit needs to have its
1714 1829 message amended after posting it for review. The determination is made for
1715 1830 each individual commit, even when they were folded into one review.
1716 1831 """
1717 1832 if not folded:
1718 1833 return getdescfromdrev(drev)
1719 1834
1720 1835 uri = b'Differential Revision: %s' % drev[b'uri']
1721 1836
1722 1837 # Since the commit messages were combined when posting multiple commits
1723 1838 # with --fold, the fields can't be read from Phabricator here, or *all*
1724 1839 # affected local revisions will end up with the same commit message after
1725 1840 # the URI is amended in. Append in the DREV line, or update it if it
1726 1841 # exists. At worst, this means commit message or test plan updates on
1727 1842 # Phabricator aren't propagated back to the repository, but that seems
1728 1843 # reasonable for the case where local commits are effectively combined
1729 1844 # in Phabricator.
1730 1845 m = _differentialrevisiondescre.search(ctx.description())
1731 1846 if not m:
1732 1847 return b'\n\n'.join([ctx.description(), uri])
1733 1848
1734 1849 return _differentialrevisiondescre.sub(uri, ctx.description())
1735 1850
1736 1851
1737 1852 def getlocalcommits(diff):
1738 1853 """get the set of local commits from a diff object
1739 1854
1740 1855 See ``getdiffmeta()`` for an example diff object.
1741 1856 """
1742 1857 props = diff.get(b'properties') or {}
1743 1858 commits = props.get(b'local:commits') or {}
1744 1859 if len(commits) > 1:
1745 1860 return {bin(c) for c in commits.keys()}
1746 1861
1747 1862 # Storing the diff metadata predates storing `local:commits`, so continue
1748 1863 # to use that in the --no-fold case.
1749 1864 return {bin(getdiffmeta(diff).get(b'node', b'')) or None}
1750 1865
1751 1866
1752 1867 def getdiffmeta(diff):
1753 1868 """get commit metadata (date, node, user, p1) from a diff object
1754 1869
1755 1870 The metadata could be "hg:meta", sent by phabsend, like:
1756 1871
1757 1872 "properties": {
1758 1873 "hg:meta": {
1759 1874 "branch": "default",
1760 1875 "date": "1499571514 25200",
1761 1876 "node": "98c08acae292b2faf60a279b4189beb6cff1414d",
1762 1877 "user": "Foo Bar <foo@example.com>",
1763 1878 "parent": "6d0abad76b30e4724a37ab8721d630394070fe16"
1764 1879 }
1765 1880 }
1766 1881
1767 1882 Or converted from "local:commits", sent by "arc", like:
1768 1883
1769 1884 "properties": {
1770 1885 "local:commits": {
1771 1886 "98c08acae292b2faf60a279b4189beb6cff1414d": {
1772 1887 "author": "Foo Bar",
1773 1888 "authorEmail": "foo@example.com"
1774 1889 "branch": "default",
1775 1890 "commit": "98c08acae292b2faf60a279b4189beb6cff1414d",
1776 1891 "local": "1000",
1777 1892 "message": "...",
1778 1893 "parents": ["6d0abad76b30e4724a37ab8721d630394070fe16"],
1779 1894 "rev": "98c08acae292b2faf60a279b4189beb6cff1414d",
1780 1895 "summary": "...",
1781 1896 "tag": "",
1782 1897 "time": 1499546314,
1783 1898 }
1784 1899 }
1785 1900 }
1786 1901
1787 1902 Note: metadata extracted from "local:commits" will lose time zone
1788 1903 information.
1789 1904 """
1790 1905 props = diff.get(b'properties') or {}
1791 1906 meta = props.get(b'hg:meta')
1792 1907 if not meta:
1793 1908 if props.get(b'local:commits'):
1794 1909 commit = sorted(props[b'local:commits'].values())[0]
1795 1910 meta = {}
1796 1911 if b'author' in commit and b'authorEmail' in commit:
1797 1912 meta[b'user'] = b'%s <%s>' % (
1798 1913 commit[b'author'],
1799 1914 commit[b'authorEmail'],
1800 1915 )
1801 1916 if b'time' in commit:
1802 1917 meta[b'date'] = b'%d 0' % int(commit[b'time'])
1803 1918 if b'branch' in commit:
1804 1919 meta[b'branch'] = commit[b'branch']
1805 1920 node = commit.get(b'commit', commit.get(b'rev'))
1806 1921 if node:
1807 1922 meta[b'node'] = node
1808 1923 if len(commit.get(b'parents', ())) >= 1:
1809 1924 meta[b'parent'] = commit[b'parents'][0]
1810 1925 else:
1811 1926 meta = {}
1812 1927 if b'date' not in meta and b'dateCreated' in diff:
1813 1928 meta[b'date'] = b'%s 0' % diff[b'dateCreated']
1814 1929 if b'branch' not in meta and diff.get(b'branch'):
1815 1930 meta[b'branch'] = diff[b'branch']
1816 1931 if b'parent' not in meta and diff.get(b'sourceControlBaseRevision'):
1817 1932 meta[b'parent'] = diff[b'sourceControlBaseRevision']
1818 1933 return meta
1819 1934
1820 1935
1821 1936 def _getdrevs(ui, stack, specs):
1822 1937 """convert user supplied DREVSPECs into "Differential Revision" dicts
1823 1938
1824 1939 See ``hg help phabread`` for how to specify each DREVSPEC.
1825 1940 """
1826 1941 if len(specs) > 0:
1827 1942
1828 1943 def _formatspec(s):
1829 1944 if stack:
1830 1945 s = b':(%s)' % s
1831 1946 return b'(%s)' % s
1832 1947
1833 1948 spec = b'+'.join(pycompat.maplist(_formatspec, specs))
1834 1949
1835 1950 drevs = querydrev(ui, spec)
1836 1951 if drevs:
1837 1952 return drevs
1838 1953
1839 1954 raise error.Abort(_(b"empty DREVSPEC set"))
1840 1955
1841 1956
1842 1957 def readpatch(ui, drevs, write):
1843 1958 """generate plain-text patch readable by 'hg import'
1844 1959
1845 1960 write takes a list of (DREV, bytes), where DREV is the differential number
1846 1961 (as bytes, without the "D" prefix) and the bytes are the text of a patch
1847 1962 to be imported. drevs is what "querydrev" returns, results of
1848 1963 "differential.query".
1849 1964 """
1850 1965 # Prefetch hg:meta property for all diffs
1851 1966 diffids = sorted({max(int(v) for v in drev[b'diffs']) for drev in drevs})
1852 1967 diffs = callconduit(ui, b'differential.querydiffs', {b'ids': diffids})
1853 1968
1854 1969 patches = []
1855 1970
1856 1971 # Generate patch for each drev
1857 1972 for drev in drevs:
1858 1973 ui.note(_(b'reading D%s\n') % drev[b'id'])
1859 1974
1860 1975 diffid = max(int(v) for v in drev[b'diffs'])
1861 1976 body = callconduit(ui, b'differential.getrawdiff', {b'diffID': diffid})
1862 1977 desc = getdescfromdrev(drev)
1863 1978 header = b'# HG changeset patch\n'
1864 1979
1865 1980 # Try to preserve metadata from hg:meta property. Write hg patch
1866 1981 # headers that can be read by the "import" command. See patchheadermap
1867 1982 # and extract in mercurial/patch.py for supported headers.
1868 1983 meta = getdiffmeta(diffs[b'%d' % diffid])
1869 1984 for k in _metanamemap.keys():
1870 1985 if k in meta:
1871 1986 header += b'# %s %s\n' % (_metanamemap[k], meta[k])
1872 1987
1873 1988 content = b'%s%s\n%s' % (header, desc, body)
1874 1989 patches.append((drev[b'id'], content))
1875 1990
1876 1991 # Write patches to the supplied callback
1877 1992 write(patches)
1878 1993
1879 1994
1880 1995 @vcrcommand(
1881 1996 b'phabread',
1882 1997 [(b'', b'stack', False, _(b'read dependencies'))],
1883 1998 _(b'DREVSPEC... [OPTIONS]'),
1884 1999 helpcategory=command.CATEGORY_IMPORT_EXPORT,
1885 2000 optionalrepo=True,
1886 2001 )
1887 2002 def phabread(ui, repo, *specs, **opts):
1888 2003 """print patches from Phabricator suitable for importing
1889 2004
1890 2005 DREVSPEC could be a Differential Revision identity, like ``D123``, or just
1891 2006 the number ``123``. It could also have common operators like ``+``, ``-``,
1892 2007 ``&``, ``(``, ``)`` for complex queries. Prefix ``:`` could be used to
1893 2008 select a stack. If multiple DREVSPEC values are given, the result is the
1894 2009 union of each individually evaluated value. No attempt is currently made
1895 2010 to reorder the values to run from parent to child.
1896 2011
1897 2012 ``abandoned``, ``accepted``, ``closed``, ``needsreview``, ``needsrevision``
1898 2013 could be used to filter patches by status. For performance reason, they
1899 2014 only represent a subset of non-status selections and cannot be used alone.
1900 2015
1901 2016 For example, ``:D6+8-(2+D4)`` selects a stack up to D6, plus D8 and exclude
1902 2017 D2 and D4. ``:D9 & needsreview`` selects "Needs Review" revisions in a
1903 2018 stack up to D9.
1904 2019
1905 2020 If --stack is given, follow dependencies information and read all patches.
1906 2021 It is equivalent to the ``:`` operator.
1907 2022 """
1908 2023 opts = pycompat.byteskwargs(opts)
1909 2024 drevs = _getdrevs(ui, opts.get(b'stack'), specs)
1910 2025
1911 2026 def _write(patches):
1912 2027 for drev, content in patches:
1913 2028 ui.write(content)
1914 2029
1915 2030 readpatch(ui, drevs, _write)
1916 2031
1917 2032
1918 2033 @vcrcommand(
1919 2034 b'phabimport',
1920 2035 [(b'', b'stack', False, _(b'import dependencies as well'))],
1921 2036 _(b'DREVSPEC... [OPTIONS]'),
1922 2037 helpcategory=command.CATEGORY_IMPORT_EXPORT,
1923 2038 )
1924 2039 def phabimport(ui, repo, *specs, **opts):
1925 2040 """import patches from Phabricator for the specified Differential Revisions
1926 2041
1927 2042 The patches are read and applied starting at the parent of the working
1928 2043 directory.
1929 2044
1930 2045 See ``hg help phabread`` for how to specify DREVSPEC.
1931 2046 """
1932 2047 opts = pycompat.byteskwargs(opts)
1933 2048
1934 2049 # --bypass avoids losing exec and symlink bits when importing on Windows,
1935 2050 # and allows importing with a dirty wdir. It also aborts instead of leaving
1936 2051 # rejects.
1937 2052 opts[b'bypass'] = True
1938 2053
1939 2054 # Mandatory default values, synced with commands.import
1940 2055 opts[b'strip'] = 1
1941 2056 opts[b'prefix'] = b''
1942 2057 # Evolve 9.3.0 assumes this key is present in cmdutil.tryimportone()
1943 2058 opts[b'obsolete'] = False
1944 2059
1945 2060 if ui.configbool(b'phabimport', b'secret'):
1946 2061 opts[b'secret'] = True
1947 2062 if ui.configbool(b'phabimport', b'obsolete'):
1948 2063 opts[b'obsolete'] = True # Handled by evolve wrapping tryimportone()
1949 2064
1950 2065 def _write(patches):
1951 2066 parents = repo[None].parents()
1952 2067
1953 2068 with repo.wlock(), repo.lock(), repo.transaction(b'phabimport'):
1954 2069 for drev, contents in patches:
1955 2070 ui.status(_(b'applying patch from D%s\n') % drev)
1956 2071
1957 2072 with patch.extract(ui, pycompat.bytesio(contents)) as patchdata:
1958 2073 msg, node, rej = cmdutil.tryimportone(
1959 2074 ui,
1960 2075 repo,
1961 2076 patchdata,
1962 2077 parents,
1963 2078 opts,
1964 2079 [],
1965 2080 None, # Never update wdir to another revision
1966 2081 )
1967 2082
1968 2083 if not node:
1969 2084 raise error.Abort(_(b'D%s: no diffs found') % drev)
1970 2085
1971 2086 ui.note(msg + b'\n')
1972 2087 parents = [repo[node]]
1973 2088
1974 2089 drevs = _getdrevs(ui, opts.get(b'stack'), specs)
1975 2090
1976 2091 readpatch(repo.ui, drevs, _write)
1977 2092
1978 2093
1979 2094 @vcrcommand(
1980 2095 b'phabupdate',
1981 2096 [
1982 2097 (b'', b'accept', False, _(b'accept revisions')),
1983 2098 (b'', b'reject', False, _(b'reject revisions')),
1984 2099 (b'', b'abandon', False, _(b'abandon revisions')),
1985 2100 (b'', b'reclaim', False, _(b'reclaim revisions')),
1986 2101 (b'm', b'comment', b'', _(b'comment on the last revision')),
1987 2102 ],
1988 2103 _(b'DREVSPEC... [OPTIONS]'),
1989 2104 helpcategory=command.CATEGORY_IMPORT_EXPORT,
1990 2105 optionalrepo=True,
1991 2106 )
1992 2107 def phabupdate(ui, repo, *specs, **opts):
1993 2108 """update Differential Revision in batch
1994 2109
1995 2110 DREVSPEC selects revisions. See :hg:`help phabread` for its usage.
1996 2111 """
1997 2112 opts = pycompat.byteskwargs(opts)
1998 2113 flags = [n for n in b'accept reject abandon reclaim'.split() if opts.get(n)]
1999 2114 if len(flags) > 1:
2000 2115 raise error.Abort(_(b'%s cannot be used together') % b', '.join(flags))
2001 2116
2002 2117 actions = []
2003 2118 for f in flags:
2004 2119 actions.append({b'type': f, b'value': True})
2005 2120
2006 2121 drevs = _getdrevs(ui, opts.get(b'stack'), specs)
2007 2122 for i, drev in enumerate(drevs):
2008 2123 if i + 1 == len(drevs) and opts.get(b'comment'):
2009 2124 actions.append({b'type': b'comment', b'value': opts[b'comment']})
2010 2125 if actions:
2011 2126 params = {
2012 2127 b'objectIdentifier': drev[b'phid'],
2013 2128 b'transactions': actions,
2014 2129 }
2015 2130 callconduit(ui, b'differential.revision.edit', params)
2016 2131
2017 2132
2018 2133 @eh.templatekeyword(b'phabreview', requires={b'ctx'})
2019 2134 def template_review(context, mapping):
2020 2135 """:phabreview: Object describing the review for this changeset.
2021 2136 Has attributes `url` and `id`.
2022 2137 """
2023 2138 ctx = context.resource(mapping, b'ctx')
2024 2139 m = _differentialrevisiondescre.search(ctx.description())
2025 2140 if m:
2026 2141 return templateutil.hybriddict(
2027 2142 {b'url': m.group('url'), b'id': b"D%s" % m.group('id'),}
2028 2143 )
2029 2144 else:
2030 2145 tags = ctx.repo().nodetags(ctx.node())
2031 2146 for t in tags:
2032 2147 if _differentialrevisiontagre.match(t):
2033 2148 url = ctx.repo().ui.config(b'phabricator', b'url')
2034 2149 if not url.endswith(b'/'):
2035 2150 url += b'/'
2036 2151 url += t
2037 2152
2038 2153 return templateutil.hybriddict({b'url': url, b'id': t,})
2039 2154 return None
2040 2155
2041 2156
2042 2157 @eh.templatekeyword(b'phabstatus', requires={b'ctx', b'repo', b'ui'})
2043 2158 def template_status(context, mapping):
2044 2159 """:phabstatus: String. Status of Phabricator differential.
2045 2160 """
2046 2161 ctx = context.resource(mapping, b'ctx')
2047 2162 repo = context.resource(mapping, b'repo')
2048 2163 ui = context.resource(mapping, b'ui')
2049 2164
2050 2165 rev = ctx.rev()
2051 2166 try:
2052 2167 drevid = getdrevmap(repo, [rev])[rev]
2053 2168 except KeyError:
2054 2169 return None
2055 2170 drevs = callconduit(ui, b'differential.query', {b'ids': [drevid]})
2056 2171 for drev in drevs:
2057 2172 if int(drev[b'id']) == drevid:
2058 2173 return templateutil.hybriddict(
2059 2174 {b'url': drev[b'uri'], b'status': drev[b'statusName'],}
2060 2175 )
2061 2176 return None
2062 2177
2063 2178
2064 2179 @show.showview(b'phabstatus', csettopic=b'work')
2065 2180 def phabstatusshowview(ui, repo, displayer):
2066 2181 """Phabricator differiential status"""
2067 2182 revs = repo.revs('sort(_underway(), topo)')
2068 2183 drevmap = getdrevmap(repo, revs)
2069 2184 unknownrevs, drevids, revsbydrevid = [], set(), {}
2070 2185 for rev, drevid in pycompat.iteritems(drevmap):
2071 2186 if drevid is not None:
2072 2187 drevids.add(drevid)
2073 2188 revsbydrevid.setdefault(drevid, set()).add(rev)
2074 2189 else:
2075 2190 unknownrevs.append(rev)
2076 2191
2077 2192 drevs = callconduit(ui, b'differential.query', {b'ids': list(drevids)})
2078 2193 drevsbyrev = {}
2079 2194 for drev in drevs:
2080 2195 for rev in revsbydrevid[int(drev[b'id'])]:
2081 2196 drevsbyrev[rev] = drev
2082 2197
2083 2198 def phabstatus(ctx):
2084 2199 drev = drevsbyrev[ctx.rev()]
2085 2200 status = ui.label(
2086 2201 b'%(statusName)s' % drev,
2087 2202 b'phabricator.status.%s' % _getstatusname(drev),
2088 2203 )
2089 2204 ui.write(b"\n%s %s\n" % (drev[b'uri'], status))
2090 2205
2091 2206 revs -= smartset.baseset(unknownrevs)
2092 2207 revdag = graphmod.dagwalker(repo, revs)
2093 2208
2094 2209 ui.setconfig(b'experimental', b'graphshorten', True)
2095 2210 displayer._exthook = phabstatus
2096 2211 nodelen = show.longestshortest(repo, revs)
2097 2212 logcmdutil.displaygraph(
2098 2213 ui,
2099 2214 repo,
2100 2215 revdag,
2101 2216 displayer,
2102 2217 graphmod.asciiedges,
2103 2218 props={b'nodelen': nodelen},
2104 2219 )
@@ -1,419 +1,788
1 1 #require vcr
2 2 $ cat >> $HGRCPATH <<EOF
3 3 > [extensions]
4 4 > phabricator =
5 5 >
6 6 > [auth]
7 7 > hgphab.schemes = https
8 8 > hgphab.prefix = phab.mercurial-scm.org
9 9 > # When working on the extension and making phabricator interaction
10 10 > # changes, edit this to be a real phabricator token. When done, edit
11 11 > # it back. The VCR transcripts will be auto-sanitised to replace your real
12 12 > # token with this value.
13 13 > hgphab.phabtoken = cli-hahayouwish
14 14 >
15 15 > [phabricator]
16 16 > debug = True
17 17 > EOF
18 18 $ hg init repo
19 19 $ cd repo
20 20 $ cat >> .hg/hgrc <<EOF
21 21 > [phabricator]
22 22 > url = https://phab.mercurial-scm.org/
23 23 > callsign = HG
24 24 > EOF
25 25 $ VCR="$TESTDIR/phabricator"
26 26
27 27 Error is handled reasonably. We override the phabtoken here so that
28 28 when you're developing changes to phabricator.py you can edit the
29 29 above config and have a real token in the test but not have to edit
30 30 this test.
31 31 $ hg phabread --config auth.hgphab.phabtoken=cli-notavalidtoken \
32 32 > --test-vcr "$VCR/phabread-conduit-error.json" D4480 | head
33 33 abort: Conduit Error (ERR-INVALID-AUTH): API token "cli-notavalidtoken" has the wrong length. API tokens should be 32 characters long.
34 34
35 35 Missing arguments don't crash, and may print the command help
36 36
37 37 $ hg debugcallconduit
38 38 hg debugcallconduit: invalid arguments
39 39 hg debugcallconduit METHOD
40 40
41 41 call Conduit API
42 42
43 43 options:
44 44
45 45 (use 'hg debugcallconduit -h' to show more help)
46 46 [255]
47 47 $ hg phabread
48 48 abort: empty DREVSPEC set
49 49 [255]
50 50
51 51 Basic phabread:
52 52 $ hg phabread --test-vcr "$VCR/phabread-4480.json" D4480 | head
53 53 # HG changeset patch
54 54 # Date 1536771503 0
55 55 # Parent a5de21c9e3703f8e8eb064bd7d893ff2f703c66a
56 56 exchangev2: start to implement pull with wire protocol v2
57 57
58 58 Wire protocol version 2 will take a substantially different
59 59 approach to exchange than version 1 (at least as far as pulling
60 60 is concerned).
61 61
62 62 This commit establishes a new exchangev2 module for holding
63 63
64 64 Phabread with multiple DREVSPEC
65 65
66 66 TODO: attempt to order related revisions like --stack?
67 67 $ hg phabread --test-vcr "$VCR/phabread-multi-drev.json" D8205 8206 D8207 \
68 68 > | grep '^Differential Revision'
69 69 Differential Revision: https://phab.mercurial-scm.org/D8205
70 70 Differential Revision: https://phab.mercurial-scm.org/D8206
71 71 Differential Revision: https://phab.mercurial-scm.org/D8207
72 72
73 73 Empty DREVSPECs don't crash
74 74
75 75 $ hg phabread --test-vcr "$VCR/phabread-empty-drev.json" D7917-D7917
76 76 abort: empty DREVSPEC set
77 77 [255]
78 78
79 79
80 80 phabupdate with an accept:
81 81 $ hg phabupdate --accept D4564 \
82 82 > -m 'I think I like where this is headed. Will read rest of series later.'\
83 83 > --test-vcr "$VCR/accept-4564.json"
84 84 abort: Conduit Error (ERR-CONDUIT-CORE): Validation errors:
85 85 - You can not accept this revision because it has already been closed. Only open revisions can be accepted.
86 86 [255]
87 87 $ hg phabupdate --accept D7913 -m 'LGTM' --test-vcr "$VCR/accept-7913.json"
88 88
89 89 Create a differential diff:
90 90 $ HGENCODING=utf-8; export HGENCODING
91 91 $ echo alpha > alpha
92 92 $ hg ci --addremove -m 'create alpha for phabricator test €'
93 93 adding alpha
94 94 $ hg phabsend -r . --test-vcr "$VCR/phabsend-create-alpha.json"
95 95 D7915 - created - d386117f30e6: create alpha for phabricator test \xe2\x82\xac (esc)
96 96 new commits: ['347bf67801e5']
97 97 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/d386117f30e6-24ffe649-phabsend.hg
98 98 $ echo more >> alpha
99 99 $ HGEDITOR=true hg ci --amend
100 100 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/347bf67801e5-3bf313e4-amend.hg
101 101 $ echo beta > beta
102 102 $ hg ci --addremove -m 'create beta for phabricator test'
103 103 adding beta
104 104 $ hg phabsend -r ".^::" --test-vcr "$VCR/phabsend-update-alpha-create-beta.json"
105 105 c44b38f24a45 mapped to old nodes []
106 106 D7915 - updated - c44b38f24a45: create alpha for phabricator test \xe2\x82\xac (esc)
107 107 D7916 - created - 9e6901f21d5b: create beta for phabricator test
108 108 new commits: ['a692622e6937']
109 109 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/9e6901f21d5b-1fcd4f0e-phabsend.hg
110 110 $ unset HGENCODING
111 111
112 112 The amend won't explode after posting a public commit. The local tag is left
113 113 behind to identify it.
114 114
115 115 $ echo 'public change' > beta
116 116 $ hg ci -m 'create public change for phabricator testing'
117 117 $ hg phase --public .
118 118 $ echo 'draft change' > alpha
119 119 $ hg ci -m 'create draft change for phabricator testing'
120 120 $ hg phabsend --amend -r '.^::' --test-vcr "$VCR/phabsend-create-public.json"
121 121 D7917 - created - 7b4185ab5d16: create public change for phabricator testing
122 122 D7918 - created - 251c1c333fc6: create draft change for phabricator testing
123 123 warning: not updating public commit 2:7b4185ab5d16
124 124 new commits: ['3244dc4a3334']
125 125 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/251c1c333fc6-41cb7c3b-phabsend.hg
126 126 $ hg tags -v
127 127 tip 3:3244dc4a3334
128 128 D7917 2:7b4185ab5d16 local
129 129
130 130 $ hg debugcallconduit user.search --test-vcr "$VCR/phab-conduit.json" <<EOF
131 131 > {
132 132 > "constraints": {
133 133 > "isBot": true
134 134 > }
135 135 > }
136 136 > EOF
137 137 {
138 138 "cursor": {
139 139 "after": null,
140 140 "before": null,
141 141 "limit": 100,
142 142 "order": null
143 143 },
144 144 "data": [],
145 145 "maps": {},
146 146 "query": {
147 147 "queryKey": null
148 148 }
149 149 }
150 150
151 151 Template keywords
152 152 $ hg log -T'{rev} {phabreview|json}\n'
153 153 3 {"id": "D7918", "url": "https://phab.mercurial-scm.org/D7918"}
154 154 2 {"id": "D7917", "url": "https://phab.mercurial-scm.org/D7917"}
155 155 1 {"id": "D7916", "url": "https://phab.mercurial-scm.org/D7916"}
156 156 0 {"id": "D7915", "url": "https://phab.mercurial-scm.org/D7915"}
157 157
158 158 $ hg log -T'{rev} {if(phabreview, "{phabreview.url} {phabreview.id}")}\n'
159 159 3 https://phab.mercurial-scm.org/D7918 D7918
160 160 2 https://phab.mercurial-scm.org/D7917 D7917
161 161 1 https://phab.mercurial-scm.org/D7916 D7916
162 162 0 https://phab.mercurial-scm.org/D7915 D7915
163 163
164 164 Commenting when phabsending:
165 165 $ echo comment > comment
166 166 $ hg ci --addremove -m "create comment for phabricator test"
167 167 adding comment
168 168 $ hg phabsend -r . -m "For default branch" --test-vcr "$VCR/phabsend-comment-created.json"
169 169 D7919 - created - d5dddca9023d: create comment for phabricator test
170 170 new commits: ['f7db812bbe1d']
171 171 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/d5dddca9023d-adf673ba-phabsend.hg
172 172 $ echo comment2 >> comment
173 173 $ hg ci --amend
174 174 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/f7db812bbe1d-8fcded77-amend.hg
175 175 $ hg phabsend -r . -m "Address review comments" --test-vcr "$VCR/phabsend-comment-updated.json"
176 176 1849d7828727 mapped to old nodes []
177 177 D7919 - updated - 1849d7828727: create comment for phabricator test
178 178
179 179 Phabsending a skipped commit:
180 180 $ hg phabsend --no-amend -r . --test-vcr "$VCR/phabsend-skipped.json"
181 181 1849d7828727 mapped to old nodes ['1849d7828727']
182 182 D7919 - skipped - 1849d7828727: create comment for phabricator test
183 183
184 184 Phabesending a new binary, a modified binary, and a removed binary
185 185
186 186 >>> open('bin', 'wb').write(b'\0a') and None
187 187 $ hg ci -Am 'add binary'
188 188 adding bin
189 189 >>> open('bin', 'wb').write(b'\0b') and None
190 190 $ hg ci -m 'modify binary'
191 191 $ hg rm bin
192 192 $ hg ci -m 'remove binary'
193 193 $ hg phabsend -r .~2:: --test-vcr "$VCR/phabsend-binary.json"
194 194 uploading bin@aa24a81f55de
195 195 D8007 - created - aa24a81f55de: add binary
196 196 uploading bin@d8d62a881b54
197 197 D8008 - created - d8d62a881b54: modify binary
198 198 D8009 - created - af55645b2e29: remove binary
199 199 new commits: ['b8139fbb4a57']
200 200 new commits: ['c88ce4c2d2ad']
201 201 new commits: ['75dbbc901145']
202 202 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/aa24a81f55de-a3a0cf24-phabsend.hg
203 203
204 204 Phabsend a renamed binary and a copied binary, with and without content changes
205 205 to src and dest
206 206
207 207 >>> open('bin2', 'wb').write(b'\0c') and None
208 208 $ hg ci -Am 'add another binary'
209 209 adding bin2
210 210
211 211 TODO: "bin2" can't be viewed in this commit (left or right side), and the URL
212 212 looks much different than when viewing "bin2_moved". No idea if this is a phab
213 213 bug, or phabsend bug. The patch (as printed by phabread) look reasonable
214 214 though.
215 215
216 216 $ hg mv bin2 bin2_moved
217 217 $ hg ci -m "moved binary"
218 218
219 219 Note: "bin2_moved" is also not viewable in phabricator with this review
220 220
221 221 $ hg cp bin2_moved bin2_copied
222 222 $ hg ci -m "copied binary"
223 223
224 224 Note: "bin2_moved_again" is marked binary in phabricator, and both sides of it
225 225 are viewable in their proper state. "bin2_copied" is not viewable, and not
226 226 listed as binary in phabricator.
227 227
228 228 >>> open('bin2_copied', 'wb').write(b'\0move+mod') and None
229 229 $ hg mv bin2_copied bin2_moved_again
230 230 $ hg ci -m "move+mod copied binary"
231 231
232 232 Note: "bin2_moved" and "bin2_moved_copy" are both marked binary, and both
233 233 viewable on each side.
234 234
235 235 >>> open('bin2_moved', 'wb').write(b'\0precopy mod') and None
236 236 $ hg cp bin2_moved bin2_moved_copied
237 237 >>> open('bin2_moved', 'wb').write(b'\0copy src+mod') and None
238 238 $ hg ci -m "copy+mod moved binary"
239 239
240 240 $ hg phabsend -r .~4:: --test-vcr "$VCR/phabsend-binary-renames.json"
241 241 uploading bin2@f42f9195e00c
242 242 D8128 - created - f42f9195e00c: add another binary
243 243 D8129 - created - 834ab31d80ae: moved binary
244 244 D8130 - created - 494b750e5194: copied binary
245 245 uploading bin2_moved_again@25f766b50cc2
246 246 D8131 - created - 25f766b50cc2: move+mod copied binary
247 247 uploading bin2_moved_copied@1b87b363a5e4
248 248 uploading bin2_moved@1b87b363a5e4
249 249 D8132 - created - 1b87b363a5e4: copy+mod moved binary
250 250 new commits: ['90437c20312a']
251 251 new commits: ['f391f4da4c61']
252 252 new commits: ['da86a9f3268c']
253 253 new commits: ['003ffc16ba66']
254 254 new commits: ['13bd750c36fa']
255 255 saved backup bundle to $TESTTMP/repo/.hg/strip-backup/f42f9195e00c-e82a0769-phabsend.hg
256 256
257 257 Phabreading a DREV with a local:commits time as a string:
258 258 $ hg phabread --test-vcr "$VCR/phabread-str-time.json" D1285
259 259 # HG changeset patch
260 260 # User Pulkit Goyal <7895pulkit@gmail.com>
261 261 # Date 1509404054 -19800
262 262 # Node ID 44fc1c1f1774a76423b9c732af6938435099bcc5
263 263 # Parent 8feef8ef8389a3b544e0a74624f1efc3a8d85d35
264 264 repoview: add a new attribute _visibilityexceptions and related API
265 265
266 266 Currently we don't have a defined way in core to make some hidden revisions
267 267 visible in filtered repo. Extensions to achieve the purpose of unhiding some
268 268 hidden commits, wrap repoview.pinnedrevs() function.
269 269
270 270 To make the above task simple and have well defined API, this patch adds a new
271 271 attribute '_visibilityexceptions' to repoview class which will contains
272 272 the hidden revs which should be exception.
273 273 This will allow to set different exceptions for different repoview objects
274 274 backed by the same unfiltered repo.
275 275
276 276 This patch also adds API to add revs to the attribute set and get them.
277 277
278 278 Thanks to Jun for suggesting the use of repoview class instead of localrepo.
279 279
280 280 Differential Revision: https://phab.mercurial-scm.org/D1285
281 281 diff --git a/mercurial/repoview.py b/mercurial/repoview.py
282 282 --- a/mercurial/repoview.py
283 283 +++ b/mercurial/repoview.py
284 284 @@ * @@ (glob)
285 285 subclasses of `localrepo`. Eg: `bundlerepo` or `statichttprepo`.
286 286 """
287 287
288 288 + # hidden revs which should be visible
289 289 + _visibilityexceptions = set()
290 290 +
291 291 def __init__(self, repo, filtername):
292 292 object.__setattr__(self, r'_unfilteredrepo', repo)
293 293 object.__setattr__(self, r'filtername', filtername)
294 294 @@ -231,6 +234,14 @@
295 295 return self
296 296 return self.unfiltered().filtered(name)
297 297
298 298 + def addvisibilityexceptions(self, revs):
299 299 + """adds hidden revs which should be visible to set of exceptions"""
300 300 + self._visibilityexceptions.update(revs)
301 301 +
302 302 + def getvisibilityexceptions(self):
303 303 + """returns the set of hidden revs which should be visible"""
304 304 + return self._visibilityexceptions
305 305 +
306 306 # everything access are forwarded to the proxied repo
307 307 def __getattr__(self, attr):
308 308 return getattr(self._unfilteredrepo, attr)
309 309 diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
310 310 --- a/mercurial/localrepo.py
311 311 +++ b/mercurial/localrepo.py
312 312 @@ -570,6 +570,14 @@
313 313 def close(self):
314 314 self._writecaches()
315 315
316 316 + def addvisibilityexceptions(self, exceptions):
317 317 + # should be called on a filtered repository
318 318 + pass
319 319 +
320 320 + def getvisibilityexceptions(self):
321 321 + # should be called on a filtered repository
322 322 + return set()
323 323 +
324 324 def _loadextensions(self):
325 325 extensions.loadall(self.ui)
326 326
327 327
328 328 A bad .arcconfig doesn't error out
329 329 $ echo 'garbage' > .arcconfig
330 330 $ hg config phabricator --debug
331 331 invalid JSON in $TESTTMP/repo/.arcconfig
332 332 read config from: */.hgrc (glob)
333 333 */.hgrc:*: phabricator.debug=True (glob)
334 334 $TESTTMP/repo/.hg/hgrc:*: phabricator.url=https://phab.mercurial-scm.org/ (glob)
335 335 $TESTTMP/repo/.hg/hgrc:*: phabricator.callsign=HG (glob)
336 336
337 337 The .arcconfig content overrides global config
338 338 $ cat >> $HGRCPATH << EOF
339 339 > [phabricator]
340 340 > url = global
341 341 > callsign = global
342 342 > EOF
343 343 $ cp $TESTDIR/../.arcconfig .
344 344 $ mv .hg/hgrc .hg/hgrc.bak
345 345 $ hg config phabricator --debug
346 346 read config from: */.hgrc (glob)
347 347 */.hgrc:*: phabricator.debug=True (glob)
348 348 $TESTTMP/repo/.arcconfig: phabricator.callsign=HG
349 349 $TESTTMP/repo/.arcconfig: phabricator.url=https://phab.mercurial-scm.org/
350 350
351 351 But it doesn't override local config
352 352 $ cat >> .hg/hgrc << EOF
353 353 > [phabricator]
354 354 > url = local
355 355 > callsign = local
356 356 > EOF
357 357 $ hg config phabricator --debug
358 358 read config from: */.hgrc (glob)
359 359 */.hgrc:*: phabricator.debug=True (glob)
360 360 $TESTTMP/repo/.hg/hgrc:*: phabricator.url=local (glob)
361 361 $TESTTMP/repo/.hg/hgrc:*: phabricator.callsign=local (glob)
362 362 $ mv .hg/hgrc.bak .hg/hgrc
363 363
364 364 Phabimport works with a stack
365 365
366 366 $ cd ..
367 367 $ hg clone repo repo2 -qr 1
368 368 $ cp repo/.hg/hgrc repo2/.hg/
369 369 $ cd repo2
370 370 $ hg phabimport --stack 'D7918' --test-vcr "$VCR/phabimport-stack.json"
371 371 applying patch from D7917
372 372 applying patch from D7918
373 373 $ hg log -r .: -G -Tcompact
374 374 o 3[tip] aaef04066140 1970-01-01 00:00 +0000 test
375 375 | create draft change for phabricator testing
376 376 |
377 377 o 2 8de3712202d1 1970-01-01 00:00 +0000 test
378 378 | create public change for phabricator testing
379 379 |
380 380 @ 1 a692622e6937 1970-01-01 00:00 +0000 test
381 381 | create beta for phabricator test
382 382 ~
383 383 Phabimport can create secret commits
384 384
385 385 $ hg rollback --config ui.rollback=True
386 386 repository tip rolled back to revision 1 (undo phabimport)
387 387 $ hg phabimport --stack 'D7918' --test-vcr "$VCR/phabimport-stack.json" \
388 388 > --config phabimport.secret=True
389 389 applying patch from D7917
390 390 applying patch from D7918
391 391 $ hg log -r 'reverse(.:)' -T phases
392 392 changeset: 3:aaef04066140
393 393 tag: tip
394 394 phase: secret
395 395 user: test
396 396 date: Thu Jan 01 00:00:00 1970 +0000
397 397 summary: create draft change for phabricator testing
398 398
399 399 changeset: 2:8de3712202d1
400 400 phase: secret
401 401 user: test
402 402 date: Thu Jan 01 00:00:00 1970 +0000
403 403 summary: create public change for phabricator testing
404 404
405 405 changeset: 1:a692622e6937
406 406 phase: public
407 407 user: test
408 408 date: Thu Jan 01 00:00:00 1970 +0000
409 409 summary: create beta for phabricator test
410 410
411 411 Phabimport accepts multiple DREVSPECs
412 412
413 413 $ hg rollback --config ui.rollback=True
414 414 repository tip rolled back to revision 1 (undo phabimport)
415 415 $ hg phabimport --no-stack D7917 D7918 --test-vcr "$VCR/phabimport-multi-drev.json"
416 416 applying patch from D7917
417 417 applying patch from D7918
418 418
419 Validate arguments with --fold
420
421 $ hg phabsend --fold -r 1
422 abort: cannot fold a single revision
423 [255]
424 $ hg phabsend --fold --no-amend -r 1::
425 abort: cannot fold with --no-amend
426 [255]
427 $ hg phabsend --fold -r 0+3
428 abort: cannot fold non-linear revisions
429 [255]
430 $ hg phabsend --fold -r 1::
431 abort: cannot fold revisions with different DREV values
432 [255]
433
434 Setup a series of commits to be folded, and include the Test Plan field multiple
435 times to test the concatenation logic. No Test Plan field in the last one to
436 ensure missing fields are skipped.
437
438 $ hg init ../folded
439 $ cd ../folded
440 $ cat >> .hg/hgrc <<EOF
441 > [phabricator]
442 > url = https://phab.mercurial-scm.org/
443 > callsign = HG
444 > EOF
445
446 $ echo 'added' > file.txt
447 $ hg ci -Aqm 'added file'
448
449 $ cat > log.txt <<EOF
450 > one: first commit to review
451 >
452 > This file was modified with 'mod1' as its contents.
453 >
454 > Test Plan:
455 > LOL! What testing?!
456 > EOF
457 $ echo mod1 > file.txt
458 $ hg ci -l log.txt
459
460 $ cat > log.txt <<EOF
461 > two: second commit to review
462 >
463 > This file was modified with 'mod2' as its contents.
464 >
465 > Test Plan:
466 > Haha! yeah, right.
467 >
468 > EOF
469 $ echo mod2 > file.txt
470 $ hg ci -l log.txt
471
472 $ echo mod3 > file.txt
473 $ hg ci -m '3: a commit with no detailed message'
474
475 The folding of immutable commits works...
476
477 $ hg phase -r tip --public
478 $ hg phabsend --fold -r 1:: --test-vcr "$VCR/phabsend-fold-immutable.json"
479 D8386 - created - a959a3f69d8d: one: first commit to review
480 D8386 - created - 24a4438154ba: two: second commit to review
481 D8386 - created - d235829e802c: 3: a commit with no detailed message
482 warning: not updating public commit 1:a959a3f69d8d
483 warning: not updating public commit 2:24a4438154ba
484 warning: not updating public commit 3:d235829e802c
485 no newnodes to update
486
487 $ hg phase -r 0 --draft --force
488
489 ... as does the initial mutable fold...
490
491 $ echo y | hg phabsend --fold --confirm -r 1:: \
492 > --test-vcr "$VCR/phabsend-fold-initial.json"
493 NEW - a959a3f69d8d: one: first commit to review
494 NEW - 24a4438154ba: two: second commit to review
495 NEW - d235829e802c: 3: a commit with no detailed message
496 Send the above changes to https://phab.mercurial-scm.org/ (yn)? y
497 D8387 - created - a959a3f69d8d: one: first commit to review
498 D8387 - created - 24a4438154ba: two: second commit to review
499 D8387 - created - d235829e802c: 3: a commit with no detailed message
500 updating local commit list for D8387
501 new commits: ['602c4e738243', '832553266fe8', '921f8265efbd']
502 saved backup bundle to $TESTTMP/folded/.hg/strip-backup/a959a3f69d8d-a4a24136-phabsend.hg
503
504 ... and doesn't mangle the local commits.
505
506 $ hg log -T '{rev}:{node|short}\n{indent(desc, " ")}\n'
507 3:921f8265efbd
508 3: a commit with no detailed message
509
510 Differential Revision: https://phab.mercurial-scm.org/D8387
511 2:832553266fe8
512 two: second commit to review
513
514 This file was modified with 'mod2' as its contents.
515
516 Test Plan:
517 Haha! yeah, right.
518
519 Differential Revision: https://phab.mercurial-scm.org/D8387
520 1:602c4e738243
521 one: first commit to review
522
523 This file was modified with 'mod1' as its contents.
524
525 Test Plan:
526 LOL! What testing?!
527
528 Differential Revision: https://phab.mercurial-scm.org/D8387
529 0:98d480e0d494
530 added file
531
532 Setup some obsmarkers by adding a file to the middle commit. This stress tests
533 getoldnodedrevmap() in later phabsends.
534
535 $ hg up '.^'
536 1 files updated, 0 files merged, 0 files removed, 0 files unresolved
537 $ echo 'modified' > file2.txt
538 $ hg add file2.txt
539 $ hg amend --config experimental.evolution=all --config extensions.amend=
540 1 new orphan changesets
541 $ hg up 3
542 obsolete feature not enabled but 1 markers found!
543 1 files updated, 0 files merged, 1 files removed, 0 files unresolved
544 $ hg rebase --config experimental.evolution=all --config extensions.rebase=
545 note: not rebasing 2:832553266fe8 "two: second commit to review", already in destination as 4:0124e5474c88 "two: second commit to review" (tip)
546 rebasing 3:921f8265efbd "3: a commit with no detailed message"
547
548 When commits have changed locally, the local commit list on Phabricator is
549 updated.
550
551 $ echo y | hg phabsend --fold --confirm -r 1:: \
552 > --test-vcr "$VCR/phabsend-fold-updated.json"
553 obsolete feature not enabled but 2 markers found!
554 602c4e738243 mapped to old nodes ['602c4e738243']
555 0124e5474c88 mapped to old nodes ['832553266fe8']
556 e4edb1fe3565 mapped to old nodes ['921f8265efbd']
557 D8387 - 602c4e738243: one: first commit to review
558 D8387 - 0124e5474c88: two: second commit to review
559 D8387 - e4edb1fe3565: 3: a commit with no detailed message
560 Send the above changes to https://phab.mercurial-scm.org/ (yn)? y
561 D8387 - updated - 602c4e738243: one: first commit to review
562 D8387 - updated - 0124e5474c88: two: second commit to review
563 D8387 - updated - e4edb1fe3565: 3: a commit with no detailed message
564 obsolete feature not enabled but 2 markers found! (?)
565 updating local commit list for D8387
566 new commits: ['602c4e738243', '0124e5474c88', 'e4edb1fe3565']
567 $ hg log -Tcompact
568 obsolete feature not enabled but 2 markers found!
569 5[tip] e4edb1fe3565 1970-01-01 00:00 +0000 test
570 3: a commit with no detailed message
571
572 4:1 0124e5474c88 1970-01-01 00:00 +0000 test
573 two: second commit to review
574
575 1 602c4e738243 1970-01-01 00:00 +0000 test
576 one: first commit to review
577
578 0 98d480e0d494 1970-01-01 00:00 +0000 test
579 added file
580
581 When nothing has changed locally since the last phabsend, the commit list isn't
582 updated, and nothing is changed locally afterward.
583
584 $ hg phabsend --fold -r 1:: --test-vcr "$VCR/phabsend-fold-no-changes.json"
585 obsolete feature not enabled but 2 markers found!
586 602c4e738243 mapped to old nodes ['602c4e738243']
587 0124e5474c88 mapped to old nodes ['0124e5474c88']
588 e4edb1fe3565 mapped to old nodes ['e4edb1fe3565']
589 D8387 - updated - 602c4e738243: one: first commit to review
590 D8387 - updated - 0124e5474c88: two: second commit to review
591 D8387 - updated - e4edb1fe3565: 3: a commit with no detailed message
592 obsolete feature not enabled but 2 markers found! (?)
593 local commit list for D8387 is already up-to-date
594 $ hg log -Tcompact
595 obsolete feature not enabled but 2 markers found!
596 5[tip] e4edb1fe3565 1970-01-01 00:00 +0000 test
597 3: a commit with no detailed message
598
599 4:1 0124e5474c88 1970-01-01 00:00 +0000 test
600 two: second commit to review
601
602 1 602c4e738243 1970-01-01 00:00 +0000 test
603 one: first commit to review
604
605 0 98d480e0d494 1970-01-01 00:00 +0000 test
606 added file
607
608 Fold will accept new revisions at the end...
609
610 $ echo 'another mod' > file2.txt
611 $ hg ci -m 'four: extend the fold range'
612 obsolete feature not enabled but 2 markers found!
613 $ hg phabsend --fold -r 1:: --test-vcr "$VCR/phabsend-fold-extend-end.json" \
614 > --config experimental.evolution=all
615 602c4e738243 mapped to old nodes ['602c4e738243']
616 0124e5474c88 mapped to old nodes ['0124e5474c88']
617 e4edb1fe3565 mapped to old nodes ['e4edb1fe3565']
618 D8387 - updated - 602c4e738243: one: first commit to review
619 D8387 - updated - 0124e5474c88: two: second commit to review
620 D8387 - updated - e4edb1fe3565: 3: a commit with no detailed message
621 D8387 - created - 94aaae213b23: four: extend the fold range
622 updating local commit list for D8387
623 new commits: ['602c4e738243', '0124e5474c88', 'e4edb1fe3565', '51a04fea8707']
624 $ hg log -r . -T '{desc}\n'
625 four: extend the fold range
626
627 Differential Revision: https://phab.mercurial-scm.org/D8387
628 $ hg log -T'{rev} {if(phabreview, "{phabreview.url} {phabreview.id}")}\n' -r 1::
629 obsolete feature not enabled but 3 markers found!
630 1 https://phab.mercurial-scm.org/D8387 D8387
631 4 https://phab.mercurial-scm.org/D8387 D8387
632 5 https://phab.mercurial-scm.org/D8387 D8387
633 7 https://phab.mercurial-scm.org/D8387 D8387
634
635 ... and also accepts new revisions at the beginning of the range
636
637 It's a bit unfortunate that not having a Differential URL on the first commit
638 causes a new Differential Revision to be created, though it isn't *entirely*
639 unreasonable. At least this updates the subsequent commits.
640
641 TODO: See if it can reuse the existing Differential.
642
643 $ hg phabsend --fold -r 0:: --test-vcr "$VCR/phabsend-fold-extend-front.json" \
644 > --config experimental.evolution=all
645 602c4e738243 mapped to old nodes ['602c4e738243']
646 0124e5474c88 mapped to old nodes ['0124e5474c88']
647 e4edb1fe3565 mapped to old nodes ['e4edb1fe3565']
648 51a04fea8707 mapped to old nodes ['51a04fea8707']
649 D8388 - created - 98d480e0d494: added file
650 D8388 - updated - 602c4e738243: one: first commit to review
651 D8388 - updated - 0124e5474c88: two: second commit to review
652 D8388 - updated - e4edb1fe3565: 3: a commit with no detailed message
653 D8388 - updated - 51a04fea8707: four: extend the fold range
654 updating local commit list for D8388
655 new commits: ['15e9b14b4b4c', '6320b7d714cf', '3ee132d41dbc', '30682b960804', 'ac7db67f0991']
656
657 $ hg log -T '{rev}:{node|short}\n{indent(desc, " ")}\n'
658 obsolete feature not enabled but 8 markers found!
659 12:ac7db67f0991
660 four: extend the fold range
661
662 Differential Revision: https://phab.mercurial-scm.org/D8388
663 11:30682b960804
664 3: a commit with no detailed message
665
666 Differential Revision: https://phab.mercurial-scm.org/D8388
667 10:3ee132d41dbc
668 two: second commit to review
669
670 This file was modified with 'mod2' as its contents.
671
672 Test Plan:
673 Haha! yeah, right.
674
675 Differential Revision: https://phab.mercurial-scm.org/D8388
676 9:6320b7d714cf
677 one: first commit to review
678
679 This file was modified with 'mod1' as its contents.
680
681 Test Plan:
682 LOL! What testing?!
683
684 Differential Revision: https://phab.mercurial-scm.org/D8388
685 8:15e9b14b4b4c
686 added file
687
688 Differential Revision: https://phab.mercurial-scm.org/D8388
689
690 Test phabsend --fold with an `hg split` at the end of the range
691
692 $ echo foo > file3.txt
693 $ hg add file3.txt
694
695 $ hg log -r . -T '{desc}' > log.txt
696 $ echo 'amended mod' > file2.txt
697 $ hg ci --amend -l log.txt --config experimental.evolution=all
698
699 $ cat <<EOF | hg --config extensions.split= --config ui.interactive=True \
700 > --config experimental.evolution=all split -r .
701 > n
702 > y
703 > y
704 > y
705 > y
706 > EOF
707 diff --git a/file2.txt b/file2.txt
708 1 hunks, 1 lines changed
709 examine changes to 'file2.txt'?
710 (enter ? for help) [Ynesfdaq?] n
711
712 diff --git a/file3.txt b/file3.txt
713 new file mode 100644
714 examine changes to 'file3.txt'?
715 (enter ? for help) [Ynesfdaq?] y
716
717 @@ -0,0 +1,1 @@
718 +foo
719 record change 2/2 to 'file3.txt'?
720 (enter ? for help) [Ynesfdaq?] y
721
722 created new head
723 diff --git a/file2.txt b/file2.txt
724 1 hunks, 1 lines changed
725 examine changes to 'file2.txt'?
726 (enter ? for help) [Ynesfdaq?] y
727
728 @@ -1,1 +1,1 @@
729 -modified
730 +amended mod
731 record this change to 'file2.txt'?
732 (enter ? for help) [Ynesfdaq?] y
733
734 $ hg phabsend --fold -r 8:: --test-vcr "$VCR/phabsend-fold-split-end.json" \
735 > --config experimental.evolution=all
736 15e9b14b4b4c mapped to old nodes ['15e9b14b4b4c']
737 6320b7d714cf mapped to old nodes ['6320b7d714cf']
738 3ee132d41dbc mapped to old nodes ['3ee132d41dbc']
739 30682b960804 mapped to old nodes ['30682b960804']
740 6bc15dc99efd mapped to old nodes ['ac7db67f0991']
741 b50946d5e490 mapped to old nodes ['ac7db67f0991']
742 D8388 - updated - 15e9b14b4b4c: added file
743 D8388 - updated - 6320b7d714cf: one: first commit to review
744 D8388 - updated - 3ee132d41dbc: two: second commit to review
745 D8388 - updated - 30682b960804: 3: a commit with no detailed message
746 D8388 - updated - 6bc15dc99efd: four: extend the fold range
747 D8388 - updated - b50946d5e490: four: extend the fold range
748 updating local commit list for D8388
749 new commits: ['15e9b14b4b4c', '6320b7d714cf', '3ee132d41dbc', '30682b960804', '6bc15dc99efd', 'b50946d5e490']
750
751 Test phabsend --fold with an `hg fold` at the end of the range
752
753 $ hg --config experimental.evolution=all --config extensions.rebase= \
754 > rebase -r '.^' -r . -d '.^^' --collapse -l log.txt
755 rebasing 14:6bc15dc99efd "four: extend the fold range"
756 rebasing 15:b50946d5e490 "four: extend the fold range" (tip)
757
758 $ hg phabsend --fold -r 8:: --test-vcr "$VCR/phabsend-fold-fold-end.json" \
759 > --config experimental.evolution=all
760 15e9b14b4b4c mapped to old nodes ['15e9b14b4b4c']
761 6320b7d714cf mapped to old nodes ['6320b7d714cf']
762 3ee132d41dbc mapped to old nodes ['3ee132d41dbc']
763 30682b960804 mapped to old nodes ['30682b960804']
764 e919cdf3d4fe mapped to old nodes ['6bc15dc99efd', 'b50946d5e490']
765 D8388 - updated - 15e9b14b4b4c: added file
766 D8388 - updated - 6320b7d714cf: one: first commit to review
767 D8388 - updated - 3ee132d41dbc: two: second commit to review
768 D8388 - updated - 30682b960804: 3: a commit with no detailed message
769 D8388 - updated - e919cdf3d4fe: four: extend the fold range
770 updating local commit list for D8388
771 new commits: ['15e9b14b4b4c', '6320b7d714cf', '3ee132d41dbc', '30682b960804', 'e919cdf3d4fe']
772
773 $ hg log -r tip -v
774 obsolete feature not enabled but 12 markers found!
775 changeset: 16:e919cdf3d4fe
776 tag: tip
777 parent: 11:30682b960804
778 user: test
779 date: Thu Jan 01 00:00:00 1970 +0000
780 files: file2.txt file3.txt
781 description:
782 four: extend the fold range
783
784 Differential Revision: https://phab.mercurial-scm.org/D8388
785
786
787
419 788 $ cd ..
General Comments 0
You need to be logged in to leave comments. Login now