Несколько человек работают над несколькими проектами на одном веб-сервере через сетевой ресурс. Каждый проект имеет свой собственный репозиторий git. При запуске проекта у нас есть отдельная среда разработки для разработчиков, работающих над проектом, и промежуточная среда для каждого проекта. Все файлы принадлежат www-data
, потому что это пользователь, которого использует Apache.
Чтобы избежать необходимости вводить имя пользователя и пароль несколько раз, когда вы тянете, нажав и переключитесь на новую ветку, мы в настоящее время используем кеш учетных данных (как найдено здесь).
$ git config --global credential.helper
cache --timeout=900
Проблема, с которой мы сталкиваемся, заключается в том, что, когда кто-то (пользователь 1) выполняет аутентифицированное действие git, они вводят свои учетные данные. В течение таймаута кто-то еще (пользователь 2) выполняет аутентифицированное действие git в своем собственном репозитории, в котором используются учетные данные пользователя 1. Это приведет к одной из двух вещей:
- Пользователь 2 получает сообщение об ошибке, что репозиторий не существует. Это связано с тем, что пользователь 1 не имеет прав на выполнение действий в репозитории пользователя 2.
- Пользователь 2 подталкивает фиксацию (вместе с ними как автор), используя учетную запись пользователя 1. Нажатие отображается в истории пользователя 1.
Я думаю, что эту проблему можно частично смягчить, добавив имя пользователя в URL-адрес репозитория git (например, имя пользователя @git.domain.ext/repo/name.git), но это работает только на начальных этапах, у нас есть индивидуальные среды разработки для каждого пользователя. К промежуточной среде необходимо обращаться несколькими людьми, поэтому мы не можем жестко указать имя пользователя. После того, как мы сделали начальную разработку, и проект пошел вживую, мы очищаем среду разработки, потому что у нас нет бесконечного пространства. Если нам нужно внести изменения после того, как мы очистили среду персонального развития, мы обычно используем промежуточную среду для этого, что приведет к той же проблеме.
Команда git config --global credential.helper
заставляет учетные данные храниться на сервере. Понижение тайм-аута помогает только так. Можем ли мы кэшировать учетные данные для среды разработки?