2011-08-19 33 views
6

Tôi muốn viết một mô-đun trong python (Đây là dự án học tập) để nâng cao kinh nghiệm git của tôi. Có một mô-đun python cho các lệnh git khác nhau? Ít nhất là những cái cơ bản (commit/diff/log/add)?Git cam kết từ python

Tôi thấy GitPython nhưng tôi không thể tìm thấy hỗ trợ cho (mới) các cam kết; nhiều hơn của một khung duyệt repo hơn là một giao diện GIT hoàn chỉnh. (Hoặc tôi đã bỏ lỡ điều gì đó?)

Ngoài ra, nếu có một mô-đun python cho tất cả điều này, điều đó sẽ thích hợp hơn, hoặc thực hiện các lệnh trình bao từ mã python?

Trả lời

10

Trong GitPython bạn create a commit from an index object.

Trong libgit2 bạn create a commit from a repository object.

Bạn cũng có thể muốn xem xét câu hỏi này:

+1

+1 cho libgit2. –

+0

Cảm ơn nhiều vì liên kết "git python experience". Tôi có thể dựa vào quyết định của mình về điều đó. – Sailesh

+0

Bạn nên nhớ rằng (do ngày) các câu trả lời đó không đề cập đến các ràng buộc Python dựa trên libgit2, điều này rất thú vị vì thư viện libgit2 là thư viện lại để tương tác với kho git. Ngoài ra, chỉ cần sử dụng mô-đun subprocess để gọi các lệnh git (như @Ferdinand Beyer gợi ý) đã làm việc tốt cho tôi trong nhiều kịch bản, và có thể là tất cả những gì bạn cần. –

9

Git được thiết kế để bao gồm "ống nước" và "sứ". Các thành phần hệ thống ống nước tạo thành nền tảng, hệ thống cấp thấp: Quản lý các đối tượng, kho lưu trữ, điều khiển từ xa, v.v. Sứ, mặt khác, có nghĩa là nhiều công cụ cao cấp thân thiện với người dùng sử dụng hệ thống ống nước.

Trong lịch sử, chỉ các phần cơ bản/hiệu suất quan trọng nhất (chủ yếu là hệ thống ống nước) được triển khai trong C, phần còn lại sử dụng shell/perl script. Để di động hơn, ngày càng nhiều mã được viết lại trong C.

Với nền tảng này, tôi khuyên bạn nên chỉ sử dụng các lệnh gọi hệ thống để thực thi git cho gói python của bạn. Hãy xem xét mã của bạn như một phần của sứ của Git. So với sử dụng một thư viện chuyên ngành:

PRO

  • Không cần phải học một API - sử dụng các lệnh git bạn đã quen thuộc với
  • Bộ đầy đủ các công cụ - bạn có thể sử dụng sứ và không bị giới hạn chức năng ở mức độ thấp

CHỐNG

  • Cần phân tích đầu ra dòng lệnh từ các cuộc gọi git.
  • Có thể chậm