2010-07-28 2 views
2

Я использовал git в распределенной среде (включая GitHub), в которой разработчики работают в автономном режиме, а затем нажимают на центральное репо. Теперь у меня есть требование для более структурированной иерархии репозитория, потому что у нас есть несколько офисов. Если мы возьмем пример, у нас есть разработчики, базирующиеся в Таллинне, которые будут продвигаться в их удаленный репозиторий. У нас также есть разработчики в Лондоне, которые будут продвигаться в их хранилище. Затем нам необходимо объединить изменения между двумя удаленными репозиториями и передать их разработчикам на обоих сайтах. Поэтому иерархия выглядит примерно так:Как управлять иерархиями репозитория GIT?

  
    Tallinn ------- London 
     |     | 
-------------  ------------- 
| | | |  | | | | 
Dev Dev Dev Dev Dev Dev Dev Dev 

Может ли кто-нибудь рекомендовать наилучший подход к реализации этого?

ответ

3

Я бы выбрал город, в котором размещался официальный мастер, и кто-то несет ответственность за слияние изменений с обоих городов. В каждом городе будет свое собственное репо, которое может совершить разработчик, и в конце концов все изменения будут слиты в мастер-репо. Тогда оба городских репо будут обновлены.

Это не все, что отличается от того, как работает Linux. 1 человек контролирует мастера, но вместо городов вещи делятся на подсистемы.

2

Если между Таллинном и Лондоном нет прямой связи (это означает, что вы не можете напрямую переходить от одного центрального репо к другому), это означает, что репозитории в Таллинне и Лондоне составляют essentially fork one from another.

Вилка - более социальный способ обмена версиями данных, популяризированных GitHub.
Но принцип, лежащий вилкой GitHub все еще применяется в вашем случае: вы будете обмениваться данными через пластырей (как в «с использованием, например, git format-patch»).

Даже если ваши репозитории не имеют fork queue (как и в случае с репозиториями GitHub), вам все равно придется управлять различными исправлениями, приходящими на заданное репо, и проверить, что они могут применяться в ускоренном режиме.
Я бы рекомендовал для этих выделенных ветвей от такого обновления.

0

Я думаю, вам нужен «общий» репозиторий, где-то размещенный, связанный с Таллинном и Лондоном. Итак, каждая команда может нажать и вытащить из нее.

0

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

git pull talinn 
git pull london 
git push talinn 
git push london 

Обратите внимание, что либо операция тянуть может привести к конфликтов слияния, которые потребуют ручного разрешения. Если у вас есть сценарий, выполняющий это, он должен будет прикрепить эти случаи разработчику, чтобы его исправить. Вполне возможно, что человек просто выполняет эту задачу каждый раз вместо этого.

Смежные вопросы