Mercurial > public > mercurial-scm > hg
comparison hgext/phabricator.py @ 43262:af067d29b19e
phabricator: switch to the creatediff endpoint
This lets the extension submit binary files, as well as set branch info so that
it is exposed in the Phabricator interface.
Differential Revision: https://phab.mercurial-scm.org/D7053
author | Ian Moody <moz-ian@perix.co.uk> |
---|---|
date | Sun, 06 Oct 2019 18:23:06 +0100 |
parents | f5aa4a53acd1 |
children | 06a33a501aa2 |
comparison
equal
deleted
inserted
replaced
43261:f5aa4a53acd1 | 43262:af067d29b19e |
---|---|
798 | 798 |
799 def creatediff(ctx): | 799 def creatediff(ctx): |
800 """create a Differential Diff""" | 800 """create a Differential Diff""" |
801 repo = ctx.repo() | 801 repo = ctx.repo() |
802 repophid = getrepophid(repo) | 802 repophid = getrepophid(repo) |
803 # Create a "Differential Diff" via "differential.createrawdiff" API | 803 # Create a "Differential Diff" via "differential.creatediff" API |
804 params = {b'diff': getdiff(ctx, mdiff.diffopts(git=True, context=32767))} | 804 pdiff = phabdiff( |
805 sourceControlBaseRevision=b'%s' % ctx.p1().hex(), | |
806 branch=b'%s' % ctx.branch(), | |
807 ) | |
808 modified, added, removed, _d, _u, _i, _c = ctx.p1().status(ctx) | |
809 # addadded will remove moved files from removed, so addremoved won't get | |
810 # them | |
811 addadded(pdiff, ctx, added, removed) | |
812 addmodified(pdiff, ctx, modified) | |
813 addremoved(pdiff, ctx, removed) | |
805 if repophid: | 814 if repophid: |
806 params[b'repositoryPHID'] = repophid | 815 pdiff.repositoryPHID = repophid |
807 diff = callconduit(repo.ui, b'differential.createrawdiff', params) | 816 diff = callconduit( |
817 repo.ui, | |
818 b'differential.creatediff', | |
819 pycompat.byteskwargs(attr.asdict(pdiff)), | |
820 ) | |
808 if not diff: | 821 if not diff: |
809 raise error.Abort(_(b'cannot create diff for %s') % ctx) | 822 raise error.Abort(_(b'cannot create diff for %s') % ctx) |
810 return diff | 823 return diff |
811 | 824 |
812 | 825 |
813 def writediffproperties(ctx, diff): | 826 def writediffproperties(ctx, diff): |
814 """write metadata to diff so patches could be applied losslessly""" | 827 """write metadata to diff so patches could be applied losslessly""" |
828 # creatediff returns with a diffid but query returns with an id | |
829 diffid = diff.get(b'diffid', diff.get(b'id')) | |
815 params = { | 830 params = { |
816 b'diff_id': diff[b'id'], | 831 b'diff_id': diffid, |
817 b'name': b'hg:meta', | 832 b'name': b'hg:meta', |
818 b'data': templatefilters.json( | 833 b'data': templatefilters.json( |
819 { | 834 { |
820 b'user': ctx.user(), | 835 b'user': ctx.user(), |
821 b'date': b'%d %d' % ctx.date(), | 836 b'date': b'%d %d' % ctx.date(), |
826 ), | 841 ), |
827 } | 842 } |
828 callconduit(ctx.repo().ui, b'differential.setdiffproperty', params) | 843 callconduit(ctx.repo().ui, b'differential.setdiffproperty', params) |
829 | 844 |
830 params = { | 845 params = { |
831 b'diff_id': diff[b'id'], | 846 b'diff_id': diffid, |
832 b'name': b'local:commits', | 847 b'name': b'local:commits', |
833 b'data': templatefilters.json( | 848 b'data': templatefilters.json( |
834 { | 849 { |
835 ctx.hex(): { | 850 ctx.hex(): { |
836 b'author': stringutil.person(ctx.user()), | 851 b'author': stringutil.person(ctx.user()), |