Sphinx - генерирует автоматические ссылки на билеты Trac и наборы изменений - PullRequest
5 голосов
/ 19 января 2010

Is Sphinx , есть ли способ автоматически связать текст, например #112 или r1023, с соответствующими билетами / наборами изменений в Trac ?

Например:

#112  -> http://mytracsite/tickets/112
r1023 -> http://mytracsite/changeset/1023

См. TracLinks для дополнительных примеров.

Ответы [ 2 ]

9 голосов
/ 21 января 2010

Если вы поместите это в свой config.py


trac_url = 'http://mytratsite/'

from docutils import nodes, utils
from docutils.parsers.rst import roles
import urllib

def trac_role(role, rawtext, text, lineno, inliner, options={}, content=[]):
  ref = trac_url + '/intertrac/' + urllib.quote(text, safe='')
  node = nodes.reference(rawtext, utils.unescape(text), refuri=ref, **options)
  return [node],[]

roles.register_canonical_role('trac', trac_role)

Тогда вы можете использовать :trac:`#123` и :trac:`r1023` в ваших документах.

Это, пожалуй, самый простой способ сделать быстрые ссылки на трак-сайт. Он автоматически работает для всех видов TracLinks, потому что он использует механизм intertrac для ссылок.

5 голосов
/ 11 декабря 2011

Sphinx 1.0 теперь поддерживает внешние ссылки с использованием расширения extlinks.Используя настраиваемое имя роли (например, «проблема»), вы можете написать свои ссылки, например:

:issue:`123`

, и они будут преобразованы в http://mytracsite/123.

...