Git commit from python



我想用python写一个模块(这是学习项目)来增强我的git体验。是否有用于各种git命令的python模块?至少基本的(提交/diff/日志/添加)?

我看到了giitpython,但我找不到(新)提交的支持;它更像是一个回购浏览框架,而不是一个完整的GIT接口。(还是我错过了什么?)

另外,如果有一个python模块,这是可取的,还是从python代码执行shell命令?

在GitPython中,您可以从索引对象创建提交。

在libgit2中,您可以从存储库对象创建提交。

你可能还想看看这个问题:

  • Python Git模块经验?

我认为一些python源代码可以帮助像我这样的初学者,而不是浪费宝贵的时间去挖掘文档。

所有提交将转到新创建的origin master

在这里:

from git import Repo
import os
path = '/your/path/here'
if not os.path.exists(path):
    os.makedirs(path)
os.chdir(path)
repo = Repo.init(path).git
index = Repo.init(path).index
for x in xrange (1,10):
    fname = 'filename' + str(x)
    f.open(fname, 'wb+')
    f.write()
    f.close()
    repo.add(fname)
index.commit("initial commit")

Git被设计成由"管道"one_answers"瓷器"组成。管道组件构成了基础的低级系统:管理对象、存储库、远程等等。另一方面,瓷器意味着使用管道的更方便用户的高级工具。

历史上,只有最基本/性能关键的部分(主要是管道)是用C实现的,其余的使用shell/perl脚本。为了便于移植,越来越多的代码用c语言重写。

在这样的背景下,我建议你只使用对git可执行文件的系统调用来进行python包装。把你的代码看作是Git瓷器的一部分。与使用专用库相比:

PRO

  • 不需要学习API—使用您熟悉的git命令
  • 全套工具——可以使用瓷器,不局限于低级功能

  • 需要解析git调用的命令行输出
  • 可能比较慢

这可以用GitPython完成

安装:

pip install GitPython

并像这样使用:

from git.repo import Repo
repo = Repo('/path/to/repository')
repo.index.add(['some_file'])
repo.index.commit('commit from python')
origin = repo.remotes[0]
origin.push()

最新更新