Главный репозиторий и локальные репозитории на одной машине - PullRequest
3 голосов
/ 15 июня 2010

Я новичок в Git. Я создал главный репозиторий на сервере Linux. Один и тот же сервер будет использоваться 5 группами по 3 пользователя в каждой. Я хочу создать один локальный репозиторий для каждой группы. А члены группы, в свою очередь, должны создать один локальный репозиторий для каждого из них, поиграть с содержимым и зафиксировать изменения в локальном репозитории группы.

Как мне это сделать?

Ответы [ 2 ]

4 голосов
/ 15 июня 2010

Вы можете создать копию главного репозитория, запустив

git clone --bare /path/to/master/repository

в каталоге, в котором вы хотите создать копию.Я бы предложил сделать это 5 раз по разным путям, чтобы создать 5 разных локальных копий главного репозитория.Затем каждый член группы может запустить

git clone /path/to/group_local/repository

, чтобы создать отдельную копию локального репозитория своей группы.Таким образом, у вас есть три «уровня» хранилищ: главный, локальный, индивидуальный.

Когда вы клонируете хранилище, , если не используется опция --bare, git установит remote.origin.urlСвойство клона ссылаться на оригинал.Это означает, что если вы запустите

git pull

в клоне, он будет извлекать изменения из исходного репозитория, а если вы запустите

git push

в клоне, он внесет измененияот клона к оригиналу.Поэтому, когда члены вашей группы вносят свои изменения в свои отдельные репозитории, они могут запустить git push, и эти изменения будут «загружены» в локальный репозиторий для их группы.В репозитории клонов также возможно копировать изменения из другого репозитория (кроме того, из которого он был первоначально клонирован, я имею в виду), указав URL (или имя предварительно сконфигурированного удаленного) для команды git pull.Вы также можете перейти в любое другое хранилище, хотя есть некоторые вещи, на которые стоит обратить внимание, если вы собираетесь попробовать это.

0 голосов
/ 15 июня 2010

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

То, как я бы это организовал, основано на модели «Доброжелательный диктатор для жизни» и лейтенантов.

BDFL - это человек, который интегрирует изменения из репозиториев лейтенантов в основную ветвь репозитория верхнего уровня.

Лейтенанты объединяют изменения участников в своем репо. Предпочтительно в некоторых разумных ветвях. Разработчики отправляют свою рабочую ветку к лейтенанту или лейтенант вытаскивает его из репозитория, отправляет по электронной почте набор патчей, все, что работает лучше.

Обратите внимание, что эти "интеграции" могут быть в значительной степени автоматизированы с помощью CI-сервера, такого как Hudson.

Авторы работают в ветвях для каждой задачи и регулярно объединяются с хранилищем MASTER. Только в исключительных случаях от лейтенантов репо. (Теперь это работает только тогда, когда скорость движения достаточно высокая). Лучше вырваться из мастера, чтобы уменьшить задержку в цикле и избежать «неприятностей», когда один из лейтенантов болен.

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