2011-12-16 5 views
5

Я хотел бы создать очень простой скрипт, который будет в конечном счете, будет называться другим приложением, который обновляет локальный репозиторий:Могу ли я хранить учетные данные git в переменных среды?

#!/bin/bash 

cd $1 
sudo git pull 

При выполнении этого я просил полномочия (я вытаскивание из частного репозитория BitBucket).

Могу ли я (кратко) хранить учетные данные в переменных среды?

#!/bin/bash 

export GIT_USERNAME=<user> 
export GIT_PASSWORD=<pass> 

cd $1 
sudo git pull 

Вышеуказанное не работает. Что-нибудь? Я мог бы программно изменить исходный url, но это кажется немного верным.

+4

git не использует учетные данные, он полагается на используемый транспорт. Вы используете git над ssh? Если это так, вы должны посмотреть на ssh-ключи. –

ответ

0

Git не использует учетные данные, он полагается на используемый транспорт.

9

Я знаю, что это очень старый вопрос, но если вам действительно нужно передать имя пользователя и пароль для HTTP базовой аутентификации, вы можете просто установить помощник, как это:

git config credential.helper '!f() { sleep 1; echo "username=${GIT_USER}\npassword=${GIT_PASSWORD}"; }; f' 

UPDATE: Я добавил sleep 1 функцию , В некоторых условиях это может быть возможно из-за состояния гонки. У меня есть две виртуальные машины, на которых работает Debian Jessie. Они имели ту же архитектуру, но разные ЦП и различное количество ядер. На одной из этих машин помощник работал нормально без sleep. С другой - нет. После нескольких часов отладки я запустил strace, чтобы узнать, что происходит. И это волшебство начало работать. strace только что сделал git немного медленнее.

+0

Спасибо большое! Прекрасно работает для HTTP-нажатий! Для SSH я также проголосовал бы за ключи. –

+0

Что делает восклицательный знак в ''! F() 'здесь? Кажется, это будет ссылкой на предыдущую команду в истории. Использование 'bash' для выполнения того, что находится в вспомогательной строке в качестве простой команды, вызывает ошибку с этим синтаксисом. Мне любопытно, почему это работает. – ely

+1

N/m - Я вижу, что это уникально для git, но я не смог найти его в документации git. Восклицательный знак указывает git обрабатывать параметр конфигурации строки как исполняемый код оболочки. Например, для доверенного помощника, если он не обрабатывает его как исполняемый файл, он пытается добавить строку в аргумент «учетные данные» и следовать ей другими параметрами, указанными в строке. – ely

Смежные вопросы