来自python的Git提交

2024-05-15 01:29:51 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

另外,如果有一个python模块来完成这一切,那么这是否更可取,或者从python代码中执行shell命令?


Tags: 模块项目代码git命令框架logadd
3条回答

Git是由“管道”和“瓷器”组成的。管道组件构成基础,低级系统:管理对象、存储库、遥控器等。另一方面,瓷器则意味着使用管道的更方便用户的高级工具。

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

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

专业版

  • 无需学习API——使用熟悉的git命令
  • 完整的工具集——您可以使用瓷器,并且不受低级功能的限制

反向

  • 需要分析来自git调用的命令行输出。
  • 可能会慢一些

在GitPython中,您可以create a commit from an index object

在libgit2中,您create a commit from a repository object

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

我认为一些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")

相关问题 更多 >

    热门问题