Зеркало мерзавец свн - PullRequest
       8

Зеркало мерзавец свн

8 голосов
/ 23 апреля 2010

У меня есть основной репозиторий git для проекта с открытым исходным кодом

Я хочу отразить все коммиты в хранилище SVN (на code.google.com), возможно ли это?

Ответы [ 5 ]

4 голосов
/ 23 апреля 2010

Да, это возможно. Используйте SVN-функции Git для импорта в репозиторий. Вы можете отодвинуться оттуда. Однако вы обнаружите, что по большей части этот git может эффективно отображать историю SVN лучше, чем SVN может отображать историю git.

3 голосов
/ 17 мая 2011

Я сталкивался с такой ситуацией на моей нынешней работе. Наш основной Git-репозиторий имеет нелинейную историю, поэтому выбранное решение должно справиться с этим. Решение, которое пока работает, основано на репозитории gitsvn proxy. У меня есть хук post-receive, установленный в основном репозитории Git, который в своем ядре имеет нечто вроде этого:

export GIT_DIR=$GITSVN_PROXY_DIR/.git
git pull -Xtheirs file://$GIT_PRIMARY_DIR master
git svn dcommit

После переписывания истории журнала dcommit. При следующем извлечении git из основного Git-репозитория вы обычно получаете конфликты mrege. Вот тут-то и включается опция -Xtheirs. Это стратегия слияния, предпочитающая удаленную версию изменений. В этом случае это позволяет нам автоматически разрешать конфликты! :)

Единственный недостаток: красивые сообщения о фиксации SVN не приходят бесплатно. Некоторый git-взлом необходим, чтобы они содержали всю информацию из первичных сообщений Git commit.

3 голосов
/ 23 апреля 2010

Если ваша история git линейна, вы можете попробовать использовать git-svn. Я попытался бы использовать «git svn clone» для импорта существующего (пустого) SVN-репозитория в git, затем переназначить в него существующую историю git и «git svn dcommit».

Если ваша история git не линейная (содержит ветви и слияния), вы не сможете правильно представить ее в SVN. В этом случае я настоятельно рекомендую вместо этого использовать хостинговое решение на основе git (например, github.com).

1 голос
/ 19 июля 2012

Я сомневаюсь, что это возможно с code.google.com, но вы можете настроить свой собственный репозиторий Subversion и установить в него SubGit .

Как только установка будет завершена, у вас будет связанная пара репозиториев Subversion и Git. Каждая модификация в любом репозитории запускает ловушку SubGit, которая автоматически преобразует все необходимые изменения.

Для получения дополнительной информации см. документацию и сравнение git-svn .

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

0 голосов
/ 23 апреля 2010

Вы проверили http://git -scm.com / docs / git-svn Я не знаю, решит ли это вашу проблему или нет, но это способ синхронизировать git и svn .

-CJ

...