2010-06-27 38 views
7

Tôi đang tìm triển khai thực hiện Ruby hoặc Python của trình khách Git có thể được sử dụng để cập nhật và thực hiện các thay đổi trong kho lưu trữ cục bộ.Thư viện Git cho Ruby hoặc Python?

Tôi thích nếu thư viện không sử dụng lệnh shell ở tất cả nhưng giữ mọi thứ trong "mã thuần túy".

Có cái nào không?

Cảm ơn bạn trước.

Trả lời

9

Ngoài ra còn có Dulwich, việc triển khai Python của các định dạng và giao thức tệp Git.

6

Grit cung cấp cho bạn quyền truy cập đọc/ghi theo hướng đối tượng vào kho Git thông qua 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

Bạn có thể xem ruby-git gem.

+0

nào hiện là (tháng 10 năm 2015) các wrapper sử dụng nhiều nhất cho Git trong Ruby. – mliebelt

3

Đối với Python, có thư viện Dulwich mà @RyanWilcox đã đề cập.

Đối với Ruby, không may là không có thư viện Git. Có Grit, thực hiện một tập con của Git trong Ruby và kết thúc tốt đẹp các công cụ dòng lệnh cho một số tính năng bổ sung, nhưng chỉ hỗ trợ tập con của Git mà GitHub cần. Và bạn có thể sử dụng JGit hoặc Git# qua JRuby hoặc IronRuby.

0

GitPython có một API hướng đối tượng tương tự như 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">] 
Các vấn đề liên quan