Вам, вероятно, придется написать небольшой плагин для этого, что-то вроде следующего:
from genshi.builder import tag
from trac.util.datefmt import format_datetime
from trac.util.translation import _
from trac.versioncontrol.api import RepositoryManager
from trac.wiki.api import parse_args
from trac.wiki.macros import WikiMacroBase
class SourceMacro(WikiMacroBase):
def expand_macro(self, formatter, name, content):
args, kwargs = parse_args(content)
path = args[0]
label = kwargs.get('label', path)
rm = RepositoryManager(self.env)
reponame, repos, path = rm.get_repository_by_path(path)
node = repos.get_node(path)
href = formatter.href.browser(reponame or None, path)
return tag(tag.a(label, href=href),
_(' (last committed: %(date)s)',
date=format_datetime(node.last_modified)))
(Для Trac 0,12 или новее обработка ошибок оставлена читателю как страшное упражнение)*
Поместите это в файл с именем source_link.py
в каталоге plugins
вашей среды Trac.Затем вы можете сослаться на ваши файлы с помощью следующего макроса:
[[Source(MyRepository/trunk/subfolder/file.pdf)]]
или, если вам нужна конкретная метка:
[[Source(MyRepository/trunk/subfolder/file.pdf, label=The file to read)]]