GitPython是一种与python中的git交互的方式。我试图从这个模块访问基本的git命令(例如git commit -m "message"
),根据this应该通过Git模块访问它。以下是我到目前为止尝试使用这些命令的方法:
>>> import git
>>> foo = git.Git("~/git/GitPython")
>>> bar = "git commit -m 'message'"
>>> beef = git.Git.execute(foo,bar)
这会显示一条错误消息,指出没有此类文件或目录。我还尝试了以下作为我的git目录的路径:
~/git/GitPython/.git
/Users/bacon/git/gitclient/
唯一的另一个选择是命令错误,所以我试过:
commit -m "message"
也是,但仍然“没有这样的文件或目录”。
我需要做些什么才能使这些git命令正常工作?
答案 0 :(得分:12)
我还没有尝试过验证,但似乎git.Git.execute需要一个命令行参数列表(如果你给它一个字符串,它会寻找一个完全匹配字符串,空格和一切的可执行文件 - 哪个自然不会被发现),所以我认为这样的事情会起作用:
import git
import os, os.path
g = git.Git(os.path.expanduser("~/git/GitPython"))
result = g.execute(["git", "commit", "-m", "'message'"])
其他变化:
除了手动运行commit命令之外,可能有更好的方法(我只是没有注意到任何快速查看源代码)所以我建议确保在这样做之前没有更高级别的方式
答案 1 :(得分:0)
在教程中它说......
The first step is to create a ``Repo`` object to represent your repository.
>>> from git import *
>>> repo = Repo("/Users/mtrier/Development/git-python")
我没看到你的回购。
我正在查看GitPython的doc目录中名为tutorial.rst的文件。
答案 2 :(得分:0)
一般来说,〜扩展是由shell完成的,不是文件系统的一个特性,所以你不应该期望它能够工作。
os.path.expanduser可以为你应用扩展,但一般来说你最好写出完整的路径(从那时起,无论谁运行它,脚本都可以工作,只要他们有权访问你的文件)。
我怀疑你想要:
'/Users/bacon/git/GitPython'