Skip to main content

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.

Observação: o suporte ao Subversion será removido com a versão 3.13 do GitHub. Para saber mais, confira o blog do GitHub.

Recursos do Subversion com suporte no GitHub

Check-out

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 check-outs do Subversion são diferentes: eles combinam os dados do repositório nos diretórios de trabalho, ou seja, há um diretório de trabalho para cada branch e tag com check-out. Para repositórios com muitos branches e muitas tags, o check-out de tudo pode ser uma carga de largura de banda. Portanto, você deve começar com um check-out parcial.

  1. Em GitHub, acesse a página principal do repositório.

  2. Acima da lista de arquivos, clique em Código.

    Captura de tela da lista de arquivos na página de aterrissagem de um repositório. O botão "Código" está realçado com um contorno laranja escuro.

  3. Copie a URL do repositório.

    • Para clonar o repositório usando HTTPS, em "HTTPS", clique em .

    • Para clonar o repositório usando uma chave SSH, incluindo um certificado emitido pela autoridade de certificação SSH da sua organização, clique em SSH e em .

    • Para clonar um repositório usando a GitHub CLI, clique em GitHub CLI e em .

      Captura de tela do menu suspenso "Código". À direita da URL HTTPS do repositório, um ícone de cópia está contornado em laranja escuro.

  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 check-out vazio do diretório branches. É nele que se encontram todos os branches que não são HEAD e em que você criará branches de recursos.

    $ svn up --depth empty branches
    Updated to revision 1.
    

Criar branches

É possível criar branches usando a ponte do Subversion para o GitHub.

No cliente do SVN, verifique se o branch padrão é atual atualizando trunk:

$ svn up trunk
> At revision 1.

Em seguida, use svn copy para criar um branch:

$ svn copy trunk branches/more_awesome
> A    branches/more_awesome
$ svn commit -m 'Added more_awesome topic branch'
> Adding    branches/more_awesome

> Committed revision 2.

É possível confirmar a existência do novo branch na lista suspensa de branches do repositório:

Captura de tela da página do repositório. Um menu suspenso, rotulado com um ícone de branch e "main" está realçado com um contorno laranja.

Você também pode confirmar o novo branch por meio da linha de comando:

$ git fetch
> From https://github.com/USER/REPO/
> * [new branch]    more_awesome -> origin/more_awesome

Fazer commits no Subversion

Depois que você adicionar alguns recursos e corrigir alguns erros, o ideal será 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 'Guard against known problems'
> Sending    more_awesome/gizmo.rb
> Transmitting file data .
> Committed revision 3.
$ svn status
> ?    test
$ svn add test
> A    test
> A    test/gizmo_test.rb
$ svn commit -m 'Test coverage for problems'
> Adding    more_awesome/test
> Adding    more_awesome/test/gizmo_test.rb
> Transmitting file data .
> Committed revision 4.

Alternar entre branches

Para alternar entre branches, provavelmente, o ideal é começar com um check-out 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 de 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.