Articulo de referencia

Apache Subversion

Apache Subversion (a menudo abreviado SVN , por el nombre de su comando svn ) es un sistema de control de versiones distribuido como código abierto bajo la Licencia Apache . [ 1...

Apache Subversion (a menudo abreviado SVN , por el nombre de su comando svn ) es un sistema de control de versiones distribuido como código abierto bajo la Licencia Apache . [ 1 ] Los desarrolladores de software utilizan Subversion para mantener versiones actuales e históricas de archivos como código fuente , páginas web y documentación. Su objetivo es ser un sucesor compatible con el ampliamente utilizado Sistema de Versiones Concurrentes (CVS).

La comunidad de código abierto ha utilizado Subversion ampliamente: por ejemplo, en proyectos como Apache Software Foundation , FreeBSD , SourceForge y, de 2006 a 2019, GCC . [ 2 ] CodePlex era anteriormente un host común para repositorios de Subversion.

Subversion fue creado por CollabNet Inc. en 2000 y fue un proyecto Apache de alto nivel que fue construido y utilizado por una comunidad global de colaboradores. [ 3 ]

Historia

CollabNet fundó el proyecto Subversion en 2000 como un esfuerzo para escribir un sistema de control de versiones de código abierto que funcionara de manera muy similar a CVS , pero que corrigiera los errores y proporcionara algunas características que faltaban en CVS. [ 4 ] Para 2001, Subversion había avanzado lo suficiente como para alojar su propio código fuente , [ 4 ] y en febrero de 2004, se lanzó la versión 1.0. [ 5 ] En noviembre de 2009, Subversion fue aceptado en Apache Incubator: esto marcó el comienzo del proceso para convertirse en un proyecto Apache estándar de nivel superior. [ 6 ] Se convirtió en un proyecto Apache de nivel superior el 17 de febrero de 2010. [ 7 ]

Las fechas de lanzamiento se extraen del archivo de Apache Subversion CHANGES, [ 26 ] que registra todo el historial de lanzamientos.

Características

Tipos de repositorio

Subversion ofrece dos tipos de almacenamiento de repositorio.

Berkeley DB (obsoleto)

El desarrollo original de Subversion utilizó el paquete Berkeley DB . Subversion presenta algunas limitaciones al usar Berkeley DB cuando un programa que accede a la base de datos falla o se cierra forzosamente. No se produce pérdida ni corrupción de datos, pero el repositorio permanece fuera de línea mientras Berkeley DB reproduce el registro y libera los bloqueos pendientes. La forma más segura de usar Subversion con un repositorio Berkeley DB implica un único proceso de servidor ejecutándose como un solo usuario (en lugar de a través de un sistema de archivos compartido). [ 27 ] El backend de Berkeley DB quedó obsoleto en la versión 1.8. [ 28 ]

FSFS

En 2004, se desarrolló un nuevo subsistema de almacenamiento llamado FSFS. Funciona más rápido que el backend de Berkeley DB en directorios con gran cantidad de archivos y ocupa menos espacio en disco, debido a un menor registro de eventos. [ 27 ]

A partir de Subversion 1.2, FSFS se convirtió en el sistema de almacenamiento de datos predeterminado para los nuevos repositorios.

La etimología de "FSFS" se basa en el uso que hace Subversion del término "sistema de archivos" para referirse a su sistema de almacenamiento de repositorio. FSFS almacena su contenido directamente en el sistema de archivos del sistema operativo, en lugar de en un sistema estructurado como Berkeley DB. Por lo tanto, es un "[Sistema de archivos de Subversion] sobre el sistema de archivos".

FSX

Se está desarrollando un nuevo sistema de archivos, llamado FSX, para eliminar algunas limitaciones de FSFS. Se añadió en la versión 1.9 y no se considera listo para producción. [ 29 ] A partir de la versión 1.14, todavía se marca como experimental. [ 30 ]

Acceso al repositorio

El acceso a los repositorios de Subversion se puede realizar de la siguiente manera:

  1. Sistema de archivos local o sistema de archivos de red, [ 31 ] al que el cliente accede directamente. Este modo utiliza el esquema de acceso file:///path .
  2. WebDAV / Delta-V (a través de http o https) utilizando el módulo mod_dav_svn para Apache 2. Este modo utiliza el esquema de acceso http://host/path o https://host/path para conexiones seguras mediante ssl.
  3. Protocolo "svn" personalizado ( puerto predeterminado 3690), que utiliza texto plano o TCP/IP . Este modo utiliza el esquema de acceso svn://host/path para el transporte sin cifrar o el esquema svn+ssh://host/path para la tunelización a través de ssh.

Los tres métodos permiten acceder tanto a los repositorios FSFS como a los de Berkeley DB.

Cualquier versión 1.x de un cliente puede funcionar con cualquier servidor 1.x. Los clientes y servidores más recientes tienen características y capacidades de rendimiento adicionales, pero ofrecen compatibilidad con versiones anteriores de clientes/servidores. [ 32 ]

Capas

Internamente, un sistema Subversion se compone de varias bibliotecas organizadas en capas. Cada una realiza una tarea específica y permite a los desarrolladores crear sus propias herramientas con el nivel de complejidad y especificidad deseado.

Fs
El nivel más bajo; implementa el sistema de archivos versionado que almacena los datos del usuario.
Repositorios
Se centra en el repositorio construido alrededor del sistema de archivos. Cuenta con numerosas funciones auxiliares y gestiona los diversos "ganchos" que pueda tener un repositorio, como por ejemplo, los scripts que se ejecutan al realizar una acción. En conjunto, Fs y Repos constituyen la "interfaz del sistema de archivos".
mod_dav_svn
Proporciona acceso WebDAV /Delta-V a través de Apache 2.
Real academia de bellas artes
Gestiona el "acceso al repositorio", tanto local como remoto. A partir de este punto, se hace referencia a los repositorios mediante URL, por ejemplo:
  • file:///ruta/ para acceso local,
  • http://host/path/ o https://host/path/ para acceso WebDAV, o
  • svn://host/path/ o svn+ssh://host/path/ para el protocolo SVN.
Cliente, WC
El nivel más alto. Abstrae el acceso al repositorio y proporciona tareas comunes para el cliente, como la autenticación de usuarios o la comparación de versiones. Los clientes de Subversion utilizan la biblioteca Wc para gestionar la copia de trabajo local.

Sistema de archivos

El sistema de archivos de Subversion puede considerarse "bidimensional". [ 33 ] Se utilizan dos coordenadas para direccionar de forma inequívoca los elementos del sistema de archivos:

  • Ruta ( ruta habitual del sistema de archivos de un sistema operativo tipo Unix )
  • Revisión

En un sistema de archivos Subversion, cada revisión tiene su propia raíz , que se utiliza para acceder al contenido de dicha revisión. Los archivos se almacenan como enlaces al cambio más reciente; por lo tanto, un repositorio Subversion es bastante compacto. El sistema consume espacio de almacenamiento proporcional al número de cambios realizados, no al número de revisiones.

El sistema de archivos Subversion utiliza transacciones para garantizar la atómica de los cambios . Una transacción opera sobre una revisión específica del sistema de archivos, no necesariamente la más reciente. La transacción tiene su propia raíz , sobre la cual se realizan los cambios. Posteriormente, se confirma y se convierte en la última revisión, o se cancela. La transacción es, en realidad, un objeto del sistema de archivos de larga duración; un cliente no necesita confirmar ni cancelar una transacción por sí mismo, sino que puede iniciarla, finalizarla y luego volver a abrirla para seguir utilizándola. Potencialmente, varios clientes pueden acceder a la misma transacción y colaborar en un cambio atómico, aunque ningún cliente existente ofrece esta funcionalidad.

Propiedades

Una característica importante del sistema de archivos Subversion son las propiedades: simples pares de texto nombre = valor . La mayoría de las propiedades se encuentran en las entradas del sistema de archivos (es decir, archivos y directorios). Estas se versionan al igual que otros cambios en el sistema de archivos. El cliente Subversion reserva el prefijo 'svn:' para las propiedades integradas, pero se pueden usar otros nombres para definir propiedades personalizadas.

svn:ejecutable
Hace que un archivo en copias de trabajo alojadas en Unix sea ejecutable, cuando el sistema de archivos lo permite.
svn:tipo-mime
Almacena el tipo de medio de Internet ("tipo MIME") de un archivo. Afecta al manejo de diferencias y fusiones.
svn:ignorar
Una lista de patrones de nombres de archivo que se deben ignorar en un directorio. Similar al archivo de CVS.cvsignore .
svn:palabras clave
Una lista de palabras clave para sustituir en un archivo cuando se realicen cambios. El archivo en sí también debe hacer referencia a las palabras clave como $keyword$ o $keyword:...$ . Esto se utiliza para mantener cierta información (por ejemplo, autor, fecha del último cambio, número de revisión) en un archivo sin intervención humana. El mecanismo de sustitución de palabras clave tiene su origen en RCS y CVS. [ 34 ]
svn:eol-style
Permite que el cliente convierta los caracteres de fin de línea en los archivos de texto. Se utiliza cuando se necesita una copia de trabajo con un estilo de fin de línea específico. Se suele usar "nativo" para que los caracteres de fin de línea coincidan con el estilo del sistema operativo del usuario. Los repositorios pueden requerir esta propiedad en todos los archivos para evitar finales de línea inconsistentes, lo que puede generar problemas.
svn:externals
Permite extraer automáticamente partes de otros repositorios a un subdirectorio.
svn:necesita-bloqueo
Especifica que un archivo se extraerá con permisos de solo lectura. Esto está diseñado para usarse con el mecanismo de bloqueo. El permiso de solo lectura recuerda que se debe obtener un bloqueo antes de modificar el archivo: al obtener un bloqueo, el archivo se vuelve editable, y al liberarlo, vuelve a ser de solo lectura. Los bloqueos solo se aplican durante una operación de confirmación. Se pueden usar bloqueos sin configurar esta propiedad. Sin embargo, no se recomienda, ya que introduce el riesgo de que alguien modifique un archivo bloqueado; solo descubrirá que está bloqueado cuando falle la confirmación.
svn:special
Esta propiedad no está destinada a ser configurada o modificada directamente por los usuarios. A partir de 2010Se utiliza únicamente para crear enlaces simbólicos en el repositorio. Al agregar un enlace simbólico al repositorio, se crea un archivo con el destino del enlace y esta propiedad activada. Cuando un sistema tipo Unix extrae este archivo, el cliente lo convierte en un enlace simbólico.
svn:mergeinfo
Se utiliza para realizar un seguimiento de los datos de fusión (números de revisión) en Subversion 1.5 (o posterior). Esta propiedad se mantiene automáticamente mediante el comando merge , y no se recomienda cambiar su valor manualmente. [ 35 ]

Subversion también utiliza propiedades en las revisiones. Al igual que las propiedades mencionadas anteriormente en las entradas del sistema de archivos, los nombres son completamente arbitrarios, y el cliente Subversion utiliza ciertas propiedades con el prefijo 'svn:'. Sin embargo, estas propiedades no tienen versiones y pueden modificarse posteriormente si lo permite un gancho pre-revprop-change. [ 36 ]

svn:fecha
La fecha y hora de una revisión.
svn:autor
El nombre del usuario que envió el/los cambio(s).
svn:log
Descripción del/los cambio(s) proporcionada por el usuario.

Ramificación y etiquetado

Subversion utiliza el modelo de ramificación entre archivos de Perforce [ 37 ] para implementar ramas y etiquetas . Una rama es una línea de desarrollo independiente. [ 38 ] El etiquetado consiste en etiquetar el repositorio en un momento determinado para que pueda encontrarse fácilmente en el futuro. En Subversion, la única diferencia entre ramas y etiquetas radica en su uso.

Se crea una nueva rama o etiqueta mediante el comando " svn copy ", que debe utilizarse en lugar del mecanismo nativo del sistema operativo. El directorio copiado se vincula al original en el repositorio para preservar su historial, y la copia ocupa muy poco espacio adicional en el repositorio.

Todas las versiones de cada rama conservan el historial del archivo hasta el momento de la copia, además de cualquier cambio realizado desde entonces. Se pueden fusionar los cambios con la rama principal o entre ramas.

texto alternativo
Visualización de un proyecto Subversion simple

Limitaciones y problemas

Un problema conocido en Subversion afecta la implementación de la operación de renombrar archivos y directorios. A partir de 2014Subversion implementa el cambio de nombre de archivos y directorios como una "copia" al nuevo nombre seguida de una "eliminación" del nombre anterior. Solo cambian los nombres, todos los datos relacionados con el historial de edición permanecen iguales, y Subversion seguirá utilizando el nombre anterior en revisiones anteriores del "árbol". Sin embargo, Subversion puede confundirse cuando un movimiento entra en conflicto con ediciones realizadas en otro lugar, [ 39 ] tanto para confirmaciones regulares como al fusionar ramas. [ 40 ] La versión Subversion 1.5 abordó algunos de estos escenarios, mientras que otros siguieron siendo problemáticos. [ 41 ] La versión Subversion 1.8 abordó algunos de estos problemas al hacer que los movimientos fueran una operación de primera clase en el cliente, pero aún se trata como copiar+eliminar en el repositorio. [ 42 ]

A partir de 2013Subversion carece de algunas funciones de administración y gestión de repositorios. Por ejemplo, alguien podría querer editar el repositorio para eliminar permanentemente todos los registros históricos de ciertos datos. Subversion no cuenta con soporte integrado para lograr esto fácilmente. [ 43 ]

Subversion almacena copias adicionales de datos en la máquina local, lo que puede convertirse en un problema con proyectos o archivos muy grandes, o si los desarrolladores trabajan en varias ramas simultáneamente. En versiones anteriores a la 1.7, estos .svndirectorios en el lado del cliente podían corromperse por actividades de usuario imprudentes, como operaciones globales de búsqueda y reemplazo. [ 44 ] A partir de la versión 1.7, Subversion utiliza una única carpeta .svn centralizada por área de trabajo. [ 45 ]

Subversion no almacena las fechas de modificación de los archivos. Por lo tanto, un archivo extraído de un repositorio Subversion tendrá la fecha actual (en lugar de la fecha de modificación en el repositorio), y un archivo incorporado al repositorio tendrá la fecha de incorporación (en lugar de la fecha de modificación del archivo incorporado). Esto no siempre es lo que se desea. [ 46 ] Para mitigar esto, existen herramientas de terceros que permiten conservar la fecha de modificación y otros metadatos del sistema de archivos. [ 47 ] [ 48 ] Sin embargo, también es importante que los archivos extraídos tengan una fecha actual; así es como herramientas como make(1) detectarán un archivo modificado para reconstruirlo.

Subversion utiliza un modelo de control de versiones centralizado. Ben Collins-Sussman , uno de los diseñadores de Subversion, cree que un modelo centralizado ayudaría a evitar que los "programadores inseguros" oculten su trabajo a otros miembros del equipo durante el desarrollo. [ 49 ] Algunos usuarios de sistemas de control de versiones consideran que el modelo centralizado es perjudicial; de hecho, Linus Torvalds criticó duramente el modelo de Subversion y a sus desarrolladores. [ 50 ]

Subversion a menudo no maneja bien la normalización de nombres de archivo que realiza el sistema de archivos HFS+ . Esto puede causar problemas cuando se agregan al repositorio archivos con caracteres acentuados en sus nombres en un sistema de archivos que no sea HFS+ y luego se usa el repositorio con HFS+. [ 51 ]

Etiquetas y ramas de Subversion

Los números de revisión son difíciles de recordar en cualquier sistema de control de versiones. Por esta razón, la mayoría de los sistemas ofrecen etiquetas simbólicas como referencias fáciles de usar. Subversion no tiene esta característica y lo que su documentación recomienda usar en su lugar es de naturaleza muy diferente. En lugar de implementar etiquetas como referencias a puntos en el historial, Subversion recomienda hacer copias instantáneas en un subdirectorio conocido (" tags/") en el espacio del árbol del repositorio. Solo hay disponibles algunas referenciasHEAD predefinidas: , BASE, PREVy COMMITTED.

Esta proyección de la historia al espacio presenta múltiples problemas:

  1. Cuando se toma una instantánea, el sistema no asigna ningún significado especial al nombre de la etiqueta/instantánea. Esta es la diferencia entre una copia y una referencia . La revisión se registra y se puede acceder a la instantánea mediante una URL. Esto hace que algunas operaciones sean menos convenientes y otras imposibles. Por ejemplo, una simple svn diff -r tag1:tag2 myfileno funciona; es un poco más complicado lograrla, ya que requiere que el usuario conozca e ingrese las URL/rutas a las instantáneas en lugar de solo los nombres: svn diff <URL-TO-TAG1>/myfile <URL-TO-TAG2>/myfile. Otras operaciones, como por ejemplo , svn log -r tag1:tag2 myfileson simplemente imposibles.
  2. Cuando dos tipos de objetos (idealmente independientes) coexisten en el árbol del repositorio, puede producirse una "lucha por el liderazgo". En otras palabras, a menudo resulta difícil decidir en qué nivel crear el tags/subdirectorio:
  3. Las etiquetas, según su definición convencional, son de solo lectura y ligeras tanto en el repositorio como en el cliente. Las copias de Subversion no son de solo lectura y, si bien son ligeras en el repositorio, son increíblemente pesadas en el cliente.

Para abordar estos problemas, los usuarios de las listas de correo de Subversion han sugerido una nueva función llamada "etiquetas" o "alias". [ 52 ] Las etiquetas de SVN se asemejarían más a las "etiquetas" de otros sistemas como CVS o Git . El hecho de que Subversion tenga números de revisión globales abre el camino a una implementación muy simple de etiqueta → revisión. Sin embargo, a fecha de 2013, no se ha avanzado y las etiquetas simbólicas no figuran entre las funciones más solicitadas. [ 53 ]

Desarrollo e implementación

CollabNet ha continuado su participación en Subversion, pero el proyecto funciona como una comunidad de código abierto independiente. En noviembre de 2009, el proyecto fue aceptado en la Incubadora de Apache, con el objetivo de formar parte de los esfuerzos de la Fundación de Software Apache . [ 54 ] Desde marzo de 2010, el proyecto se conoce formalmente como Apache Subversion y forma parte de los Proyectos de Nivel Superior de Apache. [ 55 ]

En octubre de 2009, WANdisco anunció la contratación de colaboradores clave de Subversion, al tiempo que la empresa se convertía en un importante patrocinador corporativo del proyecto. Entre ellos se encontraba Hyrum Wright, presidente de Subversion Corporation y director de lanzamientos del proyecto Subversion desde principios de 2008, quien se unió a la empresa para liderar su equipo de código abierto. [ 56 ]

La comunidad de código abierto de Subversion no proporciona binarios, pero los usuarios potenciales pueden descargarlos de voluntarios. [ 57 ] Si bien el proyecto Subversion no incluye una interfaz gráfica de usuario (GUI) oficial para usar con Subversion, terceros han desarrollado varias GUI diferentes, junto con una amplia variedad de software auxiliar adicional.

Entre los trabajos anunciados en 2009 se incluían SubversionJ (una API de Java ) y la implementación del comando Obliterate, similar al proporcionado por Perforce . Ambas mejoras fueron patrocinadas por WANdisco. [ 58 ]

Los desarrolladores de Subversion suelen tener al menos una o dos nuevas funcionalidades en desarrollo activo en cualquier momento. La versión 1.7 de Subversion, lanzada en octubre de 2011, incluyó un transporte HTTP optimizado para mejorar el rendimiento y una biblioteca de copia de trabajo reescrita. [ 59 ]

En 2002 se celebró un concurso de diseño para seleccionar el logotipo de Subversion. Aquí se pueden consultar las propuestas originales, así como los votos para cada logotipo.

Véase también

Notas

  1. Apache-2.0 desde el 07/07/2009.

Referencias

Notas a pie de página

  1. "Subversión" . directory.fsf.org . Directorio de Software Libre . 2020. Consultado el 3 de octubre de 2023 .
  2. "GitConversion – GCC Wiki" . Proyecto GNU - GCC Wiki . Proyecto GNU. 23-10-2019 . Consultado el 04-11-2025 .{{cite web}}: CS1 mantenimiento: estado de la URL ( enlace )
  3. "La Fundación de Software Apache anuncia el 20.º aniversario de Apache Subversion" . Sala de prensa de GlobeNewswire (Comunicado de prensa). 27 de febrero de 2020. Consultado el 29 de enero de 2023 .
  4. 1 2 Collins-Sussman, Ben; Brian W. Fitzpatrick; C. Michael Pilato (2011). "¿Qué es Subversion? > Historia de Subversion" . Control de versiones con Subversion (para Subversion 1.7) . Recuperado el 15 de marzo de 2012 .
  5. Benjamin Zeiss (2004). "Se lanza Subversion 1.0" . Linux Weekly News . Consultado el 30 de marzo de 2014 .
  6. Rubinstein, David (4 de noviembre de 2009). "Subversion se une a Apache" . SD Times. Archivado del original el 11 de noviembre de 2009. Consultado el 15 de marzo de 2012 .
  7. "Subversion ahora es Apache Subversion" . 18 de febrero de 2010. Archivado del original el 12 de mayo de 2011. Consultado el 15 de marzo de 2012 .
  8. "Notas de la versión de Subversion 1.1" . Consultado el 21 de septiembre de 2015 .
  9. "Notas de la versión de Subversion 1.2" . Consultado el 21 de septiembre de 2015 .
  10. "Notas de la versión 1.3 de Subversion" . Consultado el 21 de septiembre de 2015 .
  11. "Notas de la versión 1.4 de Subversion" . Consultado el 21 de septiembre de 2015 .
  12. "Notas de la versión de Subversion 1.5" . Consultado el 21 de septiembre de 2015 .
  13. "Notas de la versión 1.6 de Apache Subversion" . Consultado el 21 de septiembre de 2015 .
  14. "Notas de la versión 1.7 de Apache Subversion" . Consultado el 21 de septiembre de 2015 .
  15. "Notas de la versión 1.8 de Apache Subversion" . Consultado el 21 de septiembre de 2015 .
  16. "Notas de la versión 1.9 de Apache Subversion" . Consultado el 21 de septiembre de 2015 .
  17. "Notas de la versión 1.10 de Apache Subversion" . Consultado el 17 de abril de 2018 .
  18. "Notas de la versión 1.11 de Apache Subversion" . Consultado el 31 de octubre de 2018 .
  19. "Notas de la versión 1.12 de Apache Subversion" . Consultado el 1 de mayo de 2019 .
  20. "Notas de la versión 1.13 de Apache Subversion" . Consultado el 1 de abril de 2026 .
  21. "Notas de la versión LTS de Apache Subversion 1.14" . subversion.apache.org . Consultado el 2 de junio de 2020 .
  22. El equipo de Subversion. "Archivos de noticias de Apache Subversion" . subversion.apache.org . La Fundación de Software Apache . Consultado el 20 de diciembre de 2024 .
  23. Sahlberg, Daniel (2024-12-08). "Anuncio de lanzamiento – [ SEGURIDAD ] [ ANUNCIO ] Apache Subversion 1.14.5 lanzado" . lists.apache.org . Lista de correo de usuarios de Subversion. La Fundación de Software Apache . Recuperado el 2024-12-08 .
  24. El equipo de Subversion (08/10/2024). "Registro de cambios para la versión 1.14.5 y anteriores" . Apache Subversion . La Fundación de Software Apache . Recuperado el 20/12/2024 .
  25. "Notas de la versión 1.15 de Apache Subversion" . Apache Software Foundation . Consultado el 13 de mayo de 2026 .
  26. "Archivo CHANGES de Apache Subversion" . Consultado el 31 de octubre de 2018 .
  27. 1 2 Ben Collins-Sussman; Brian W. Fitzpatrick; C. Michael Pilato (2011). "Capítulo 5: Estrategias para la implementación de repositorios". Control de versiones con Subversion: Para Subversion 1.7 . O'Reilly.
  28. "Notas de la versión 1.8 de Apache Subversion" . Proyecto Apache . Consultado el 5 de mayo de 2020 .
  29. "Notas de la versión 1.9 de Apache Subversion" . Consultado el 1 de abril de 2026 .
  30. "Subversion: Backends integrados" . Consultado el 25/07/2025 . #define SVN_FS_TYPE_FSX "fsx" Backend de sistema de archivos EXPERIMENTAL. No está listo para su uso general en producción. Consulte las notas de la versión correspondiente para conocer los escenarios de uso sugeridos.
  31. Berkeley DB depende del bloqueo de archivos y, por lo tanto, no debe usarse en sistemas de archivos (de red) que no los implementen.
  32. Notas de la versión 1.5 de SVN
  33. Fusión básica
  34. "rcs(1)" . Páginas del manual de OpenBSD . Consultado el 1 de abril de 2026 .
  35. Propiedades de subversión
  36. cambio de propulsión previa
  37. Ramificación entre archivos: un método práctico para representar variantes. Archivado el 14 de julio de 2007 en Wayback Machine.
  38. Ramificación / Etiquetado — TortoiseSVN
  39. "Implementar cambios de nombre reales" . Archivado del original el 1 de diciembre de 2002. Consultado el 11 de mayo de 2007 .
  40. Fusión avanzada
  41. Mejoras relacionadas con copiar/mover en Subversion 1.5
  42. Los registros de copia de trabajo se mueven como una operación de primera clase en Subversion 1.8
  43. " [ SVN-516 ] svn obliterate" . Consultado el 04-09-2023 .
  44. "Subclipse - Reparar suma de verificación SVN" . Consultado el 1 de abril de 2026 .
  45. Mejoras en el almacenamiento de metadatos de la copia de trabajo (cliente)
  46. " [ SVN-1256 ] Capacidad para conservar la hora de última modificación (mtime) de los archivos bajo control de versiones" . Consultado el 4 de septiembre de 2023 .
  47. FreezeAttrib (guarda/restaura los atributos del archivo usando propiedades)
  48. fsvs – Sistema completo de control de versiones del sistema en GitHub
  49. Inseguridad del programador en iBanjo
  50. Vídeo de Google Tech Talk y su transcripción
  51. " [ SVN-2464 ] Canonizar / stringprep nombres de archivo UTF-8 para manejar diferencias compuestas / descompuestas mostradas por ej Mac OS X HFS+" . Recuperado el 04-09-2023 .
  52. Por ejemplo: Weintraub, David (23 de mayo de 2005). "Subversion 'labels' vs. 'tags'" . SVN Dev (Lista de correo) . Consultado el 5 de mayo de 2020 .
  53. "Hoja de ruta de Apache Subversion" . Proyecto Apache . Consultado el 5 de mayo de 2020 .
  54. "Subversion se presenta para convertirse en un proyecto de la Apache Software Foundation" . 4 de noviembre de 2009. Consultado el 1 de octubre de 2019 .
  55. "CollabNet apoya la graduación de Subversion a proyecto de nivel superior de Apache" . CollabNet. 1 de marzo de 2010. Archivado del original el 11 de marzo de 2010. Consultado el 1 de abril de 2026 .
  56. WANdisco (7 de enero de 2010). "WANdisco nombra a Hyrum Wright para liderar los esfuerzos de código abierto de Subversion" . Comunicado de prensa . Revista Open Source. Archivado del original el 18 de enero de 2012. Consultado el 29 de octubre de 2011 .
  57. "Paquetes binarios de Apache Subversion" . Sitio web oficial del proyecto . Consultado el 29 de octubre de 2011 .
  58. WANdisco (28 de octubre de 2009). "WANdisco presenta nuevas iniciativas para el proyecto de código abierto Subversion" . Comunicado de prensa . CM Crossroads. Archivado del original el 18 de noviembre de 2011. Consultado el 29 de octubre de 2011 .
  59. "Hoja de ruta de Apache Subversion" . Sitio web oficial del proyecto . Consultado el 29 de octubre de 2011 .

Fuentes

  • C. Michael Pilato, Ben Collins-Sussman, Brian W. Fitzpatrick; Control de versiones con Subversion ; O'Reilly; ISBN 0-596-00448-6(1.ª edición, rústica, 2004, libro completo en línea , enlace alternativo )
  • Garrett Rooney; Subversión práctica ; Apress; ISBN 1-59059-290-5(1.ª edición, rústica, 2005)
  • Mike Mason; Control de versiones pragmático con Subversion ; Estantería pragmática; ISBN 0-9745140-6-3(1.ª edición, rústica, 2005)
  • William Nagel; Control de versiones Subversion: Uso del sistema de control de versiones Subversion en proyectos de desarrollo ; Prentice Hall; ISBN 0-13-185518-2(1.ª edición, rústica, 2005)

Lecturas adicionales

  • Desmintiendo los mitos sobre Subversion por Ben Collins-Sussman (desarrollador de Subversion), enlace roto desde el 07/03/2013 ( versión capturada por Internet Archive.org Wayback Machine el 18/07/2011 , "última actualización" 21/12/2004).
  • Sitio web oficialEdita esto en Wikidata
Obtenido de " https://en.wikipedia.org/w/index.php?title=Apache_Subversion&oldid=1357638410 "