Существуют ли какие-либо автоматизированные службы синхронизации SVN-> GIT? - PullRequest
14 голосов
/ 05 октября 2010

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

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

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

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

Ответы [ 4 ]

6 голосов
/ 10 октября 2010

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

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

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

5 голосов
/ 18 июля 2011

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

2 голосов
/ 21 июля 2011

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

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

0 голосов
/ 15 марта 2015

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

...