Более простой альтернативой, которая не включает какие-либо внешние сценарии, является использование псевдонима SSH. Я знаю, что оригинальный постер просил не изменять ~ / .ssh / config, но я подозреваю, что здесь есть недоразумение.
Локальный пользователь на сервере не тот, кто выполняет коммит, и может отличаться от пользователя, выполняющего «git push».
- на сервере программное обеспечение хостинга может запускаться как один пользователь (обычно «git»)
- личность человека, выполняющего фиксацию, является только бизнесом git (для добавления к метаданным фиксации), не имеет отношения к серверу и не подлежит аутентификации на сервере
- личность 'git push' -er актуальна и установлена на
системы, на которых запущено программное обеспечение хостинга git на сервере по ключу ssh
По этой причине в системе, выполняющей push, можно принудительно установить конкретную идентификацию даже для той же локальной учетной записи и того же удаленного сервера, даже в пределах одного и того же хранилища git, используя псевдоним ssh, следуя описанному ниже методу.
Предположим, у вас на сервере gitorious.org есть ваша обычная учетная запись, назовем ее «разработчик».
Вы не хотите автоматически использовать учетную запись разработчика [1] , поэтому вы создаете еще одну великолепную учетную запись для синхронизации, назовем ее «роботом».
Для автоматизации будет использоваться только учетная запись «робота»:
Шаг 1 : Добавить «робота» в проект gitorius, к которому нужно подтолкнуть.
Шаг 2 : На локальном компьютере создайте ключ без пароля (это будет связано с учетной записью робота на gitorious).
ssh-keygen -f ~/.ssh/id_rsa_robot
Шаг 3 : загрузить открытый ключ ~ / .ssh / id_rsa_robot.pub на gitorious в учетной записи «робота».
Шаг 4 : URI git SSH на gitorious имеют формат git@gitorious.org: prj_or_user / subproject.git . В вашем файле ~ / .ssh / config добавьте следующие строки:
host robot.gitorious.org
HostName gitorious.org
IdentityFile ~/.ssh/id_rsa_robot
IdentitiesOnly "yes"
Это обеспечит:
- всякий раз, когда вы используете имя хоста «robot.gitorious.org», оно будет подключаться
на gitorious.org (опция HostName),
- он будет использовать пароль без пароля для аутентификации в качестве робота на
gitorius.org (опция IdentiFile) и
- даже если у вас запущен агент ssh, он игнорирует ключ по умолчанию
и используйте пароль без пароля (IdentiesOnly «да»).
Шаг 5 : Предполагая, что SSH URI на gitorious для вашего проекта - «git@gitorious.org: project / project.git», в локальном хранилище определите новый удаленный «autopush» с немного измененное имя хоста:
git remote add autopush git@robot.gitorious.org:project/project.git
Настройка завершена, теперь попробуйте нажать на gitorious с помощью пульта 'autopush'.
git push autopush master
Если все прошло хорошо и есть изменения, которые нужно нажать, вы должны увидеть, что вы успешно переведены на «gitorious.org» как «робот»
[1] Для автоматических нажатий для учетной записи должен быть сгенерирован пароль без пароля, но присоединение его к учетной записи «разработчика» будет означать, что автоматизированное задание может распространяться на любой из gitourious проектов, где «разработчик» участвует в gitorious.