D7043: phabricator: add the phabchange data structure
Kwan (Ian Moody)
phabricator at mercurial-scm.org
Thu Oct 10 21:52:12 UTC 2019
Kwan created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
These store data about individual files in a commit.
REPOSITORY
rHG Mercurial
BRANCH
default
REVISION DETAIL
https://phab.mercurial-scm.org/D7043
AFFECTED FILES
hgext/phabricator.py
CHANGE DETAILS
diff --git a/hgext/phabricator.py b/hgext/phabricator.py
--- a/hgext/phabricator.py
+++ b/hgext/phabricator.py
@@ -481,6 +481,47 @@
delLines = attr.ib(default=0)
+ at attr.s
+class phabchange(object):
+ """Represents a Differential change, owns Differential hunks and owned by a
+ Differential diff. Each one represents one file in a diff.
+ """
+
+ currentPath = attr.ib(default=None)
+ oldPath = attr.ib(default=None)
+ awayPaths = attr.ib(default=attr.Factory(list))
+ metadata = attr.ib(default=attr.Factory(dict))
+ oldProperties = attr.ib(default=attr.Factory(dict))
+ newProperties = attr.ib(default=attr.Factory(dict))
+ type = attr.ib(default=DiffChangeType.CHANGE)
+ fileType = attr.ib(default=DiffFileType.TEXT)
+ commitHash = attr.ib(default=None)
+ addLines = attr.ib(default=0)
+ delLines = attr.ib(default=0)
+ hunks = attr.ib(default=attr.Factory(list))
+
+ def copynewmetadatatoold(self):
+ for key in list(self.metadata.keys()):
+ newkey = key.replace(b'new:', b'old:')
+ self.metadata[newkey] = self.metadata[key]
+
+ def addoldmode(self, value):
+ self.oldProperties[b'unix:filemode'] = value
+
+ def addnewmode(self, value):
+ self.newProperties[b'unix:filemode'] = value
+
+ def addhunk(self, hunk):
+ if not isinstance(hunk, phabhunk):
+ raise error.Abort(b'phabchange.addhunk only takes phabhunks')
+ self.hunks.append(hunk)
+ # It's useful to include these stats since the Phab web UI shows them,
+ # and uses them to estimate how large a change a Revision is. Also used
+ # in email subjects for the [+++--] bit.
+ self.addLines += hunk.addLines
+ self.delLines += hunk.delLines
+
+
def creatediff(ctx):
"""create a Differential Diff"""
repo = ctx.repo()
To: Kwan, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list