svn-checkout из репозитория GIT

Есть ли способ сделать svn-checkout из репозитория git?

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

Тем не менее, есть разработчики, которым не нужно вносить изменения в код, но они должны быть в состоянии извлечь последний снимок исходного кода и построить его на своем компьютере. Эти так называемые "разработчики" действительно хотели бы использовать SVN, поскольку они уже знакомы с SCM.

Итак, есть ли способ настроить такой сценарий? Или это единственный возможный способ - использовать репозиторий SVN и работать с ним, используя git-svn, если я хочу использовать git для себя и SVN для остальных моих коллег?

Спасибо!

3 ответа

Решение

Спасибо за ваши ответы, svick и Damien Pollet! Они оба хороши, но, поскольку я не могу принять их обоих, я собираюсь кое-что обсудить в своем собственном ответе.


Так что, в принципе, можно иметь git-репозиторий с svn-доступом только для чтения. Как сказал Дэмиен,

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

Другой способ получить доступ только для чтения к коду в любом хранилище - это иметь архив с последним снимком исходного кода, хранящийся где-то на вашем сервере и доступный для загрузки.


Если некоторым пользователям необходимо внести изменения в код, единственный подходящий способ сохранить их - зафиксировать их обратно в репозиторий, независимо от того, какой SCM используется. В этом случае, если пользователь, который внес изменение, не знает, как совершить изменение, должен быть программист (ответственный за исходный код), который с радостью рассмотрит изменение и передаст его обратно в репозиторий.

Если вы хотите оформить хранилище с помощью SVN, вам, безусловно, нужно иметь хранилище SVN. Без этого было бы трудно отследить вещи, которые плохо переводятся между SVN и git (например, номер редакции, ветви).

Но то, что вы просите, на самом деле не похоже на хранилище, вам просто нужно синхронизировать папку. Для этого лучше подходят другие инструменты, чем SVN, например rsync, Другая возможность - иметь постоянно обновляемый архив, содержащий исходный код (например, Github предоставляет это).

Использование репозитория SVN через git-svn вы бы работали, но если есть другие люди, которым нравится git, вы потеряете преимущества сотрудничества с git. Это то, что я использую на работе, где SVN является стандартом де-факто, и я просто предпочитаю команды git и лучшее отображение журнала. В любом случае мы в основном используем SVN в качестве инструмента архивации: нет веток, и мы синхронизируемся в реальной жизни для совместной работы над одним документом.

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

Другие вопросы по тегам