我正在尝试创建一个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 ...
答案 0 :(得分:2)
如果您使用SSH密钥进行身份验证,请使用ssh-agent
加载密钥一次,然后您可以继续使用密钥而无需始终提供密码。
或者,如果您不关心密钥安全性,则可以在没有密码的情况下生成密钥。
答案 1 :(得分:0)
我已查找代码以确定,您无法定义用于通信的用户名/密码组合。
这必须是因为ssh
不能事先提供密码,它故意要求用户提示。唯一的方法是使用ssh keys
进行自动化。
然而,如果你真的想弯曲你的极限。在不使用ssh keys
的情况下,有非交互式ssh通信的开源应用:http://sourceforge.net/projects/sshpass/
你编译&安装此程序并将ssh://
之类的通信协议指向此应用程序,可能工作。但是,我不认为你应该这样做;只需使用钥匙,他们很棒=)