2012-07-07 52 views
1

我正在尝试做一个python脚本来检查我的git本地工作文件夹中的更改,并自动将它们推送到在线回购站。目前只能手动使用git来完成它。我想知道,脚本需要什么来做到这一点,而无需人工干预。如何使用gitpython自动推送回购

我输入我外壳的命令是:

#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有一个解决这个问题的方法,它涉及到制作ssh密钥等等。但我认为GitPython正在做某种方式。我的意思是我们可以通过代码传递用户名/密码,或者与前者通信。那么当我使用GitPython时,我有哪些关于认证的选项?

编辑:有些应用程序实际上会生成ssh密钥,例如, github的windows应用程序。 Windows应用程序如何做到这一点?我的假设是肯定有一些git API ...

+0

通常不建议将密码存储在脚本中。 – soulseekah 2012-07-09 12:46:16

回答

1

如果您使用SSH密钥认证,然后使用ssh-agent加载密钥一次然后您可以继续使用的关键,而无需提供密码所有的时间。

或者,您可以简单地生成一个没有密码的密钥,如果您不关心您的密钥安全。

0

我已经查找了代码以确保没有什么可以为通信定义用户名/密码组合。

这一定是因为ssh没有给你提供密码的能力,它故意要求用户提示。唯一的办法是使用ssh keys进行自动化。

但是,如果你真的想要弯曲你的极限。有非互动SSH通信的开源应用程序,而无需使用ssh keyshttp://sourceforge.net/projects/sshpass/

编译&安装此而直接像ssh://通信协议向这个应用程式,可能工作。但是,我认为你不应该;只要使用钥匙,他们是伟大的=)