Легко дублируйте исправления ошибок из старого репозитория svn в новые репозитории git.

Мы переместили большую часть нашей кодовой базы из монолитного репозитория 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

Я действительно хотел бы знать, есть ли более простой способ сделать это, и понять, что лучше всего подходит для этой ситуации.

8
задан Pale Blue Dot 13 July 2012 в 20:57
поделиться