Я делаю много обзоров кода в основном с помощью команды «hg in -p/path/to/repo», и было бы очень приятно, если бы ее вывод можно было просмотреть в некоторая внешняя программа (например, vimdiff). Есть ли способ достичь этого?Просмотр результатов команд Mercurial in/out во внешнем внешнем просмотре
ответ
Мой быстрый и грязный первый ответ был: «См. Extdiff extension, распространяемый с помощью ртути и документированный на их сайте». Это было всего лишь около 15% ответа.
Ближайший ответ, который я видел до сих пор, начинается с расширения, называемого rdiff. rdiff использует «входящий» код и поэтому адресует эту половину вашего вопроса. Это расширение было упомянуто в earlier SO thread, в котором приведен пример сценария bash для реализации rdiff против текущей рабочей копии (в отличие от текущей копии репозитория). Сценарий заканчивается использованием «hg diff», поэтому на него повлияет все, на что у вас установлен extdiff.
rdiff.py всего 146 строк и достаточно понятный, а скрипт bash имеет длину 5 строк. Хотя это не полный ответ на ваш вопрос, я думаю, он указывает путь.
Я задал тот же вопрос в списке адресов ртути и получил interesting suggestions. Лучший один я любил пришел из Мэтт Mackall, который сводится к тому:
1) использовать «рт.ст. входящие --bundle in.hg», чтобы сохранить связку входящих изменений
2) использовать «-R в рт.ст. .hg extdiff», чтобы просмотреть изменения
Хотя это звучит как хорошая идея, к сожалению, я получаю исключение:
[email protected] $ hg -R /tmp/in.bundle extdiff
** unknown exception encountered, details follow
** report bug details to http://www.selenic.com/mercurial/bts
** or [email protected]
** Mercurial Distributed SCM (version 1.1.2)
** Extensions loaded: alias, fetch, extdiff, graphlog, hgk, rdiff
Traceback (most recent call last):
File "/usr/bin/hg", line 20, in <module>
mercurial.dispatch.run()
File "/var/lib/python-support/python2.6/mercurial/dispatch.py", line
20, in run
sys.exit(dispatch(sys.argv[1:]))
File "/var/lib/python-support/python2.6/mercurial/dispatch.py", line
29, in dispatch
return _runcatch(u, args)
File "/var/lib/python-support/python2.6/mercurial/dispatch.py", line
45, in _runcatch
return _dispatch(ui, args)
File "/var/lib/python-support/python2.6/mercurial/dispatch.py", line
367, in _dispatch
ret = _runcommand(ui, options, cmd, d)
File "/var/lib/python-support/python2.6/mercurial/dispatch.py", line
416, in _runcommand
return checkargs()
File "/var/lib/python-support/python2.6/mercurial/dispatch.py", line
376, in checkargs
return cmdfunc()
File "/var/lib/python-support/python2.6/mercurial/dispatch.py", line
361, in <lambda>
d = lambda: util.checksignature(func)(ui, *args, **cmdoptions)
File "/var/lib/python-support/python2.6/mercurial/util.py", line 715, in check
return func(*args, **kwargs)
File "/var/lib/python-support/python2.6/hgext/extdiff.py", line 203,
in extdiff
return dodiff(ui, repo, program, option, pats, opts)
File "/var/lib/python-support/python2.6/hgext/extdiff.py", line 123, in dodiff
node1, node2 = cmdutil.revpair(repo, opts['rev'])
File "/var/lib/python-support/python2.6/mercurial/cmdutil.py", line
123, in revpair
return repo.dirstate.parents()[0], None
File "/var/lib/python-support/python2.6/mercurial/bundlerepo.py",
line 229, in __getattr__
raise AttributeError(name)
AttributeError: dirstate
Я отправил эту ошибку в список рассылки, а также, но не получил никаких ответов до сих пор ...
Пожалуйста, исправьте меня, если я ошибаюсь, но extdiff работает только с вашими местными изменениями. Кажется, он не может использоваться с командами «входящих/исходящих» ... – pachanga
Вы правы - я действительно не читал ваш вопрос. Выполняя некоторые исследования (которые я должен был сделать до того, как я ответил), похоже, что «крючки» могут содержать начало ответа. В настоящее время я читаю http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html с учетом вашего вопроса. Я отредактирую свой ответ, если найду что-то стоящее. –