2

我最近使用执行 git 命令的 python 做了一个 git 命令,subproces.Popen所以我正在争论是否要利用gitPython模块?如果gitpython使用模块有什么不同吗?

4

3 回答 3

2

使用 subprocess 模块更容易开始工作。让 gitPython 工作似乎需要更多时间。根据您的项目,使用子流程可能更容易。如果您正在考虑采用子流程路线,那么 sh 也值得一试。http://amoffat.github.io/sh/ sh 允许您像调用函数一样调用程序。另外,您是否查看过https://github.com/FriendCode/gittle - 如果您只是想自动化 Git 命令,那可能会很好。

前任:

import sh
git = sh.git.bake(_cwd='/home/me/repodir')
print git.status()
# checkout and track a remote branch
print git.checkout('-b', 'somebranch')
# add a file
print git.add('somefile')
# commit
print git.commit(m='my commit message')
# now we are one commit ahead
print git.status()

更多信息:Python Git 模块体验?

于 2014-03-14T15:49:04.137 回答
2

对我来说,GitPython 有很多优点。在我看来,最重要的是命令的结果是 Python 对象,因此您执行并接收具有类型属性和方法的对象。面对意外情况,这可以为您提供更好的结果,例如 - 没有遥控器,分支名称与您想象的不同等。

repo = git.Repo('/home/user/my_project')
print(repo.branches)

从上面的例子可以看出,您可以迭代远程、分支等命令的结果。

for branch in repo.branches:
    print(branch)

使用原始命令行,这些事情很快就会变得非常麻烦。

而且,我认为 GitPython 对 git 功能的支持比 gittle 更完整,例如子模块支持。

于 2015-06-04T13:25:55.777 回答
1

IMO 这是通用问题的一个特定版本,“我想要的东西已经存在,我应该自己从头开始写一遍吗?” 答案几乎总是否定的*。

我还要说,对于在写这个问题时(即在 2015 年 4 月 1.0.0 版本之前)看过 GitPython 的任何人,你应该再看一遍,该项目最近取得了很大进展。

GitPython 是:

  • 一个开源的社区项目
  • 一个 Pythonic 的 git 接口
  • 经过自动化单元测试的良好测试
  • 被数百或数千人使用,这意味着比您自己编写的代码更快地识别错误
  • 由真正懂 git的人维护
  • 由您以外的其他人编写,因此您可以专注于您真正想git做什么
  • 非常擅长处理拉取请求,所以如果缺少某些东西并且您需要,欢迎您添加它
  • 在 BSD 许可下获得许可,因此如果您的项目是针对非开源友好型公司的,那么您不必担心 GPL 或更激进的 copyleft 许可带来的问题

* 是的,有一些理由让你自己写东西是必要的,无论是法律还是办公室政治,或者仅仅是NIH 综合症。我会说所有这些都是边缘情况。

于 2015-06-05T18:31:54.543 回答