comparison hgext/phabricator.py @ 44647:99fa161a883c

phabricator: extract the logic to amend diff properties to a function This will be needed on a separate code path when dealing with folding revisions. And since we know that will involve adding multiple local commmits to the diff properties instead of just one, restructure the logic slightly to allow it. Differential Revision: https://phab.mercurial-scm.org/D8312
author Matt Harbison <matt_harbison@yahoo.com>
date Mon, 16 Mar 2020 14:33:35 -0400
parents 5f9c917e3b50
children 949a87145336
comparison
equal deleted inserted replaced
44646:5f9c917e3b50 44647:99fa161a883c
1166 _(b'unknown username: %s') % b' '.join(sorted(unresolved)) 1166 _(b'unknown username: %s') % b' '.join(sorted(unresolved))
1167 ) 1167 )
1168 return [entry[b'phid'] for entry in data] 1168 return [entry[b'phid'] for entry in data]
1169 1169
1170 1170
1171 def _amend_diff_properties(unfi, drevid, newnodes, diff):
1172 """update the local commit list for the ``diff`` associated with ``drevid``
1173
1174 This is a utility function for the amend phase of ``phabsend``, which
1175 converts failures to warning messages.
1176 """
1177 try:
1178 writediffproperties([unfi[newnode] for newnode in newnodes], diff)
1179 except util.urlerr.urlerror:
1180 # If it fails just warn and keep going, otherwise the DREV
1181 # associations will be lost
1182 unfi.ui.warnnoi18n(b'Failed to update metadata for D%d\n' % drevid)
1183
1184
1171 @vcrcommand( 1185 @vcrcommand(
1172 b'phabsend', 1186 b'phabsend',
1173 [ 1187 [
1174 (b'r', b'rev', [], _(b'revisions to send'), _(b'REV')), 1188 (b'r', b'rev', [], _(b'revisions to send'), _(b'REV')),
1175 (b'', b'amend', True, _(b'update commit messages')), 1189 (b'', b'amend', True, _(b'update commit messages')),
1355 ) 1369 )
1356 1370
1357 newnode = new.commit() 1371 newnode = new.commit()
1358 1372
1359 mapping[old.node()] = [newnode] 1373 mapping[old.node()] = [newnode]
1360 # Update diff property 1374
1361 # If it fails just warn and keep going, otherwise the DREV 1375 _amend_diff_properties(
1362 # associations will be lost 1376 unfi, drevid, [newnode], diffmap[old.node()]
1363 try: 1377 )
1364 writediffproperties(
1365 [unfi[newnode]], diffmap[old.node()]
1366 )
1367 except util.urlerr.urlerror:
1368 ui.warnnoi18n(
1369 b'Failed to update metadata for D%d\n' % drevid
1370 )
1371 # Remove local tags since it's no longer necessary 1378 # Remove local tags since it's no longer necessary
1372 tagname = b'D%d' % drevid 1379 tagname = b'D%d' % drevid
1373 if tagname in repo.tags(): 1380 if tagname in repo.tags():
1374 tags.tag( 1381 tags.tag(
1375 repo, 1382 repo,