git通过python subprocess.Popen()进行身份验证

时间:2015-08-03 11:21:05

标签: python git github ssh subprocess

我正在尝试将git与python subprocess.Popen()

一起使用

到目前为止,这是我的代码

import subprocess

gitPath = 'C:/path/to/git/cmd.exe'
repoPath = 'C:/path/to/my/repo'
repoUrl = 'https://www.github.com/login/repo'

#list to set directory and working tree
dirList = ['--git-dir='+repoPath+'/.git','--work-tree='+repoPath]

#init gitt
subprocess.Popen([gitPath] + ['init',repoPath],cwd=repoPath)

#add remote
subprocess.Popen([gitPath] + dirList + ['remote','add','origin',repoUrl],cwd=repoPath)

#Check status, returns files to be commited etc, so a working repo exists there
subprocess.Popen([gitPath] + dirList + ['status'],cwd=repoPath)

#Adds all files in folder
subprocess.Popen([gitPath] + dirList + ['add','.'],cwd=repoPath)

#Push, gives error:
subprocess.Popen([gitPath] + dirList + ['push','origin','master],cwd=repoPath)

除了最后一个命令外,这个工作正常。多数民众赞成我得到这个错误:

bash.exe: warning: could not find /tmp, please create!
fatal: 'git' does not appear to be a git repository
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

当然我不希望它工作,因为我没有把我的登录详细信息放在代码中的任何地方。我不知道如何添加它。我在C:/ users / myUser目录中有一个文件夹/.ssh。我尝试将代码的最后一行更改为:

env = {'HOME' : 'C:/users/myUser'}
subprocess.Popen([gitPath] + dirList + ['push','origin','master'],cwd=repoPath,env=env)

希望git找到/.ssh文件夹,但没有任何运气。我也试过没有'dirList',但没关系。我也尝试将名称'origin'更改为url,但这也没有用。

我不介意我是否正在使用我已创建的.ssh键,或者我是否必须使用带登录名/密码的方法。我不打算使用git库。

0 个答案:

没有答案