Как установить GIT_DIR и GIT_WORK_TREE при поддержке нескольких репозиториев

Как и этот пост SO, у меня есть следующий рабочий процесс, который я хотел бы поддерживать с помощью git:

  1. Локальная разработка нескольких человек
  2. Зафиксировать несколько вещей
  3. Зафиксировать больше вещей
  4. Отправить в промежуточную версию
  5. Тестировать новый код в промежуточной версии
  6. Отправить в рабочую среду

Наш промежуточный сервер обслуживает множество разных сайтов. Я хотел бы настроить репозиторий для каждого в отдельной папке в домашнем каталоге пользователя. Каждый репозиторий будет иметь хук после получения (аналог статьи Даниэля Мессье ), который проверяет изменения в корневом веб-сайте для этого сайта/репозитория.

Меня беспокоит номер шесть.

Когда я пытаюсь выполнить любую команду git, я получаю сообщение об ошибке «фатальная: эта операция должна выполняться в рабочем дереве». Я получаю эту ошибку независимо от того, запускаю ли я «git status» из репозитория (/home/gituser/website1.git, который, как я полагаю, все равно не должен работать..) или из корневого веб-сайта (/var/www/website1) .

Однако, если я укажу GIT_DIR и GIT_WORK_TREE, я смогу выполнять команды git.Оба они работают:

$ git --git-dir /home/gituser/website1.git --work-tree /var/www/website1 status
$ GIT_DIR=/home/gituser/website1.git GIT_WORK_TREE=/var/www/website1 git status 

Итак, мне нужно:

  1. Альтернатива вводу каталога и рабочего дерева вместе с каждой командой
  2. Альтернатива установке их в качестве постоянных переменных среды, потому что это будет работать только для веб-сайта1, а не веб-сайт2, веб-сайт3 и т. д.

Правильно ли я об этом говорю? Как я могу получить git информацию о каталоге, необходимую для каждого репозитория?

8
задан Community 23 May 2017 в 10:29
поделиться