如何使用GitPython自动推送到代码库

3
我正在尝试编写一个Python脚本,用于检查我的git本地工作文件夹中的更改,并自动将它们推送到在线仓库。目前只能手动使用git完成此操作。我想知道,为了避免手动干预,这个脚本需要哪些命令。
我在Shell中输入的命令是:
#for checking the status, and determining if there are untracked files
git status

#if there are untracked files...add them
git add .

#add my commit message
git commit -m "7/8/2012 3:25am"

#push it to my online repo
git push origin master

#check if changes came on remote
git diff origin/master

#merge my repo with origin
git merge origin/master

当执行git push命令时,您总是需要输入用户名和密码。我知道git有一种方法可以避免这种情况,涉及到生成ssh密钥等。但是我假设GitPython也有一些方法可以实现此功能。我的意思是我们可以通过代码传递用户名/密码,或者选择前一种方法。那么,在使用GitPython时,关于身份验证,我的选择有哪些选项?
编辑:实际上有一些应用程序可以生成ssh密钥,例如github的windows应用程序。Windows应用程序是如何做到这一点的?我的假设是肯定有一些git api可以实现这个功能...

通常不建议在脚本中存储密码。 - soulseekah
2个回答

2
如果您使用SSH密钥进行身份验证,则可以使用ssh-agent加载您的密钥,只需加载一次即可保持使用该密钥,无需每次提供密码。或者,如果您不关心密钥安全,也可以简单地生成一个没有密码的密钥。

0

我已经查找了代码,确定没有办法定义通信的用户名/密码组合。

这应该就是原因,因为ssh不允许您提前提供密码,而是故意要求用户提示。唯一的方法是使用ssh key进行自动化。

然而,如果您真的想要突破限制。有一个开源应用程序可以实现非交互式的SSH通信,而不使用ssh keyhttp://sourceforge.net/projects/sshpass/

您可以编译和安装它,并将通信协议直接对接到这个应用程序上,它可能会起作用。但是,我认为您不应该这样做;只需使用密钥,它们非常好=)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接