2011-08-19 128 views
6

我想在python(這是學習項目)中編寫一個模塊來增強我的git體驗。是否有各種git命令的python模塊?至少基本的(commit/diff/log/add)?python的Git提交

我看到GitPython但我找不到(新)提交的支持;它更多的是一個回購瀏覽框架,而不是一個完整的GIT界面。 (或者我錯過了什麼?)

此外,如果有一個python模塊的所有這一點,這將是可取的,或從python代碼執行shell命令?

回答

10

在GitPython你create a commit from an index object

在libgit2中你create a commit from a repository object

你也可能想看看這個問題:

+1

+1 libgit2。 –

+0

非常感謝「git python體驗」鏈接。我可以根據這個決定做出決定。 – Sailesh

+0

你應該記住,(由於日期)這些問題的答案沒有提及基於libgit2 Python綁定,這是有趣的,因爲libgit2庫是用Git倉庫交互的可重入的庫。另外,只需使用子進程模塊來調用git命令(就像@Ferdinand Beyer所建議的那樣)在很多腳本中都可以正常工作,並且可能是您所需要的。 –

9

Git被設計爲由「管道」和「瓷器」組成。管道組件構成基礎,低級系統:管理對象,存儲庫,遠程控制等。另一方面,瓷器意味着更多用戶友好的使用管道的高級工具。在歷史上,只有最基本的/性能關鍵的部分(主要是管道)在C中實現,其餘部分使用shell/perl腳本。更便攜,越來越多的代碼C.

被改寫在這種背景下,我建議只使用系統調用git的可執行文件的Python包裝。把你的代碼看作Git瓷器的一部分。相比於使用專業圖書館:

PRO

  • 不需要學習一個API - 使用git命令你熟悉
  • 一套完整的工具 - 你可以用瓷和不限於低級功能

CONTRA

  • 需要解析來自git調用的命令行輸出。
  • 速度可能會變慢