Я пытаюсь перенести очень старый svn
репозиторий в git
и изменить структуру каталогов.Первоначально структура хранилища svn
была такой:
Стадия A
application/
.svn
dev/
dev1/
dev2/
test/
test1/
test2/
others/
others1/
others2/
Через несколько лет структура изменилась на что-то вроде этого.
Стадия B
application/
.svn
dev1/
dev/
test/
others/
dev2/
dev/
test/
others/
Содержимое
- dev / dev1 перемещено в dev1 / dev
- test / test1 перемещенов dev1 / test
- others / others1 перемещено в dev1 / others
То же самое проделано и для каталога dev2.
Теперь я переместил источниккод git
с использованием git svn clone
, ведение всей истории коммитов.В настоящее время структура каталогов выглядит следующим образом.
Этап C
application/
.git
dev1/
dev/
test/
others/
dev2/
dev/
test/
others/
Теперь я хочу разделить этот репозиторий на два новых репозитория, подобных этому
Этап D
dev1/
.git
dev/
test/
others/
dev2/
.git/
dev/
test/
others/
Я пробовал git filter-branch subdirectory-filter
, как это.
git filter-branch --subdirectory-filter dev1 --prune-empty
, который успешно создал структуру каталогов, которую я хотел, , поддерживая всезафиксируйте историю dev1 вплоть до движения, упомянутого в Stage B
.Все коммиты до того, как движение, упомянутое в Stage B
, потеряно.
Я хочу добиться создания структуры каталогов, упомянутой в Stage D
, поддерживая все истории коммитов всех файлов, которые присутствуют в dev1
и dev2
.
Важно : большинство файлов, присутствующих в dev1
и dev2
, создаются даже до создания dev1
и dev2
- эти файлыпозже перешел на dev1
/ dev2
.