Git: как команда может вытащить и подтолкнуть к репо с тестового сервера - PullRequest
2 голосов
/ 14 декабря 2011

Полагаю, это вопрос наилучшей практики:

У нас есть тестовый сервер, репозиторий git и несколько рабочих станций. Когда мы проводим браузерные тесты, мы работаем непосредственно на тестовом сервере. Поэтому, кто бы ни проверял браузер, он / она должен иметь возможность фиксировать изменения с тестового сервера в хранилище. Проблема заключается в том, что в git remote (на тестовом сервере) указан один пользователь для извлечения / передачи из / в репозиторий (в .git / config). Хотя у каждого члена команды есть пользователь ssh для репо.

Вопрос: как каждый пользователь может использовать свой собственный ssh-доступ для git pull / push?

Ответы [ 2 ]

2 голосов
/ 14 декабря 2011

Попробуйте указать URL-адрес git repo без имени пользователя в клоне на тестовом сервере (вы можете изменить его в конфигурации или просто клонировать заново). Это заставит git использовать имя пользователя ssh по умолчанию для хоста в этом URL.

В зависимости от настроек может потребоваться дополнительно изменить ~/.ssh/config для каждого пользователя.

Обновление

Если все входят в систему с одним и тем же пользователем на вашем тестовом сервере (настройка, которую я бы не рекомендовал), то, похоже, вам придется взломать так или иначе.

Один из возможных способов сделать это - это (я не пробовал):

Если вы беспокоитесь о user.name и user.email, разрешите пользователю тестового сервера получить доступ к главному git-репо и заставьте каждого пользователя установить GIT_AUTHOR_NAME и GIT_AUTHOR_EMAIL (и, возможно, некоторые другие ) переменные окружения после входа в систему.

Имеет смысл сделать это в каком-то скрипте, но не в .bashrc или аналогичном, по понятным причинам.

Чтобы защитить себя от забывчивых пользователей, вы можете захотеть установить ловушку предварительной фиксации в git clone, где пользователи выполняют свои коммиты, чтобы проверить, был ли вызван скрипт (например, через переменную окружения). В качестве альтернативы, настройте сценарий post-receive в мастер-репозитории git и проверьте, что учетные данные пользователя в отправленных коммитах не совпадают с учетными данными пользователя тестового сервера. В этом случае пользователям придется переписывать историю, чтобы исправить авторов коммитов.

Если этого недостаточно, пожалуйста, поделитесь более подробной информацией.

1 голос
/ 21 декабря 2011

Вы можете указать автора при совершении. Пример git commit --author="Author Name <email@address.com>"

Лучший способ - заставить пользователей указывать автора. В вашем ~/.bashrc или ~/.profile создайте следующую функцию -

function gitco() { /usr/local/git/bin/git commit --author="$1"; }

Когда пользователь фиксирует запрос, попросите его запустить gitco <email address>. Без адреса электронной почты gitco не удастся.

Пример:

gitco me@me.abcdf
...