Недавно я унаследовал проект и хотел бы очистить рабочий процесс «доставки кода», связав наш внутренний репозиторий Git с репозиторием SVN клиента.
Обзор репозитория
Моя компания разработала программный комплекс для клиента. Мы отслеживаем наши изменения, используя репозиторий Git. Совершенно отдельно мы предоставляем случайные пакеты кода и выпускаемые двоичные файлы в репозиторий SVN клиента. Файловая структура репозитория SVN клиента является своего рода подмножеством нашей собственной файловой структуры — она содержит некоторые файлы и папки, но не все.
Желаемый рабочий процесс
В конечном счете, я думаю, что хотел бы создать ветку в нашем репозитории git под названием «ClientSVNDelivery». Эта ветвь должна отражать состояние репозитория SVN клиента. Всякий раз, когда мы хотим доставлять обновления клиенту, я хотел бы git merge
переносить наши изменения в эту ветку (из «мастера»), а затем git-svn dcommit
эти изменения до их удаленного сайта.
Проблема
Проблема, с которой я столкнулся, с точки зрения логистики, является отправной точкой. Поскольку оба репозитория имеют длинную полностью не связанную историю, а структура папок не идентична (опять же, проект SVN является подмножеством папок в нашем внутреннем репозитории git), я не уверен, как создайте ассоциации, необходимые для настройки моей промежуточной ветки «ClientSVNDelivery» (а именно, как сформировать общего предка, который позволит слиянию действительно работать). Честно говоря, у меня даже возникают проблемы с описанием того, что я хочу сделать!
Буду ли я создавать ветку нашей последней внутренней ревизии? Какая-то произвольная более ранняя версия? Или вместо этого я бы отказался от истории remove-svn?
Вопрос
Кто-нибудь имел дело с таким сценарием раньше? Удалось ли вам упростить процесс и какие шаги вы предприняли для создания промежуточной ветки? Как вы создали исторические ассоциации?