用于Ruby或Python的Git库?

时间:2010-06-27 17:04:41

标签: python ruby git

我正在寻找Git客户端的Ruby或Python实现,可用于更新和提交本地存储库中的更改。

我更喜欢如果库根本不使用shell命令,而是将所有内容保存在“纯代码”中。

有没有?

提前谢谢。

6 个答案:

答案 0 :(得分:9)

还有Dulwich,Git文件格式和协议的Python实现。

答案 1 :(得分:6)

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">]

...

答案 2 :(得分:3)

您可以查看ruby-git gem

答案 3 :(得分:3)

对于Python,@ RyanWilcox已经提到了Dulwich库。

对于Ruby,遗憾的是没有Git库。有Grit,它在Ruby中实现了Git的一个子集,并包含了一些额外功能的命令行工具,但只支持GitHub需要的Git子集。您可以通过JRuby或IronRuby使用JGitGit#

答案 4 :(得分:3)

现在有libgit2:一个带有sponsored by Github的C库many bindings,包括Ruby和Python。

答案 5 :(得分:0)

GitPython有一个面向对象的API,类似于Grit:

>>> #$ 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">]