Skip to main content

Soporte para clientes de Subversion

Los repositorios de GitHub pueden accederse desde los clientes de Git y de Subversion (SVN). En este artículo se aborda el uso de un cliente de Subversion en GitHub y algunos problemas comunes que puedes llegar a encontrar.

GitHub admite clientes de Subversion por medio del protocolo HTTPS. Utilizamos el puente de Subversion para comunicar los comandos svn a GitHub.

Nota: La compatibilidad con Subversion se retirará con GitHub versión 3.13. Para obtener más información, consulte el blog de GitHub.

Funciones de Subversion admitidas en GitHub

Restauración

La primera cosa que desearás realizar es un control de Subversion. Ya que los clones de Git mantienen un directorio de trabajo (donde editas los archivos) separado de los datos del repositorio, solo hay una rama en el directorio de trabajo a la vez.

Las extracciones del repositorio de Subversion son diferentes: mezclan los datos del repositorio en los directorios de trabajo, por lo que hay un directorio de trabajo para cada rama y etiqueta que haya extraído. En el caso de los repositorios con muchas ramas y etiquetas, la extracción del repositorio de todo puede ser una carga de ancho de banda, por lo que debe empezar con una extracción parcial.

  1. En tu instancia de GitHub Enterprise Server, navega a la página principal del repositorio.

  2. Encima de la lista de archivos, haz clic en Código.

    Captura de pantalla de la lista de archivos en la página de aterrizaje de un repositorio. El botón "Código" está resaltado con un contorno naranja oscuro.

  3. Copia la dirección URL del repositorio.

    • Para clonar el repositorio con HTTPS, en "HTTPS", haz clic en .

    • Para clonar el repositorio mediante una clave SSH, incluido un certificado emitido por la entidad de certificación SSH de la organización, haz clic en SSH y luego en .

    • Para clonar un repositorio mediante GitHub CLI, haz clic en GitHub CLI y, después, en .

      Captura de pantalla del menú desplegable "Código". A la derecha de la dirección URL HTTPS del repositorio, hay un icono de copia resaltado en naranja oscuro.

  4. Realiza un control vacío del repositorio:

    $ svn co --depth empty https://github.com/USER/REPO
    > Checked out revision 1.
    $ cd REPO
    
  5. Vaya a la rama trunk. El puente de Subversion mapea a trunk en la rama HEAD de Git.

    $ svn up trunk
    > A    trunk
    > A    trunk/README.md
    > A    trunk/gizmo.rb
    > Updated to revision 1.
    
  6. Obtenga una extracción vacía del directorio branches. Aquí se encuentran todas las ramas que no son HEAD y donde creará ramas de característica.

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

Crear ramas

También puedes crear ramas usando el puente de Subversion a GitHub.

Desde el cliente de svn, para asegurarse de que la rama predeterminada es la más reciente, actualice trunk:

$ svn up trunk
> At revision 1.

A continuación, puede usar svn copy para crear una rama:

$ 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.

Puedes confirmar que la nueva rama existe en el menú desplegable de la rama del repositorio:

Captura de pantalla de la página del repositorio. Un menú desplegable, etiquetado con un icono de rama y "main", está resaltado con un contorno naranja.

También puedes confirmar la nueva rama por medio de la línea de comando:

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

Realizar confirmaciones de cambios en Subversion

Después de haber agregado algunas características y corregido algunos errores, querrá confirmar estos cambios en GitHub. Esto funciona de la misma forma en la que estás acostumbrado en Subversion. Edite los archivos y use svn commit para registrar los cambios:

$ 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.

Cambiar de una rama a otra

Para alternar entre ramas, probablemente quiera comenzar con un extracción del repositorio de trunk:

svn co --depth empty https://github.com/USER/REPO/trunk

Luego, puedes alternar a otra rama:

svn switch https://github.com/USER/REPO/branches/more_awesome

Encontrar el SHA de confirmación de Git para una confirmación de Subversion

El servidor de Subversion de GitHub muestra el sha de confirmación de Git para cada confirmación de Subversion.

Para ver el SHA de confirmación, debe solicitar la propiedad remota sin versión git-commit.

$ svn propget git-commit --revprop -r HEAD https://github.com/USER/REPO
05fcc584ed53d7b0c92e116cb7e64d198b13c4e3

Con este SHA de confirmación, puedes, por ejemplo, consultar la correspondiente confirmación Git en GitHub.