Как вы уже догадались, получить коммиты для "слияния" должным образом здесь не получится.Вам придется использовать format-patch
.Вот как я бы это сделал:
$ git svn clone --no-metadata svn://.../ new-svn-repo
$ cd new-svn-repo
$ git log
(Вы можете добавить опцию -A
к git svn clone
, чтобы переписать информацию об авторстве SVN из формата user@uuid
в правильное Joe User <user@example.com>
авторствоинформация. Информацию см. man git-svn
.)
Просмотрите журнал и найдите коммит, соответствующий последнему коммиту в репозитории github.Если это коммит abcdef
, тогда:
$ git format-patch -k abcdef
Теперь у вас будет целый набор *.patch
файлов, соответствующих новым коммитам, которые вы хотите перенести.Итак ...
$ cp *.patch /github/repository/location
$ cd /github/repository/location
$ git am -k --keep-cr *.patch
Тада!Теперь просто нажмите master на Github.
(Если ваш Git недостаточно новый, он может жаловаться на аргумент --keep-cr
для git am
. Если ваши исходные файлы не содержат CR, просто удалите --keep-cr
.Но если они это сделают, вам может потребоваться обновить ваш Git, поскольку git mailsplit
, называемый git am
, удалит все CR в файлах исправлений при их обработке. Это может привести к тому, что исправления не будут применяться.)