Я использую GitPython для инициализации нового локального репозитория, создания начальной фиксации и отправки в канонический репозиторий. К сожалению, последний шаг терпит неудачу, и мне трудно понять, почему. Я уверен, что просто неправильно использую переменную GIT_SSH_COMMAND
, но я не уверен, как это сделать. Там не так много примеров, чтобы продолжить.
Я прочитал этот вопрос SO и углубился в соответствующий ошибка и commit, но мне явно не удалось правильно его собрать.
Помощь?
"Доказательство" Git v2.3+
$ git --version
git version 2.3.1
Фрагмент сценария
# Please take my word that I've init'd the repo and that any variables
# have been defined and initialized.
git_ssh_identity_file = os.path.expanduser('~/.ssh/id_rsa')
git_ssh_cmd = 'ssh -i %s' % git_ssh_identity_file
with git_project.git.custom_environment(GIT_SSH_COMMAND=git_ssh_cmd):
git_project.remotes.origin.push(git_project.heads.master)
Результирующая ошибка
Traceback (most recent call last):
File "./ct-new-project.py", line 204, in <module>
git_project.remotes.origin.push(git_project.heads.master)
File "/Library/Python/2.7/site-packages/git/remote.py", line 667, in push
return self._get_push_info(proc, progress or RemoteProgress())
File "/Library/Python/2.7/site-packages/git/remote.py", line 588, in _get_push_info
handle_process_output(proc, stdout_handler, progress_handler, finalize_process)
File "/Library/Python/2.7/site-packages/git/cmd.py", line 202, in handle_process_output
return finalizer(process)
File "/Library/Python/2.7/site-packages/git/util.py", line 158, in finalize_process
proc.wait()
File "/Library/Python/2.7/site-packages/git/cmd.py", line 300, in wait
raise GitCommandError(self.args, status, self.proc.stderr.read())
git.exc.GitCommandError: 'git push --porcelain origin master' returned with exit code 128
GIT_SSH_COMMAND='ssh -i ~/.ssh/id_rsa' git push --porcelain origin master
? На всякий случай, если с вашим репо что-то не так. ИлиGIT_SSH_COMMAND
что-то конкретное для GitPython? - person kdopen   schedule 02.03.2015GIT_SSH_COMMAND
является переменнойgit
, а неGitPython
, так что вы сможете проверить это из командной строки. - person kdopen   schedule 02.03.2015.git/config
не синхронизировалось с кодом, который я пытался отправить, и это было реальной проблемой на данный момент — я пытался отправить репозиторий, которого на самом деле не существовало. /карательный удар головой - person Rob Wilkerson   schedule 02.03.2015