【发布时间】:2010-06-27 17:04:41
【问题描述】:
我正在寻找可用于在本地存储库中更新和提交更改的 Git 客户端的 Ruby 或 Python 实现。
如果库根本不使用 shell 命令,而是将所有内容保存在“纯代码”中,我更喜欢。
有吗?
提前谢谢你。
【问题讨论】:
我正在寻找可用于在本地存储库中更新和提交更改的 Git 客户端的 Ruby 或 Python 实现。
如果库根本不使用 shell 命令,而是将所有内容保存在“纯代码”中,我更喜欢。
有吗?
提前谢谢你。
【问题讨论】:
还有Dulwich,它是 Git 文件格式和协议的 Python 实现。
【讨论】:
Grit 让您可以通过 Ruby 对 Git 存储库进行面向对象的读/写访问。
require 'grit'
include Grit
repo = Repo.new("/Users/tom/dev/grit")
repo.commits
# => [#<Grit::Commit "e80bbd2ce67651aa18e57fb0b43618ad4baf7750">,
#<Grit::Commit "91169e1f5fa4de2eaea3f176461f5dc784796769">,
#<Grit::Commit "038af8c329ef7c1bae4568b98bd5c58510465493">,
#<Grit::Commit "40d3057d09a7a4d61059bca9dca5ae698de58cbe">,
#<Grit::Commit "4ea50f4754937bf19461af58ce3b3d24c77311d9">]
...
【讨论】:
您可以查看ruby-git gem。
【讨论】:
现在有 libgit2:一个 C 库 sponsored by Github 和 many bindings,包括 Ruby 和 Python。
【讨论】:
GitPython 有一个类似于 Grit 的面向对象的 API:
>>> #$ pip install GitPython
>>> import git
>>> repo = git.Repo('.')
>>> repo.git_dir
'/home/hobs/src/twip/.git'
>>> repo.bare
False
>>> repo.untracked_files
[u'twip/scripts.bak/__init__.py',
u'twip/scripts.bak/cat_tweets.py',
u'twip/scripts.bak/clean.py',
u'twip/scripts.bak/explore.py',
u'twip/scripts.bak/generate.py',
u'twip/scripts.bak/plot_globe.py',
u'twip/scripts.bak/skeleton.py']
>>> repo.head.ref
<git.Head "refs/heads/master">
>>> repo.tags
[<git.TagReference "refs/tags/0.0.1">,
<git.TagReference "refs/tags/0.0.2">,
<git.TagReference "refs/tags/0.0.3">]
【讨论】:
dulwich,这样我就不会因为依赖复杂性而污染我的模块。