Patchwork D7049: phabricator: add addremoved and addmodified functions

login
register
mail settings
Submitter phabricator
Date Oct. 12, 2019, 1:57 a.m.
Message ID <43bebc4a68b4452b4013b8690e0c8975@localhost.localdomain>
Download mbox | patch
Permalink /patch/42250/
State Not Applicable
Headers show

Comments

phabricator - Oct. 12, 2019, 1:57 a.m.
Closed by commit rHGc19b327017b9: phabricator: add addremoved and addmodified functions (authored by Kwan).
This revision was automatically updated to reflect the committed changes.

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D7049?vs=17080&id=17097

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D7049/new/

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

AFFECTED FILES
  hgext/phabricator.py

CHANGE DETAILS




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

Patch

diff --git a/hgext/phabricator.py b/hgext/phabricator.py
--- a/hgext/phabricator.py
+++ b/hgext/phabricator.py
@@ -684,6 +684,44 @@ 
             pchange.fileType = DiffFileType.IMAGE
 
 
+# Copied from mercurial/patch.py
+gitmode = {b'l': b'120000', b'x': b'100755', b'': b'100644'}
+
+
+def addremoved(pdiff, ctx, removed):
+    """add removed files to the phabdiff. Shouldn't include moves"""
+    for fname in removed:
+        pchange = phabchange(
+            currentPath=fname, oldPath=fname, type=DiffChangeType.DELETE
+        )
+        pchange.addoldmode(gitmode[ctx.p1()[fname].flags()])
+        fctx = ctx.p1()[fname]
+        if not fctx.isbinary():
+            maketext(pchange, ctx, fname)
+
+        pdiff.addchange(pchange)
+
+
+def addmodified(pdiff, ctx, modified):
+    """add modified files to the phabdiff"""
+    for fname in modified:
+        fctx = ctx[fname]
+        pchange = phabchange(currentPath=fname, oldPath=fname)
+        filemode = gitmode[ctx[fname].flags()]
+        originalmode = gitmode[ctx.p1()[fname].flags()]
+        if filemode != originalmode:
+            pchange.addoldmode(originalmode)
+            pchange.addnewmode(filemode)
+
+        if fctx.isbinary():
+            makebinary(pchange, fctx)
+            addoldbinary(pchange, fctx, fname)
+        else:
+            maketext(pchange, ctx, fname)
+
+        pdiff.addchange(pchange)
+
+
 def creatediff(ctx):
     """create a Differential Diff"""
     repo = ctx.repo()