Git библиотека для Ruby или Python? - PullRequest
7 голосов
/ 27 июня 2010

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

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

Есть ли?

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

Ответы [ 6 ]

9 голосов
/ 27 июня 2010

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

6 голосов
/ 27 июня 2010

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

...
3 голосов
/ 18 августа 2012

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

3 голосов
/ 27 июня 2010

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

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

3 голосов
/ 27 июня 2010

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

0 голосов
/ 26 мая 2016

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">]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...