Make git server mirror upload honor config['identity_file'] option

This commit is contained in:
Torsten Grote 2017-04-24 16:22:33 -03:00
parent 1c25c516aa
commit c137231d8b
No known key found for this signature in database
GPG Key ID: 3E5F77D92CF891FF
2 changed files with 13 additions and 5 deletions

View File

@ -181,7 +181,7 @@ The repository of older versions of applications from the main demo repository.
# 'http://foobarfoobarfoobar.onion/fdroid',
# )
# optionally specific which identity file to use when using rsync over SSH
# optionally specify which identity file to use when using rsync or git over SSH
#
# identity_file = '~/.ssh/fdroid_id_rsa'

View File

@ -216,9 +216,9 @@ def update_serverwebroot(serverwebroot, repo_section):
if options.quiet:
rsyncargs += ['--quiet']
if options.identity_file is not None:
rsyncargs += ['-e', 'ssh -i ' + options.identity_file]
if 'identity_file' in config:
rsyncargs += ['-e', 'ssh -i ' + config['identity_file']]
rsyncargs += ['-e', 'ssh -oBatchMode=yes -oIdentitiesOnly=yes -i ' + options.identity_file]
elif 'identity_file' in config:
rsyncargs += ['-e', 'ssh -oBatchMode=yes -oIdentitiesOnly=yes -i ' + config['identity_file']]
indexxml = os.path.join(repo_section, 'index.xml')
indexjar = os.path.join(repo_section, 'index.jar')
indexv1jar = os.path.join(repo_section, 'index-v1.jar')
@ -334,6 +334,13 @@ def update_servergitmirrors(servergitmirrors, repo_section):
fdroid_repo_path = os.path.join(git_mirror_path, "fdroid")
_local_sync(repo_section, fdroid_repo_path)
# use custom SSH command if identity_file specified
ssh_cmd = 'ssh -oBatchMode=yes'
if options.identity_file is not None:
ssh_cmd += ' -oIdentitiesOnly=yes -i "%s"' % options.identity_file
elif 'identity_file' in config:
ssh_cmd += ' -oIdentitiesOnly=yes -i "%s"' % config['identity_file']
repo = git.Repo.init(git_mirror_path)
for mirror in servergitmirrors:
@ -360,7 +367,8 @@ def update_servergitmirrors(servergitmirrors, repo_section):
# push for every remote. This will overwrite the git history
for remote in repo.remotes:
logging.debug('Pushing to ' + remote.url)
remote.push('master', force=True, set_upstream=True, progress=progress)
with repo.git.custom_environment(GIT_SSH_COMMAND=ssh_cmd):
remote.push('master', force=True, set_upstream=True, progress=progress)
if progress:
bar.done()