phabricator: fallback to reading metadata from diff for phabread
Differential Revision: https://phab.mercurial-scm.org/D6301
--- 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 \