请帮我解决关于Mercurial扩展exportfiles的问题

3 投票
2 回答
898 浏览
提问于 2025-04-16 21:46

我正在尝试使用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'

我在Windows 32位上使用的是TortiseHG 2.1.1,Mercurial版本是1.9+10

请问你能帮我解决这个问题,让我能使用exportfiles扩展吗?

提前谢谢你!

2 个回答

1

可能是因为Mercurial内部的结构有些变化,所以这个扩展需要更新,不过我也不太确定具体出什么问题了。cmdutil 似乎确实有一个 revrange 方法。 注意:我看到的 cmdutil 的源代码显然是一个过时的版本。

不过,在有人提供扩展的修复之前,至少有一个方法可以让你获取到添加或修改的文件列表。你可以把输出结果进行转换,或者把它传给你自己的脚本,这样就能得到正确的文件复制:

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

这个命令会列出从版本100到版本110之间添加或修改的文件(注意,-r 不能用作 --rev 的简写,它其实是 --removed 的缩写)。输出结果在每个相对路径前面会有一个 MA,分别表示修改或添加。

5

Mercurial在1.8版本后,API发生了变化。

一些功能被移到了另一个文件里,比如revrange、revsingle、revpair,还有match、matchall、matchfiles这些。

假设这个链接是你正在使用的扩展的来源,那么第11行应该是

from mercurial import util, scmutil

而第39行应该是

rng = scmutil.revrange(repo, opts['rev'])

撰写回答