Как работать с двумя репозиториями на одних и тех же данных, но в разных сетях (которые не могут быть подключены)?
Наша команда должна работать с несколькими xtest-файлами. Чтобы избежать конфликтов и иметь историю, мы хотим использовать git. Проблема заключается в следующем:
- С понедельника по четверг большинство, но не все люди будут работать в сети А с некоторыми настольными ПК.
- С пятницы по воскресенье большинство, но не все люди будут работать в сети B со своими ноутбуками
- По соображениям безопасности нет возможности напрямую соединить сеть A и B, обмен данными возможен только с USB-накопителя.
- Жизненно важно, чтобы история изменений в проекте была сохранена.
Проведя некоторое исследование и прочитав несколько ответов (например, два идентичных git-репозитория), у меня есть следующий план для выполнения наших требований, но я не уверен на 200%, сработает ли это (или это можно будет сделать проще), и я ' Я хотел бы получить от вас обратную связь:
- Мы начинаем с чистого репозитория на сервере в сети A. Everbody клонирует этот репозиторий на своих настольных ПК и работает с ним (извлекает данные из репозитория на сервере в сети A и отправляет его) в одну главную ветвь.
- В первый четверг один парень (назовем его git-admin) создает новый пустой репозиторий на своем локальном настольном ПК в сети A, добавляет его в качестве нового удаленного репозитория из сети A и переносит все данные в этот локальный пустой репозиторий.
- Затем администратор git помещает этот пустой репозиторий на свою USB-флешку и копирует его на сервер в сети B. Теперь все, кто работает в сети B со своими ноутбуками, клонируют этот репозиторий и извлекают из него / выгружают из него.
Так хорошо, но теперь у нас есть два центральных хранилища, и может случиться так, что и в сети А, и в Б люди работают над этим. Таким образом, жизненно важно объединять их, по крайней мере, один раз в неделю, чтобы держать их рядом. История должна быть сохранена в обоих хранилищах! Я думаю, это становится немного сложнее:
- Каждый понедельник администратор git в последний раз извлекает данные из репозитория в сети B, запускает новый пустой репозиторий на своем ноутбуке, добавляет его в качестве нового удаленного из своего репозитория сети B и помещает все данные в этот локальный пустой репозиторий на своем ноутбуке,
- Затем он помещает этот пустой репозиторий на свою флэш-накопитель USB и копирует его на свой настольный компьютер в сети А. Затем сначала он извлекает данные из центрального репозитория в сети А, чтобы быть в курсе событий. После войны он добавляет сеть B с чистым хранилищем в качестве нового удаленного из своего хранилища, клонированную из сети A, извлекает ее из нее, разрешает все конфликты и передает как исходный удаленный хранилище в сети A, так и локальное хранилище, скопированное из сети B,
- Теперь центральное хранилище в сети А обновлено. Затем он берет пустой репозиторий, снова помещает его на свою USB-флешку, кладет на свой ноутбук в сети B, добавляет его в качестве нового удаленного для репозитория сети B, извлекает, объединяет и передает в центральный репозиторий в сети B.
Этот процесс будет повторяться каждый понедельник и четверг (наоборот). Любые предложения, чтобы сделать это проще или это путь? Я не уверен, нужно ли работать с пустыми репозиториями и можно ли просто скопировать обычные обновленные локальные репозитории git-admin в соответствующую сеть и добавить центральные репозитории сети A и B как новый пульт (в зависимости от того, в каком он работает) и толкающий и тянущий с него.
Извините за стену текста и спасибо за помощь!
1 ответ
Два новых голых репо каждую неделю? О боже, нет!
Один репозиторий с двумя пультами дистанционного управления (для местоположений A и B) и тянет за собой цикл |
И в чистом стиле DVCS каждый Dev может иметь такой собственный "портфель" (а локальные репозитории dev имеют два пульта - Location и Briefcase).