Мы переместили большую часть нашей кодовой базы из монолитного репозитория svn
в набор репозиториев git
. По разным причинам некоторые работы (над старыми версиями проекта, развернутыми в поле ), вынуждены продолжаться в старых svn
ветках, после того как они были перемещены в git
и удалены из подверсии trunk
.
Я только что проделал подобную работу в ветке svn
и повторно -применил изменения из репозитория svn
в репозитории git
, выполнив следующие:
cd <common_svn_commit_root>
svn diff -r 12344:12345 > ~/r12345.diff
gedit ~/r12345.diff
cd <common_git_commit_root>
git apply ~/r12345.diff
но делать это для каждого коммита svn
довольно обременительно, особенно для шага gedit
, где мне приходится вручную объединять пути svn
в пути git
(, обычно добавляя префикс к каталогу верхнего уровня. имя ).
Одна из проблем, связанных с опробованием некоторых вариантов, представленных до сих пор, заключается в том, что структура старого репозитория svn
и нового репозитория git
отличается. Это одна из причин, по которой мне приходится редактировать файл патча.
Старая структура каталогов была
svn
configurations
blah
mine
blam
plugins
foo
core
mine
bar
В то время как новая структура
svn
plugins
bar
git
my_git
my_config
plugins
mine
core_git
plugins
core
foo_git
plugins
foo
Я действительно хотел бы знать, есть ли более простой способ сделать это, и понять, что лучше всего подходит для этой ситуации.