Я ищу Ruby или Python-реализацию Git-клиента, которую можно использовать для обновления и фиксации изменений в локальном репозитории.

Я предпочитаю, чтобы библиотека вообще не использовала команды оболочки, но держала все в «чистом коде».

Есть ли?

Заранее спасибо.

7
Christoffer 27 Июн 2010 в 21:04

6 ответов

Лучший ответ

Существует также Dulwich, реализация Python для форматов и протоколов файлов Git.

9
RyanWilcox 27 Июн 2010 в 19:16

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">]
0
hobs 26 Май 2016 в 16:54

Теперь есть libgit2: библиотека C , спонсируемая Github с многими привязки, включая Ruby и Python.

3
Michaël Witrant 18 Авг 2012 в 16:35

Для Python есть библиотека Dulwich, о которой @RyanWilcox уже упоминал.

Для Ruby, к сожалению, нет библиотеки Git. Существует Grit, которая реализует подмножество Git в Ruby и включает в себя инструменты командной строки для некоторых дополнительных функции, но поддерживает только ту часть Git, которая нужна GitHub. И вы можете использовать либо JGit, либо Git # через JRuby или IronRuby.

3
Jörg W Mittag 27 Июн 2010 в 19:39

Вы можете проверить гем ruby-git.

3
Eimantas 27 Июн 2010 в 17:10

Grit предоставляет вам объектно-ориентированный доступ на чтение / запись к репозиториям Git через Ruby.

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

...
6
miku 27 Июн 2010 в 17:09