Mercurial > public > mercurial-scm > hg
comparison contrib/phabricator.py @ 35626:a0d33f4ddff9
phabricator: use named group for parsing differential reviews lines
Differential Revision: https://phab.mercurial-scm.org/D1801
author | Tom Prince <mozilla@hocat.ca> |
---|---|
date | Sun, 14 Jan 2018 11:24:43 -0800 |
parents | 8b659b7388c0 |
children | f18ba40d792f |
comparison
equal
deleted
inserted
replaced
35625:390f860228ba | 35626:a0d33f4ddff9 |
---|---|
164 repo.ui.setconfig('phabricator', 'repophid', repophid) | 164 repo.ui.setconfig('phabricator', 'repophid', repophid) |
165 return repophid | 165 return repophid |
166 | 166 |
167 _differentialrevisiontagre = re.compile('\AD([1-9][0-9]*)\Z') | 167 _differentialrevisiontagre = re.compile('\AD([1-9][0-9]*)\Z') |
168 _differentialrevisiondescre = re.compile( | 168 _differentialrevisiondescre = re.compile( |
169 '^Differential Revision:\s*(?:.*)D([1-9][0-9]*)$', re.M) | 169 '^Differential Revision:\s*(?P<url>(?:.*)D(?P<id>[1-9][0-9]*))$', re.M) |
170 | 170 |
171 def getoldnodedrevmap(repo, nodelist): | 171 def getoldnodedrevmap(repo, nodelist): |
172 """find previous nodes that has been sent to Phabricator | 172 """find previous nodes that has been sent to Phabricator |
173 | 173 |
174 return {node: (oldnode, Differential diff, Differential Revision ID)} | 174 return {node: (oldnode, Differential diff, Differential Revision ID)} |
205 continue | 205 continue |
206 | 206 |
207 # Check commit message | 207 # Check commit message |
208 m = _differentialrevisiondescre.search(ctx.description()) | 208 m = _differentialrevisiondescre.search(ctx.description()) |
209 if m: | 209 if m: |
210 toconfirm[node] = (1, set(precnodes), int(m.group(1))) | 210 toconfirm[node] = (1, set(precnodes), int(m.group('id'))) |
211 | 211 |
212 # Double check if tags are genuine by collecting all old nodes from | 212 # Double check if tags are genuine by collecting all old nodes from |
213 # Phabricator, and expect precursors overlap with it. | 213 # Phabricator, and expect precursors overlap with it. |
214 if toconfirm: | 214 if toconfirm: |
215 drevs = [drev for force, precs, drev in toconfirm.values()] | 215 drevs = [drev for force, precs, drev in toconfirm.values()] |
440 action = 'created' | 440 action = 'created' |
441 | 441 |
442 # Create a local tag to note the association, if commit message | 442 # Create a local tag to note the association, if commit message |
443 # does not have it already | 443 # does not have it already |
444 m = _differentialrevisiondescre.search(ctx.description()) | 444 m = _differentialrevisiondescre.search(ctx.description()) |
445 if not m or int(m.group(1)) != newrevid: | 445 if not m or int(m.group('id')) != newrevid: |
446 tagname = 'D%d' % newrevid | 446 tagname = 'D%d' % newrevid |
447 tags.tag(repo, tagname, ctx.node(), message=None, user=None, | 447 tags.tag(repo, tagname, ctx.node(), message=None, user=None, |
448 date=None, local=True) | 448 date=None, local=True) |
449 else: | 449 else: |
450 # Nothing changed. But still set "newrevid" so the next revision | 450 # Nothing changed. But still set "newrevid" so the next revision |