Mercurial > public > mercurial-scm > hg
comparison hgext/phabricator.py @ 43184:99ee4afd352f
phabricator: add the phabchange data structure
These store data about individual files in a commit.
Differential Revision: https://phab.mercurial-scm.org/D7043
author | Ian Moody <moz-ian@perix.co.uk> |
---|---|
date | Sun, 06 Oct 2019 14:08:03 +0100 |
parents | 73d4bc60e389 |
children | 75e7628b488f |
comparison
equal
deleted
inserted
replaced
43183:73d4bc60e389 | 43184:99ee4afd352f |
---|---|
477 newLength = attr.ib(default=0) # camelcase-required | 477 newLength = attr.ib(default=0) # camelcase-required |
478 corpus = attr.ib(default='') | 478 corpus = attr.ib(default='') |
479 # These get added to the phabchange's equivalents | 479 # These get added to the phabchange's equivalents |
480 addLines = attr.ib(default=0) # camelcase-required | 480 addLines = attr.ib(default=0) # camelcase-required |
481 delLines = attr.ib(default=0) # camelcase-required | 481 delLines = attr.ib(default=0) # camelcase-required |
482 | |
483 | |
484 @attr.s | |
485 class phabchange(object): | |
486 """Represents a Differential change, owns Differential hunks and owned by a | |
487 Differential diff. Each one represents one file in a diff. | |
488 """ | |
489 | |
490 currentPath = attr.ib(default=None) # camelcase-required | |
491 oldPath = attr.ib(default=None) # camelcase-required | |
492 awayPaths = attr.ib(default=attr.Factory(list)) # camelcase-required | |
493 metadata = attr.ib(default=attr.Factory(dict)) | |
494 oldProperties = attr.ib(default=attr.Factory(dict)) # camelcase-required | |
495 newProperties = attr.ib(default=attr.Factory(dict)) # camelcase-required | |
496 type = attr.ib(default=DiffChangeType.CHANGE) | |
497 fileType = attr.ib(default=DiffFileType.TEXT) # camelcase-required | |
498 commitHash = attr.ib(default=None) # camelcase-required | |
499 addLines = attr.ib(default=0) # camelcase-required | |
500 delLines = attr.ib(default=0) # camelcase-required | |
501 hunks = attr.ib(default=attr.Factory(list)) | |
502 | |
503 def copynewmetadatatoold(self): | |
504 for key in list(self.metadata.keys()): | |
505 newkey = key.replace(b'new:', b'old:') | |
506 self.metadata[newkey] = self.metadata[key] | |
507 | |
508 def addoldmode(self, value): | |
509 self.oldProperties[b'unix:filemode'] = value | |
510 | |
511 def addnewmode(self, value): | |
512 self.newProperties[b'unix:filemode'] = value | |
513 | |
514 def addhunk(self, hunk): | |
515 if not isinstance(hunk, phabhunk): | |
516 raise error.Abort(b'phabchange.addhunk only takes phabhunks') | |
517 self.hunks.append(hunk) | |
518 # It's useful to include these stats since the Phab web UI shows them, | |
519 # and uses them to estimate how large a change a Revision is. Also used | |
520 # in email subjects for the [+++--] bit. | |
521 self.addLines += hunk.addLines | |
522 self.delLines += hunk.delLines | |
482 | 523 |
483 | 524 |
484 def creatediff(ctx): | 525 def creatediff(ctx): |
485 """create a Differential Diff""" | 526 """create a Differential Diff""" |
486 repo = ctx.repo() | 527 repo = ctx.repo() |