Помогите мне с расширением mercurial exportfiles - PullRequest
3 голосов
/ 18 июля 2011

Я пытаюсь использовать exportfiles расширение для Mercurial, но я получаю эту ошибку:

c:\xampp\htdocs\dev>hg exportfiles -r 1 /tmp/export
** unknown exception encountered, please report by visiting
**  http://mercurial.selenic.com/wiki/BugTracker
** Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)]
** Mercurial Distributed SCM (version 1.9+10-e9264b45237d)
** Extensions loaded: exportfiles
Traceback (most recent call last):
  File "hg", line 42, in <module>
  File "mercurial\dispatch.pyo", line 27, in run
  File "mercurial\dispatch.pyo", line 64, in dispatch
  File "mercurial\dispatch.pyo", line 87, in _runcatch
  File "mercurial\dispatch.pyo", line 675, in _dispatch
  File "mercurial\dispatch.pyo", line 454, in runcommand
  File "mercurial\dispatch.pyo", line 729, in _runcommand
  File "mercurial\dispatch.pyo", line 683, in checkargs
  File "mercurial\dispatch.pyo", line 672, in <lambda>
  File "mercurial\util.pyo", line 385, in check
  File "C:\Users\Sasa/exportfiles.py", line 39, in exportfiles
    rng = cmdutil.revrange(repo, opts['rev'])
AttributeError: 'module' object has no attribute 'revrange'

Я использую TortiseHG 2.1.1 для Windows 32-bit сMercurial 1.9 + 10

Не могли бы вы помочь мне решить эту проблему и использовать расширение exportfiles?

Заранее спасибо!

Ответы [ 2 ]

5 голосов
/ 18 июля 2011

API Mercurial изменился после версии 1.8.

Различные функции были перемещены из cmdutil.py в scmutil.py, включая revrange / revsingle / revpair и match / matchall / matchfiles

Если это источник используемого вами расширения, строка 11 должна быть

from mercurial import util, scmutil

и строка 39 должна быть

rng = scmutil.revrange(repo, opts['rev'])
1 голос
/ 18 июля 2011

Возможно, что внутренности Mercurial немного изменились, и расширение необходимо обновить, однако я не совсем в том, что не так. cmdutil, похоже, имеет метод revrange. Примечание: место, где я видел источник для cmdutil, очевидно, было устаревшей вилкой.

Однако до тех пор, пока кто-то не внесет исправление в расширение, существует обходной путь, по крайней мере, для получения списка добавленных или измененных файлов. Вы можете преобразовать вывод или передать его в свой собственный скрипт, чтобы получить правильные скопированные файлы:

hg status --rev 100:110 --added --modified

Здесь перечислены файлы, добавленные или измененные от ревизии 100 до ревизии 110 (вы не можете использовать -r в качестве укороченного переключателя --rev, это сокращение от --removed). Выход имеет M или A перед каждым относительным путем.

...