Мы находимся в ситуации с распределенной командой, в которой члены команды принадлежат к разным компаниям и не имеют доступа к серверам друг друга. Мы работаем над одним проектом и имеем один репозиторий git, который нужно синхронизировать. Обе части команды (из соображений простоты, называя их командой A или B) вносят изменения.
- Команда A имеет доступ к серверу A, но не к серверу B
- Команда B имеет доступ к серверу B, но не к серверу A
У нас нет системы, которая имеет доступ к обоим серверам, и вряд ли скоро что-нибудь получит.
Как мы синхронизируем репозиторий в разных местах?
До сих пор мы пробовали следующий подход (-ы) с небольшим успехом.
Команда А:
git clone --mirror https://server_a.com/repository_origin.git
для получения полной копии, включая все ветви и теги из исходного хранилища
Обернуть созданную папку в zip-файл и передать команде B
Команда B:
Подходы
git push --mirror
приводит к тому, что изменения команды B будут полностью отброшены, но все изменения команды A были объединены в зеркальное хранилище, то есть изменения команды B отсутствуют в зеркальном хранилище.
git fetch --all
правильно получает все локальные изменения команды B
git push --mirror
приводит к тому, что изменений нет, т. Е. Изменения команды A отсутствуют в зеркальном хранилище.
Очевидно, что нам также нужно получить изменения от команды B к исходному хранилищу, но без того, чтобы путь от A к B работал так, как хотелось бы, не очень полезно пытаться заставить B к A работать так, как нужно.
Итак, мы попробовали эти подходы, но ни один из них не сработал. У кого-нибудь есть идеи как решить эту проблему? Конечно, мы надеемся найти решение для всех, кто работает над одним и тем же исходным хранилищем, но из-за правил, которые невозможны ни в настоящее время, ни в обозримом будущем.