Git从python提交

Sai*_*esh 11 python git

我想在python中编写一个模块(这是学习项目)来增强我的git体验.有各种git命令的python模块吗?至少基本的(commit/diff/log/add)?

我看到了GitPython,但我找不到对(新)提交的支持; 它更像是一个repo浏览框架,而不是一个完整的GIT界面.(或者我错过了什么?)

另外,如果有一个python模块用于所有这些,那会更好,还是从python代码执行shell命令?

Mar*_*air 14

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

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

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


Fer*_*yer 10

Git的设计包括"管道"和"瓷器".管道组件构成了基础,低级系统:管理对象,存储库,远程控制等.另一方面,瓷器意味着使用管道的更加用户友好的高级工具.

从历史上看,只有最基本/性能关键的部分(主要是管道)在C中实现,其余部分使用shell/perl脚本.为了更加可移植,越来越多的代码在C中被重写.

有了这个背景,我建议只使用git可执行文件的系统调用来进行python包装.将您的代码视为Git瓷器的一部分.与使用专业库相比:

PRO

  • 无需学习API - 使用git您熟悉的命令
  • 完整的工具集 - 您可以使用瓷器,不仅限于低级功能

魂斗罗

  • 需要解析来自git调用的命令行输出.
  • 可能会慢一点


im_*_*ous 5

我认为某些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")
Run Code Online (Sandbox Code Playgroud)