我最近使用python执行git命令,使用subproces.Popen
执行git命令,所以我在争论是否利用gitPython
模块?如果使用gitpython
模块会有什么不同吗?
答案 0 :(得分:2)
对我来说,GitPython有很多优点。在我看来,最重要的是命令的结果是Python对象,因此您可以使用类型属性和方法来执行和接收对象。这样可以在面对意外情况时获得更好的结果,例如 - 没有遥控器,分支名称与您的想法不同,等等。
repo = git.Repo('/home/user/my_project')
print(repo.branches)
从上面的例子可以看出,你可以迭代一些命令,比如遥控器,分支。
for branch in repo.branches:
print(branch)
使用原始命令行,这些事情真的很麻烦。
并且,我认为GitPython比gittle更完整地支持git功能,例如:子模块支持。
答案 1 :(得分:1)
使用子进程模块更容易实现。似乎需要更多时间才能让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()
答案 2 :(得分:1)
IMO这是一般问题的一个特定版本,"我想要的东西已经存在,我应该从头开始再写一次吗?"答案几乎总是没有*。
我还要说,对于那个在写这个问题的时候看过GitPython的人(即2015年4月的1.0.0发布之前),你应该再看一遍,这个项目已经做了很多最近的进展。
GitPython是:
*是的,有些理由说明为什么自己写一些东西是必要的,无论他们是合法的还是办公室政治还是NIH syndrome。我说所有这些都是边缘情况。