Suporte para clientes do Subversion
Os repositórios GitHub podem ser acessados por meio do Git e de clientes do Subversion (SVN). Este artigo aborda o uso de um cliente do Subversion no GitHub e alguns problemas comuns que podem ocorrer.
Neste artigo
- Recursos do Subversion com suporte no GitHub
- Localizar o SHA do commit do Git para um commit do Subversion
- Leia mais
O GitHub oferece suporte a clientes do Subversion por meio do protocolo HTTPS. Usamos uma ponte do Subversion para comunicar comandos svn ao GitHub.
Recursos do Subversion com suporte no GitHub
Fazer checkout
A primeira ação a ser executada é um checkout do Subversion. Como os clones do Git mantêm o diretório de trabalho (onde você edita os arquivos) separado dos dados do repositório, há apenas um branch no diretório de trabalho de cada vez.
Os checkouts do Subversion são diferentes: eles combinam os dados do repositório nos diretórios de trabalho, por isso há um diretório de trabalho para cada branch e tag de que tenha sido feito checkout. Em repositórios com muitos branches e tags, fazer checkout de tudo pode sobrecarregar a largura de banda, por isso é recomendável começar com um checkout parcial.
-
No GitHub Enterprise, navegue até a página principal do repositório.
-
Under the repository name, click Clone or download.
-
To clone the repository using HTTPS, under "Clone with HTTPS", click . To clone the repository using an SSH key click Use SSH, then click .
-
Faça um checkout vazio do repositório:
$ svn co --depth empty https://github.com/user/repo > Checkout da revisão 1 concluído. $ cd repo
-
Obtenha o branch
trunk
. A ponte do Subversion mapeia trunk para o branch HEAD do Git (que normalmente émaster
).$ svn up trunk > A trunk > A trunk/README.md > A trunk/gizmo.rb > Updated to revision 1.
-
Obtenha um checkout vazio do diretório
branches
. É aqui que ficam todos os branches diferentes deHEAD
e onde você fará branches de recurso.$ svn up --depth empty branches Updated to revision 1.
Criar branches
É possível criar branches usando a ponte do Subversion para o GitHub.
A partir de seu cliente svn, certifique-se de que o "master" é atual atualizando o trunk
:
$ svn up trunk
> At revision 1.
Em seguida, use svn copy
para criar um novo branch:
$ svn copy trunk branches/more_awesome
> A branches/more_awesome
$ svn commit -m 'Branch de tópico more_awesome adicionado'
> Adicionando branches/more_awesome
> Commit da revisão 2 concluído.
É possível confirmar a existência do novo branch na lista suspensa de branches do repositório:
Você também pode confirmar o novo branch por meio da linha de comando:
$ git fetch
> Em https://github.com/user/repo/
> * [novo branch] more_awesome -> origin/more_awesome
Fazer commits no Subversion
Depois que você tiver adicionado alguns recursos e corrigido alguns erros, vai querer fazer commit dessas alterações no GitHub. O procedimento é exatamente igual ao do Subversion, com o qual você já está acostumado. Edite os arquivos e use svn commit
para registrar as alterações:
$ svn status
> M gizmo.rb
$ svn commit -m 'Proteção contra problemas conhecidos'
> Enviando more_awesome/gizmo.rb
> Transmitindo dados do arquivo.
> Commit da revisão 3 concluído.
$ svn status
> ? test
$ svn add test
> A test
> A test/gizmo_test.rb
$ svn commit -m 'Alcance do teste para problemas'
> Adicionando more_awesome/test
> Adicionando more_awesome/test/gizmo_test.rb
> Transmitindo dados do arquivo.
> Commit da revisão 4 concluído.
Alternar entre branches
Para alternar entre branches, você provavelmente vai querer começar com um checkout de trunk
:
$ svn co --depth empty https://github.com/user/repo/trunk
E depois alternar para outro branch:
$ svn switch https://github.com/user/repo/branches/more_awesome
Localizar o SHA do commit do Git para um commit do Subversion
O servidor do Subversion do GitHub expõe o SHA do commit do Git referente a cada commit do Subversion.
Para ver o SHA do commit, você deve solicitar a propriedade remota sem controle de versão git-commit
.
$ svn propget git-commit --revprop -r HEAD https://github.com/user/repo
05fcc584ed53d7b0c92e116cb7e64d198b13c4e3
Com esse SHA do commit, é possível, por exemplo, procurar o commit do Git no GitHub.