Существуют ли какие-либо автоматизированные службы синхронизации SVN → GIT?

Там есть проект SVN с открытым исходным кодом, доступ к которому доступен только для чтения, и я хотел бы создать зеркало GIT этого проекта, актуальное на GitHub.

Я знаю, как настроить исходное зеркало, а затем обновить его с помощью git svn rebase, но для этого все еще требуется, чтобы сервер был настроен где-то с заданием cron, выполняющим синхронизацию, настройку мониторинга, чтобы убедиться сервер запущен, и задание cron запущено, периодически обновляясь до последней версии GIT и т.д.

Прежде чем изобретать одно и то же колесо, которое должно было иметь любое другое зеркало SVN → GIT, мне было интересно, есть ли какие-либо службы (бесплатные или платные), которые будут автоматизировать SVN → GIT зеркалирование для меня. Знать кого-нибудь?

Очевидно, что автоматическая служба не может объединить мои изменения - все мои изменения происходят в отдельном репо (или, возможно, отдельной ветке в том же репо). Я просто ищу способ автоматизации взаимодействия SVN и создания точного зеркала, которое другие могут клонировать.

Ответы

Ответ 1

Я думаю, что ответственность за это должна попасть в руки людей, поддерживающих проект. См. Например, как Apache поддерживает свои проекты с Git зеркалами.

С другой стороны, здесь не так много "изобретательности", я думаю. Если у вас есть сервер, который может постоянно отслеживать репозиторий SVN для изменений, выполнение git -svn rebase и push to github довольно прямолинейно. Я сомневаюсь, что какие-либо компании специализируются на создании этого (по крайней мере, я его не видел).

На боковой ноте, когда вы хотите поделиться своими изменениями, вы не должны нажимать на git -mirror. Лучше либо сделать git -svn dcommit обратно в SVN, либо отправить патч разработчикам. Если вы нажмете на SVN для получения репо, это испортит git -svn, я полагаю. Как вы говорите, двунаправленная синхронизация git -SVN не может быть автоматизирована.

Ответ 2

Вы можете использовать post-commit hooks на svn-сервере, чтобы сообщить git -svn, что время для переустановки.

Ответ 3

Вы должны просто использовать tailor. Он способен повторно конвертировать любой VCS в любой другой VCS. И он делает это постепенно, а это означает, что если вы сначала конвертируете репозиторий SVN в Git, тогда коммиты будут сделаны в SVN, и вы снова конвертируете, он будет преобразовывать только новые версии, правильно добавляя их как историю в существующую Git история.

Вы можете автоматизировать процесс двумя способами: либо вы просто запускаете портной на временной основе, с чем-то вроде cron или anacron, или вы используете, как ранее предполагалось, post-commit hooks в SVN, тем самым инициируя преобразование сразу же после того, как что-либо передано SVN.

Ответ 4

svn2github.com, похоже, именно то, что вы хотите. Он зеркалирует любое svn-репо для github и автоматически обновляется до тех пор, пока репо имеет менее 2000 файлов (выше того, что вам нужно обновить вручную)