【问题标题】:Help me with mercurial extension exportfiles帮我处理 mercurial 扩展导出文件
【发布时间】:2011-07-18 14:51:50
【问题描述】:

我正在尝试为 mercurial 使用 exportfiles 扩展名,但出现此错误:

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 for Windows 32-bit 和 Mercurial 1.9+10

您能帮我解决这个问题并使用 exportfiles 扩展名吗?

提前致谢!

【问题讨论】:

    标签: python mercurial tortoisehg


    【解决方案1】:

    Mercurial's API changed after version 1.8.

    各种功能已从 cmdutil.py 移至 scmutil.py, 包括 revrange/revsingle/revpair 和 match/matchall/matchfiles

    假设 this 是您正在使用的扩展程序的来源,第 11 行应该是

    from mercurial import util, scmutil
    

    第 39 行应该是

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

    【讨论】:

    • 谢谢!现在工作正常。我在 repo 上创建了 pull request,并希望作者能尽快接受它。
    【解决方案2】:

    Mercurial 的内部结构可能发生了一些变化,并且扩展程序需要更新,但我并不完全有什么问题。 cmdutil 似乎确实有一个revrange 方法。 注意:我看到cmdutil 来源的地方显然是一个过时的fork。

    但是,在有人对扩展进行修复之前,至少有一种解决方法可以获取添加或修改的文件列表。您可以转换输出或将其提供给您自己的脚本,以便复制正确的文件:

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

    这列出了从修订版 100 到修订版 110 添加或修改的文件(您不能使用 -r 作为 --rev 的缩短开关,它是 --removed 的缩写)。输出在每个相对路径之前都有一个MA

    【讨论】:

    • 我几乎肯定你的假设是正确的。 Mercurial 1.9 与以前的 1.8.x 版本相比有很多 API 流失,Mercurial 的人甚至 posted a note when releasing [TortoiseHg 2.1 对此也有意见。如果扩展尚未更新,我预计问题与此有关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多