LINUX.ORG.RU

Миграция Git → SVN и разделение репозитория

 , , ,


0

3

Есть старый проект в SVN, который хочу перевести на Git с сохранением истории, веток и меток. Миграцию на Git провел при помощи svn2git, тут проблем не возникло. Но беда в том, что по факту в одном репозитории лежит несколько смежных проектов, т.е. структура примерно такая

repository root
 + project1
 | + dir1
 |  |- file1
 |  |- file2
 | + dir2
 |  |- fileN
 | + dirN
 + project2
 | + dir2_1
 |  |- file2_1
 |  |- file2_2
 | + dir2_2
 |  |- file2_N
 | + dir2_N
 + projectN

Хотелось бы разнести проекты по отдельным репозиториям, и не просто разнести, но и сохранить соответствующие проекту метки и ветки и удалить лишние.

Пытаюсь сделать это через filter-branch вот так

git filter-branch --prune-empty --tag-name-filter cat --subdirectory-filter project1 -- --all
git push --all new_repo
Но в результате получается что-то не то. Сам код на месте, а вот с ветками и метками не складывается.

Подскажите, как сохранить ветки и метки при разделении?


Не знаю, есть ли более умное решение, но я обычно копирую такой репозиторий и с помощью filter-branch удаляю не относящееся к проекту. Что-то типа:

git filter-branch --prune-empty --index-filter "git rm -rf --cached --ignore-unmatch $files" HEAD
k_andy ★★★ ()