From patchwork Thu Oct 10 21:52:45 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D7049: phabricator: add addremoved and addmodified functions From: phabricator X-Patchwork-Id: 42205 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Thu, 10 Oct 2019 21:52:45 +0000 Kwan created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REVISION SUMMARY These are relatively simple so add them together. As the name indicates, these add phabchange objects for removed and modified files to the phabdiff. REPOSITORY rHG Mercurial BRANCH default REVISION DETAIL https://phab.mercurial-scm.org/D7049 AFFECTED FILES hgext/phabricator.py CHANGE DETAILS To: Kwan, #hg-reviewers Cc: mercurial-devel 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()