Подтвердить что ты не робот

Как применить SVN diff к Git?

У меня есть мои проекты в 2 репозиториях. Один под SVN и один под Git. Всякий раз, когда я что-то меняю в SVN, я хочу сделать то же самое в репозитории Git.

Скажем, я вношу изменения в репозиторий SVN, создавая версию 125. Как бы применить эти же изменения к моему репозиторию Git (при условии, что мой репозиторий Git обновлен до версии 124).

Спасибо.

4b9b3361

Ответ 1

То, что я на самом деле делал/искал, было:

cd /path/to/svn/repo
svn diff -r 125 > /tmp/patch.diff
cd /path/to/git/repo
patch -p0 < /tmp/patch.diff

Ответ 2

Try:

svn diff | patch -d /path/to/git/repo -p0

См. svn help diff, если вы хотите экспортировать конкретную версию diff.

Ответ 3

Почему никому не нравится git -svn? Я не могу предположить, что никто не знает об этом.

Существует git -svn (и git -hg и git -cvs и git -bzr afaict). По крайней мере, с git -svn вы можете просто сделать

git svn clone --stdlayout http://myrepo/root here

с использованием -s (--stdlayout) предполагает стандартную соединительную линию/ветки/метки/макет, но вы можете иметь ее в любом случае (man git-svn).

Отображение двунаправлено, поэтому вы можете нажимать и тянуть как на нативном (git) удалённом. Нет вопросов.

Ответ 4

Если вы собираетесь создавать патч в SVN и применять его с Git позже, не забудьте использовать --git параметр командной строки:

--git

Включает специальный режим вывода для svn diff, разработанный для кросс-совместимости с популярным управлением распределенной версией Gitсистема.

Например, запустите

svn diff --git -r 125 > /tmp/patch.diff

Ответ 5

Помимо использования патча, как упомянуто выше, вы также можете рассмотреть возможность установки post-commit hook, чтобы вам не приходилось делать это каждый раз время, когда вы совершаете что-то новое.

Ответ 6

Ниже я работал у меня.

Источник: Как создать и применить патч с помощью Git

Во-первых, посмотрите, какие изменения внесены в патч. Вы можете сделать это легко с помощью git apply

git apply --stat fix_empty_poster.patch

Обратите внимание, что эта команда НЕ ДОЛЖНА применить патч, но показывает только статистику о том, что она делает. После просмотра файла патча с помощью вашего любимого редактора вы можете увидеть, что такое фактические изменения.

Далее, вас интересует, насколько неприятным будет патч. git позволяет вам протестировать патч до его фактического применения.

git apply --check fix_empty_poster.patch

Если вы не получаете никаких ошибок, патч можно применять чисто. В противном случае вы можете увидеть, в какую проблему вы столкнулись.

Чтобы применить патч, используйте git am вместо git. Причиной этого является то, что git am позволяет вам подписать прикладной патч. Это может быть полезно для последующей справки.

git am --signoff < fix_empty_poster.patch

Applying: Added specs to test empty poster URL behaviour
Applying: Added poster URL as part of cli output

Хорошо, исправления были применены чисто, и ваша главная ветка была обновлена. Конечно, повторите тесты, чтобы убедиться, что ничто не сломалось.

В журнале git вы обнаружите, что сообщения фиксации содержат тег "Подключено". Этот тег будет прочитан Github и другими, чтобы предоставить полезную информацию о том, как фиксация закончилась в коде.