как автоматизировать отправку в репо с помощью gitpython

Я пытаюсь создать скрипт python, который будет проверять наличие изменений в моей локальной рабочей папке git и автоматически отправлять их в онлайн-репозиторий. В настоящее время для этого используется только git вручную. Я хочу знать, что потребуется скрипту, чтобы сделать это без ручного вмешательства.

Команды, которые я бы набрал в своей оболочке:

#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, например. приложение для Windows на github. Как приложение Windows делает это? Я предполагаю, что для этого наверняка есть какой-то git api...


person deostroll    schedule 07.07.2012    source источник
comment
Обычно не рекомендуется хранить пароли в скриптах.   -  person soulseekah    schedule 09.07.2012


Ответы (2)


Если вы выполняете аутентификацию с помощью ключей SSH, используйте ssh-agent для загрузки ключа один раз. и тогда вы сможете продолжать использовать ключ без необходимости постоянно вводить пароль.

В качестве альтернативы вы можете просто сгенерировать ключ без пароля, если вас не волнует безопасность вашего ключа.

person poke    schedule 08.07.2012

Я просмотрел код, чтобы убедиться, что нет ничего, что можно было бы определить для связи с комбинацией имени пользователя и пароля.

Это должно быть так, потому что ssh не дает вам возможности указать пароль заранее, он намеренно запрашивает приглашение пользователя. Единственное было использовать ssh keys для автоматизации.

Однако, если вы действительно хотите согнуть свои пределы. Существует приложение с открытым исходным кодом для обмена данными по ssh без взаимодействия без использования ssh keys: http://sourceforge.net/projects/sshpass/

Вы скомпилируете и установите это и направите протокол связи, такой как ssh://, в это приложение, оно может работать. Однако я не думаю, что вы должны; просто используйте ключи, они великолепны =)

person Umur Kontacı    schedule 07.07.2012