mirror of
https://github.com/facebook/sapling.git
synced 2024-10-11 17:27:53 +03:00
afebcb5512
Summary: This revset will be used by jellyfish to set the proper base in sandcastle. Anyway: a public ancestor is a valuable commit information so there should be a template for it. Test Plan: see test Reviewers: #mercurial, quark Reviewed By: quark Subscribers: durham, quark, medson, mjpieters Differential Revision: https://phabricator.intern.facebook.com/D5275811 Tasks: 19186426 Signature: t1:5275811:1497979632:9589491be723daf0b127703a7bc4571f7539bd84
39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
# phabdiff.py
|
|
#
|
|
# Copyright 2013 Facebook, Inc.
|
|
#
|
|
# This software may be used and distributed according to the terms of the
|
|
# GNU General Public License version 2 or any later version.
|
|
|
|
from mercurial import registrar, templatekw
|
|
from mercurial.node import hex
|
|
from phabricator import diffprops
|
|
import re
|
|
|
|
templatekeyword = registrar.templatekeyword()
|
|
|
|
@templatekeyword('phabdiff')
|
|
def showphabdiff(repo, ctx, templ, **args):
|
|
"""String. Return the phabricator diff id for a given hg rev."""
|
|
descr = ctx.description()
|
|
revision = diffprops.parserevfromcommitmsg(descr)
|
|
return 'D' + revision if revision else ''
|
|
|
|
@templatekeyword('tasks')
|
|
def showtasks(**args):
|
|
"""String. Return the tasks associated with given hg rev."""
|
|
tasks = []
|
|
descr = args['ctx'].description()
|
|
match = re.search('(Tasks?|Task ID):(.*)', descr)
|
|
if match:
|
|
tasks = re.findall('\d+', match.group(0))
|
|
return templatekw.showlist('task', tasks, args)
|
|
|
|
@templatekeyword('singlepublicbase')
|
|
def singlepublicbase(repo, ctx, templ, **args):
|
|
"""String. Return the public base commit hash."""
|
|
base = repo.revs('last(::%d - not public())', ctx.rev())
|
|
if len(base):
|
|
return hex(repo[base.first()].node())
|
|
return ""
|