Могу ли я хранить учетные данные git в переменных окружения? - PullRequest
14 голосов
/ 16 декабря 2011

Я хотел бы создать очень простой сценарий оболочки, который в конечном итоге будет вызываться другим приложением, обновляющим локальный репозиторий 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, но это кажется немного излишним.

Ответы [ 3 ]

28 голосов
/ 26 марта 2017

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

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

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

3 голосов
/ 26 февраля 2019

Вы можете установить имя пользователя в git config с помощью:

git config credential.https://github.com.username $GIT_USER

Затем вы можете установить переменную окружения GIT_ASKPASS для скрипта, который предоставит пароль:

export GIT_ASKPASS=/path/to/git_env_password.sh

Содержимое git_env_password.sh будет:

#!/bin/bash
echo $GIT_PASSWORD

NB: при этом имя пользователя будет сохранено в конфигурации git, поэтому, если вы не согласны с этим, используйте другое решение.

Длядополнительную информацию см. на справочной странице gitcredentials .

0 голосов
/ 08 марта 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...