Нет. Лучше всего было бы установить зеркало хранилища svn в отдельном хранилище git.
git svn clone -s http://subversion.example.com/ mysvnclone
cd mysvnclone
git remote add origin git@example.com:project.git
git push origin master
Затем вы можете добавить репозиторий git в качестве подмодуля в исходный проект.
cd /path/to/gitproject
git submodule add git://example.com/project.git -- svn-project
git add svn-project
git commit -m "Add submodule"
Между svn: externals и git submodule есть одно концептуальное различие, которое может сбить вас с толку, если вы подойдете к этому с точки зрения подрывной деятельности. Подмодуль git привязан к предоставленной вами ревизии. Если «upstream» меняется, вам нужно обновить ссылку на ваш подмодуль.
Поэтому, когда мы повторно синхронизируемся с вышестоящей Subversion:
cd /path/to/mysvnclone
git svn rebase
git push
... проект git будет по-прежнему использовать оригинальную ревизию, которую мы зафиксировали ранее. Для обновления до SVN HEAD, вам придется использовать
cd /path/to/gitproject/svn-project
git checkout master
git pull
cd ..
git add svn-project
git commit -m"Update submodule"
Я только что прошел через это. Я делаю что-то похожее на RQ, но немного отличается. Я установил один из моих серверов для размещения этих git-клонов репозиториев svn, которые мне нужны. В моем случае я хочу только версии только для чтения, и мне нужно пустое хранилище на сервере.
На сервере я бегу:
Это устанавливает мой голый репозиторий, затем у меня есть скрипт cron для его обновления:
Это также требует fix-svn-refs.sh от http://www.shatow.net/fix-svn-refs.sh. В основном это вдохновлено: http://gsocblog.jsharpe.net/archives/12
Я не уверен, зачем
git gc
это нужно здесь, но я не смог обойтисьgit pull
без него.После всего этого вы можете использовать подмодуль git, следуя инструкциям rq.
источник
В настоящее время git-svn не поддерживает svn: externals . Но есть два других инструмента, которые могут вам помочь:
SubGit
SubGit - это решение на стороне сервера, оно обеспечивает Git доступ к хранилищу Subversion и наоборот. Вы можете обратиться к документации для получения более подробной информации, но в целом использовать SubGit довольно просто:
Приведенная выше команда обнаружит расположение ветвей в проекте SVN, а затем создаст пустой пустой Git-репозиторий, готовый для зеркалирования проекта SVN. Вас могут попросить ввести учетные данные, если они не сохранены в кэше учетных данных SVN в каталоге ~ / .subversion. Вы также можете настроить
$GIT_REPO/subgit/authors.txt
отображение имен авторов SVN на идентичности Git.В этот момент у вас есть хранилище Subversion, подключенное к недавно созданному хранилищу Git. SubGit переводит ревизию SVN в коммит Git для каждого,
svn commit
а коммит Git в ревизию SVN для каждогоgit push
.Все, что вам нужно, - это сделать репозиторий Git доступным для коммиттеров. Посмотрите на git-http-backend для этого. Затем вы можете добавить созданный Git-репозиторий как обычный субмодуль. SubGit также доступен в качестве дополнения для Bitbucket Server, чтобы узнать больше проверить здесь . Таким образом, нет необходимости использовать какие-либо внешние инструменты, такие как git-svn или любой другой.
SubGit является проприетарным программным обеспечением, но оно бесплатно для небольших компаний (до 10 коммиттеров), научных проектов и проектов с открытым исходным кодом.
SmartGit
SmartGit заменяет git-svn на стороне клиента. Более подробную информацию о его функциях вы можете найти здесь .
В частности, SmartGit поддерживает подмодули git и svn: externals , вы можете смешивать их в своем хранилище.
SmartGit является проприетарным программным обеспечением, но оно бесплатно для некоммерческого использования.
источник
subgit
( subgit.com/documentation/… ), так иsmartgit
поддерживаютсяsvn:externals
одинаковым образом явным.gitsvnextmodules
файлом в рабочей копии. Это означает, что вам все еще нужно использовать это программное обеспечение для извлечения внешних ресурсов, и вы не можете использовать базовуюgit
утилиту для извлечения этих внешних ресурсов непосредственно с внешнего сервера git hub, напримерgithub
илиgitlab
. Таким образом, исходники, размещенныеsnv:externals
на внешнем сервере git hub, не будут доступны для просмотра и загрузки без этого программного обеспечения, которое все еще является серьезной проблемой.В дополнение к тому, что сказал rq, другим методом будет использование стороннего проекта "externals" ( http://nopugs.com/ext-tutorial ), который лучше имитирует работу внешних ссылок svn. С внешними вы можете отслеживать репозитории git или svn, и вам будет проще перенести ваши изменения вверх по течению в эти репозитории. Однако для этого необходимо, чтобы участники проекта загрузили и установили отдельный пакет.
Я еще не использовал субмодули или внешние устройства; Тем не менее, я потратил несколько часов, читая обо всех альтернативах, и похоже, что внешнее будет лучше соответствовать моим потребностям. Об этой и других пользовательских методах есть отличная дискуссия в главе 15 «Контроль версий с помощью Git» Джона Лелигера ( http://oreilly.com/catalog/9780596520120 ), которую я настоятельно рекомендую.
источник
Piston переписывается для поддержки этого, и наоборот, плюс существующий URL Subversion в хранилище Subvresion и git + git.
Посмотрите поршневое хранилище Github .
К сожалению, он не был выпущен.
источник
Ну, есть
git-remote-testsvn
, так что я думаю, что-то вродедолжно сработать. Является ли?
источник