Não. Sua melhor aposta seria configurar um espelho do repositório svn em um repositório git dedicado.
git svn clone -s http://subversion.example.com/ mysvnclone
cd mysvnclone
git remote add origin [email protected]:project.git
git push origin master
Em seguida, você pode adicionar o repositório git como um submódulo ao projeto original
cd /path/to/gitproject
git submodule add git://example.com/project.git -- svn-project
git add svn-project
git commit -m "Add submodule"
Há uma diferença conceitual entre o submódulo svn: externals e git que pode fazer com que você se engane se você abordar isso do ponto de vista do subversion. O submódulo git está vinculado à revisão que você fornece. Se "upstream" for alterado, você precisará atualizar a referência do seu submódulo.
Então, quando ressincronizamos com a subversão upstream:
cd /path/to/mysvnclone
git svn rebase
git push
... o projeto git ainda usará a revisão original que comprometemos anteriormente. Para atualizar para o svn HEAD, você teria que usar
cd /path/to/gitproject/svn-project
git checkout master
git pull
cd ..
git add svn-project
git commit -m"Update submodule"
Eu apenas passei por isso. Estou fazendo algo semelhante ao rq, mas um pouco diferente. Eu configurei um dos meus servidores para hospedar esses clones git dos repositórios svn necessários. No meu caso, quero apenas versões somente leitura e preciso de um repositório simples no servidor.
No servidor eu corro:
Isso configura meu repositório vazio, então eu tenho um script cron para atualizá-lo:
Isso também requer o fix-svn-refs.sh de http://www.shatow.net/fix-svn-refs.sh Isso foi inspirado principalmente por: http://gsocblog.jsharpe.net/archives/12
Não sei por que
git gc
é necessário aqui, mas não pude ficargit pull
sem ele.Então, depois de tudo isso, você pode usar o submódulo git seguindo as instruções da rq.
fonte
Atualmente, o git-svn não suporta svn: externals . Mas existem duas outras ferramentas que podem ajudá-lo:
SubGit
O SubGit é uma solução do lado do servidor, permite o acesso do Git ao repositório do Subversion e vice-versa. Você pode consultar a documentação para obter mais detalhes, mas em geral é bastante fácil usar o SubGit:
O comando acima detectará o layout das ramificações no projeto SVN e, em seguida, criará um repositório Git vazio vazio, pronto para espelhar o projeto SVN. Você pode ser solicitado a obter credenciais, a menos que já estejam armazenadas no cache de credenciais SVN no diretório ~ / .subversion. Você também pode ajustar
$GIT_REPO/subgit/authors.txt
para mapear nomes de autores SVN para identidades do Git.Neste momento você tem o repositório Subversion conectado ao repositório Git recém-criado. O SubGit converte a revisão SVN em commit Git em todos
svn commit
e Git commit em revisão SVN em todosgit push
.Tudo o que você precisa é disponibilizar o repositório Git para os committers. Dê uma olhada no git-http-backend para isso. Em seguida, você pode adicionar o repositório Git criado como um submódulo usual. O SubGit também está disponível como um complemento para o Bitbucket Server, para saber mais, confira aqui . Portanto, não há necessidade de usar ferramentas externas como git-svn ou qualquer outra.
O SubGit é um software proprietário, mas é gratuito para pequenas empresas (até 10 participantes), projetos acadêmicos e de código aberto.
SmartGit
O SmartGit substitui o git-svn no lado do cliente. Mais informações sobre seus recursos, você pode encontrar aqui .
Em particular, o SmartGit suporta os sub - módulos git e svn: externals , você pode misturá-los no seu repositório.
O SmartGit é um software proprietário, mas é gratuito para uso não comercial.
fonte
subgit
( subgit.com/documentation/… ) quanto osmartgit
suportamsvn:externals
da mesma maneira por um.gitsvnextmodules
arquivo explícito em uma cópia de trabalho. O que significa que você ainda precisa usar esse software para fazer check-out externo e não pode usar ogit
utilitário básico para fazer check-out diretamente de um servidor externo do Git Hub, comogithub
ougitlab
. Portanto, as fontes transferidas para umsnv:externals
servidor de hub git externo não poderão ser observadas e baixadas sem esses softwares, o que ainda é um problema significativo.Além do que a rq disse, outro método seria usar o projeto "externals" de terceiros ( http://nopugs.com/ext-tutorial ), que imita melhor como as referências externas do svn funcionam. Com externos, você pode rastrear repositórios git ou svn, e parece mais fácil enviar suas alterações a montante para esses repositórios. No entanto, exige que os membros do projeto baixem e instalem o pacote separado.
Ainda não usei submódulos ou externos; no entanto, passei algumas horas lendo sobre todas as alternativas e parece que o externo será mais adequado às minhas necessidades. Há uma excelente discussão sobre esses e outros métodos personalizados no capítulo 15 do "Controle de versão com Git", de Jon Loeliger ( http://oreilly.com/catalog/9780596520120 ), que eu recomendo fortemente.
fonte
O Piston está sendo reescrito para suportar isso, e o inverso, além da URL existente do Subversion em um repositório do Subvresion e git + git.
Confira o repositório do pistão Github .
Infelizmente, não parece ter sido lançado.
fonte
Bem, existe
git-remote-testsvn
, então acho que algo comoDeveria trabalhar. Faz?
fonte