2011-08-19 71 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调用的命令行输出。
  • 速度可能会变慢