Patchwork D6301: phabricator: fallback to reading metadata from diff for phabread

login
register
mail settings
Submitter phabricator
Date April 22, 2019, 5:31 p.m.
Message ID <92967f659629d2f311f878a6a11563ab@localhost.localdomain>
Download mbox | patch
Permalink /patch/39795/
State Not Applicable
Headers show

Comments

phabricator - April 22, 2019, 5:31 p.m.
Kwan updated this revision to Diff 14890.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D6301?vs=14889&id=14890

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

AFFECTED FILES
  hgext/phabricator.py
  tests/test-phabricator.t

CHANGE DETAILS




To: Kwan, #hg-reviewers
Cc: mercurial-devel

Patch

diff --git a/tests/test-phabricator.t b/tests/test-phabricator.t
--- a/tests/test-phabricator.t
+++ b/tests/test-phabricator.t
@@ -32,15 +32,15 @@ 
 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
   approach to exchange than version 1 (at least as far as pulling
   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 \
diff --git a/hgext/phabricator.py b/hgext/phabricator.py
--- a/hgext/phabricator.py
+++ b/hgext/phabricator.py
@@ -905,22 +905,32 @@ 
     """
     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 b'branch' in diff and
+            diff[b'branch'] is not None):
+        meta[b'branch'] = diff[b'branch']
+    if b'parent' not in meta and b'sourceControlBaseRevision' in diff:
+        meta[b'parent'] = diff[b'sourceControlBaseRevision']
+    return meta
 
 def readpatch(repo, drevs, write):
     """generate plain-text patch readable by 'hg import'