phabricator: fallback to reading metadata from diff for phabread
authorIan Moody <moz-ian@perix.co.uk>
Mon, 22 Apr 2019 18:55:26 +0100
changeset 42257 a4f7dceb07bf
parent 42256 9421d7e12888
child 42258 231334c1ee96
phabricator: fallback to reading metadata from diff for phabread Differential Revision: https://phab.mercurial-scm.org/D6301
hgext/phabricator.py
tests/test-phabricator.t
--- a/hgext/phabricator.py	Sat Apr 20 16:11:23 2019 +0100
+++ b/hgext/phabricator.py	Mon Apr 22 18:55:26 2019 +0100
@@ -905,22 +905,31 @@
     """
     props = diff.get(b'properties') or {}
     meta = props.get(b'hg:meta')
-    if not meta and props.get(b'local:commits'):
-        commit = sorted(props[b'local:commits'].values())[0]
-        meta = {}
-        if b'author' in commit and b'authorEmail' in commit:
-            meta[b'user'] = b'%s <%s>' % (commit[b'author'],
-                                          commit[b'authorEmail'])
-        if b'time' in commit:
-            meta[b'date'] = b'%d 0' % commit[b'time']
-        if b'branch' in commit:
-            meta[b'branch'] = commit[b'branch']
-        node = commit.get(b'commit', commit.get(b'rev'))
-        if node:
-            meta[b'node'] = node
-        if len(commit.get(b'parents', ())) >= 1:
-            meta[b'parent'] = commit[b'parents'][0]
-    return meta or {}
+    if not meta:
+        if props.get(b'local:commits'):
+            commit = sorted(props[b'local:commits'].values())[0]
+            meta = {}
+            if b'author' in commit and b'authorEmail' in commit:
+                meta[b'user'] = b'%s <%s>' % (commit[b'author'],
+                                              commit[b'authorEmail'])
+            if b'time' in commit:
+                meta[b'date'] = b'%d 0' % commit[b'time']
+            if b'branch' in commit:
+                meta[b'branch'] = commit[b'branch']
+            node = commit.get(b'commit', commit.get(b'rev'))
+            if node:
+                meta[b'node'] = node
+            if len(commit.get(b'parents', ())) >= 1:
+                meta[b'parent'] = commit[b'parents'][0]
+        else:
+            meta = {}
+    if b'date' not in meta and b'dateCreated' in diff:
+        meta[b'date'] = b'%s 0' % diff[b'dateCreated']
+    if b'branch' not in meta and diff.get(b'branch'):
+        meta[b'branch'] = diff[b'branch']
+    if b'parent' not in meta and diff.get(b'sourceControlBaseRevision'):
+        meta[b'parent'] = diff[b'sourceControlBaseRevision']
+    return meta
 
 def readpatch(repo, drevs, write):
     """generate plain-text patch readable by 'hg import'
--- a/tests/test-phabricator.t	Sat Apr 20 16:11:23 2019 +0100
+++ b/tests/test-phabricator.t	Mon Apr 22 18:55:26 2019 +0100
@@ -32,6 +32,8 @@
 Basic phabread:
   $ hg phabread --test-vcr "$VCR/phabread-4480.json" D4480 | head
   # HG changeset patch
+  # Date 1536771503 0
+  # Parent  a5de21c9e3703f8e8eb064bd7d893ff2f703c66a
   exchangev2: start to implement pull with wire protocol v2
   
   Wire protocol version 2 will take a substantially different
@@ -39,8 +41,6 @@
   is concerned).
   
   This commit establishes a new exchangev2 module for holding
-  code related to exchange using wire protocol v2. I could have
-  added things to the existing exchange module. But it is already
 
 phabupdate with an accept:
   $ hg phabupdate --accept D4564 \