Esta versão do GitHub Enterprise foi descontinuada em 2021-06-09. Nenhum lançamento de patch será feito, mesmo para questões críticas de segurança. Para obter melhor desempenho, melhorar a segurança e novos recursos, upgrade to the latest version of GitHub Enterprise. Para ajuda com a atualização, contact GitHub Enterprise support.

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.

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.

  1. No GitHub Enterprise Server, navegue até a página principal do repositório.

  2. No nome do repositório, clique em Clonar ou fazer download. Botão Clone or download (Clonar ou baixar)

  3. Para clonar o repositório usando HTTPS, em "Clonar com HTTPS", clique em . Para clonar o repositório usando uma chave SSH que inclui um certificado emitido pela autoridade certificada de SSH da sua organização clique em Usar SSH e, em seguida, clique em . Botão Clone URL (Clonar URL)

  4. Faça um checkout vazio do repositório:

    $ svn co --depth empty https://github.com/user/repo > Checked out revision 1. $ cd repo
  5. Obtenha o branch trunk. A ponte do Subversion mapeia o trunk com o branch HEAD do Git.

    $ svn up trunk > A trunk > A trunk/README.md > A trunk/gizmo.rb > Updated to revision 1.
  6. Obtenha um checkout vazio do diretório branches. É aqui que ficam todos os branches diferentes de HEAD 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:

branch-snapshot

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.

Leia mais