【发布时间】:2017-08-07 14:15:29
【问题描述】:
我使用 Python 编写了一个工具来获取 Mercurial 存储库的状态和差异。获取状态很容易,但是当我尝试获取 diff 时出现此错误:AttributeError: 'module' object has no attribute 'configbool'。 这是我的代码和输出:
代码
#!/usr/bin/python
# coding:utf-8
import os
import sys
from mercurial import ui, hg, commands
from mercurial.i18n import gettext as _
path = '~/path_of/repo'
u = ui.ui()
repo = hg.repository(u, path)
status = repo.status()
print("===== status =====")
print(status)
diff = commands.diff(ui, repo)
print("===== diff =====")
print(diff)
输出
===== status =====
(['app/file/file_modified.py'], [], [], [], [], [], [])
Traceback (most recent call last):
File "test.py", line 19, in <module>
diff = commands.diff(ui, repo)
File "/usr/lib/python2.7/dist-packages/mercurial/commands.py", line 2940, in diff
diffopts = patch.diffopts(ui, opts)
File "/usr/lib/python2.7/dist-packages/mercurial/patch.py", line 1557, in diffopts
def get(key, name=None, getter=ui.configbool):
AttributeError: 'module' object has no attribute 'configbool'
zsh: exit 1 python test.py
你有办法用 Python 获得一个 repo 的差异吗?
【问题讨论】:
-
您不应该使用 mercurial 作为库,因为它没有稳定的 API。您可能想改用 python-hglib:mercurial-scm.org/wiki/PythonHglib
-
非常感谢。我能够得到纯文本差异。