Subversion fue creado por CollabNet Inc. en 2000 y ahora es un proyecto Apache de alto nivel que está siendo desarrollado y utilizado por una comunidad global de colaboradores. [2]
Historia
CollabNet fundó el proyecto Subversion en 2000 como un esfuerzo por escribir un sistema de control de versiones de código abierto que funcionara de forma muy similar a CVS pero que corrigiera los errores y proporcionara algunas características que faltaban en CVS. [3] Para 2001, Subversion había avanzado lo suficiente como para albergar su propio código fuente , [3] y en febrero de 2004, se lanzó la versión 1.0. [4] En noviembre de 2009, Subversion fue aceptado en Apache Incubator: esto marcó el comienzo del proceso para convertirse en un proyecto Apache de nivel superior estándar. [5] Se convirtió en un proyecto Apache de nivel superior el 17 de febrero de 2010. [6]
Las fechas de lanzamiento se extraen del CHANGESarchivo de Apache Subversion, [24] que registra todo el historial de lanzamiento.
Características
Se confirma como una verdadera operación atómica (las operaciones de confirmación interrumpidas en CVS podrían causar inconsistencia o corrupción en el repositorio).
El sistema mantiene el control de versiones de los directorios y de algunos metadatos de archivos específicos (consulte Propiedades). Los usuarios pueden mover o copiar archivos y árboles de directorios completos muy rápidamente, mientras conservan el historial de revisiones completo (tal como se implementa mediante una referencia al objeto original).
Compatibilidad total con MIME : los usuarios pueden ver o cambiar el tipo MIME de cada archivo y el software sabe qué tipos MIME pueden tener sus diferencias con respecto a versiones anteriores.
Seguimiento de fusiones: se realizará un seguimiento de las fusiones entre ramas, lo que permite la fusión automática entre ramas sin indicarle a Subversion qué necesita fusionarse y qué no.
Listas de cambios para organizar las confirmaciones en grupos de confirmaciones.
Tipos de repositorio
Subversion ofrece dos tipos de almacenamiento de repositorio.
Berkeley DB (en desuso)
El desarrollo original de Subversion utilizaba el paquete Berkeley DB . Subversion tiene algunas limitaciones con el uso de Berkeley DB cuando un programa que accede a la base de datos falla o finaliza de manera forzada. No se produce pérdida ni corrupción de datos, pero el repositorio permanece fuera de línea mientras Berkeley DB reproduce el diario y limpia los bloqueos pendientes. La forma más segura de usar Subversion con un repositorio Berkeley DB implica un único proceso de servidor que se ejecuta como un usuario (en lugar de a través de un sistema de archivos compartido). [25] El backend de Berkeley DB quedó obsoleto en la versión 1.8. [26]
FSFS
En 2004, se desarrolló un nuevo subsistema de almacenamiento, denominado FSFS. Funciona más rápido que el backend de Berkeley DB en directorios con una gran cantidad de archivos y ocupa menos espacio en disco, debido a que se registran menos datos. [25]
A partir de Subversion 1.2, FSFS se convirtió en el almacén 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 repositorios. FSFS almacena su contenido directamente dentro del sistema de archivos del sistema operativo, en lugar de hacerlo 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. A partir de la versión 1.9, no se consideró que estuviera listo para producción. [27]
Acceso al repositorio
El acceso a los repositorios de Subversion se puede realizar mediante:
Sistema de archivos local o sistema de archivos de red, [28] al que accede directamente el cliente. Este modo utiliza el esquema de acceso file:///path .
WebDAV /Delta-V (sobre 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.
Protocolo "svn" personalizado ( puerto predeterminado 3690), que utiliza texto simple o TCP/IP . Este modo utiliza el esquema de acceso svn://host/path para transporte no cifrado o el esquema svn+ssh://host/path para tunelización a través de ssh.
Los tres medios pueden acceder a los repositorios FSFS y Berkeley DB.
Cualquier versión 1.x de un cliente puede funcionar con cualquier servidor 1.x. Los clientes y servidores más nuevos tienen características y capacidades de rendimiento adicionales, pero tienen soporte de respaldo para clientes y servidores más antiguos. [29]
Capas
En su interior, un sistema Subversion consta de varias bibliotecas organizadas en capas. Cada una de ellas 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 ocupa del repositorio creado alrededor del sistema de archivos. Tiene muchas funciones auxiliares y maneja los diversos "ganchos" que puede tener un repositorio, por ejemplo, scripts que se ejecutan cuando se realiza una acción. Juntos, 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
Maneja el "acceso al repositorio", tanto local como remoto. A partir de este punto, se hace referencia a los repositorios mediante URL, por ejemplo
file:///path/ 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 administrar la copia de trabajo local.
Sistema de archivos
El sistema de archivos de Subversion puede considerarse "bidimensional". [30] Se utilizan dos coordenadas para abordar de forma inequívoca los elementos del sistema de archivos:
Cada revisión de un sistema de archivos de Subversion tiene su propia raíz , que se utiliza para acceder al contenido de esa revisión. Los archivos se almacenan como enlaces al cambio más reciente; por lo tanto, un repositorio de Subversion es bastante compacto. El sistema consume espacio de almacenamiento proporcional a la cantidad de cambios realizados, no a la cantidad de revisiones.
El sistema de archivos de Subversion utiliza transacciones para mantener los cambios atómicos . Una transacción opera en una revisión específica del sistema de archivos, no necesariamente la más reciente. La transacción tiene su propia raíz , en la que se realizan los cambios. Luego, se confirma y se convierte en la última revisión, o se cancela. La transacción es en realidad un objeto de sistema de archivos de larga duración; un cliente no necesita confirmar o cancelar una transacción por sí mismo, sino que también puede comenzar una transacción, salir y luego volver a abrir la transacción y continuar usándola. Potencialmente, varios clientes pueden acceder a la misma transacción y trabajar juntos en un cambio atómico, aunque ningún cliente existente expone esta capacidad.
Propiedades
Una característica importante del sistema de archivos de Subversion son las propiedades: pares de texto simples nombre = valor . La mayoría de las propiedades se encuentran en las entradas del sistema de archivos (es decir, archivos y directorios). Estas propiedades tienen versiones, al igual que otros cambios en el sistema de archivos. El cliente de 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 el manejo de diferencias y fusiones.
svn:ignorar
Lista de patrones de nombres de archivos que se deben ignorar en un directorio. Similar al archivo de CVS.cvsignore .
svn:palabras clave
Una lista de palabras clave que se deben sustituir en un archivo cuando se realizan 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 se origina en RCS y en CVS. [31]
svn:estilo eol
Hace que el cliente convierta los caracteres de fin de línea en archivos de texto. Se utiliza cuando se necesita la copia de trabajo con un estilo de fin de línea específico. Se utiliza comúnmente "nativo", de modo que los fin de línea coincidan con el estilo de fin de línea 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 causar un problema en sí mismo.
svn:externos
Permite que partes de otros repositorios se extraigan automáticamente en un subdirectorio.
svn:necesita bloqueo
Especifica que se debe extraer un archivo con los permisos de archivo establecidos en 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: obtener un bloqueo hace que el archivo sea escribible y liberar el bloqueo lo hace nuevamente de solo lectura. Los bloqueos solo se aplican durante una operación de confirmación. Los bloqueos se pueden usar sin establecer esta propiedad. Sin embargo, no se recomienda, porque introduce el riesgo de que alguien modifique un archivo bloqueado; solo descubrirán que se ha bloqueado cuando su confirmación falle.
svn:especial
Esta propiedad no está destinada a ser configurada o modificada directamente por los usuarios. A partir de 2010 , [actualizar]solo se utiliza para tener enlaces simbólicos en el repositorio. Cuando se agrega un enlace simbólico al repositorio, se crea un archivo que contiene el destino del enlace con esta propiedad configurada. Cuando un sistema tipo Unix extrae este archivo, el cliente lo convierte en un enlace simbólico.
svn:información de fusión
Se utiliza para realizar un seguimiento de los datos fusionados (números de revisión) en Subversion 1.5 (o posterior). Esta propiedad se mantiene automáticamente mediante el comando de fusión y no se recomienda cambiar su valor manualmente. [32]
Subversion también utiliza propiedades en las propias revisiones. Al igual que las propiedades anteriores 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 más adelante si lo permite un gancho pre-revprop-change. [33]
svn: fecha
La fecha y la hora de una revisión.
svn:autor
El nombre del usuario que envió el(los) cambio(s).
svn:registro
La descripción de los cambios proporcionada por el usuario.
Ramificación y etiquetado
Subversion utiliza el modelo de ramificación entre archivos de Perforce [34] para implementar ramas y etiquetas . Una rama es una línea de desarrollo independiente. [35] Las etiquetas se refieren a etiquetar el repositorio en un momento determinado para que se pueda encontrar fácilmente en el futuro. En Subversion, la única diferencia entre ramas y etiquetas es cómo se utilizan.
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 mantienen el historial del archivo hasta el momento de la copia, además de los cambios realizados desde entonces. Se pueden "fusionar" los cambios en el tronco o entre ramas.
Visualización de un proyecto sencillo de Subversion
Limitaciones y problemas
Un problema conocido en Subversion afecta la implementación de la operación de renombramiento de archivos y directorios. A partir de 2014 [actualizar], Subversion implementa el renombramiento 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á usando 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, [36] tanto para confirmaciones regulares como al fusionar ramas. [37] La versión Subversion 1.5 abordó algunos de estos escenarios mientras que otros siguieron siendo problemáticos. [38] La versión Subversion 1.8 abordó algunos de estos problemas al hacer que los movimientos sean una operación de primera clase en el cliente, pero aún se trata como copia + eliminación en el repositorio. [39]
A partir de 2013 [actualizar], Subversion carece de algunas funciones de administración y gestión de repositorios. Por ejemplo, alguien puede desear editar el repositorio para eliminar permanentemente todos los registros históricos de ciertos datos. Subversion no tiene soporte integrado para lograr esto de manera sencilla. [40]
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 del lado del cliente podían corromperse debido a una actividad desacertada del usuario, como operaciones de búsqueda y reemplazo globales. [41] A partir de la versión 1.7, Subversion utiliza una única carpeta .svn centralizada por área de trabajo. [42]
Subversion no almacena las horas de modificación de los archivos. Por lo tanto, un archivo extraído de un repositorio de Subversion tendrá la fecha "actual" (en lugar de la hora de modificación en el repositorio), y un archivo ingresado en el repositorio tendrá la fecha del check-in (en lugar de la hora de modificación del archivo que se ingresa). Esto puede no ser siempre lo que se desea. [43]
Para mitigar esto, existen herramientas de terceros que permiten preservar la hora de modificación y otros metadatos del sistema de archivos. [44] [45]
Sin embargo, también es importante dar a los archivos extraídos una fecha actual: así es como herramientas como make(1) tomarán nota de 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" escondieran su trabajo a otros miembros del equipo durante el desarrollo. [46] Algunos usuarios de sistemas de control de versiones ven el modelo centralizado como perjudicial; es famoso el caso de Linus Torvalds que atacó el modelo de Subversion y a sus desarrolladores. [47]
A menudo, Subversion no se adapta bien a la normalización de nombres de archivo que realiza el sistema de archivos HFS+ . Esto puede causar problemas cuando se agregan archivos con caracteres acentuados en sus nombres al repositorio en un sistema de archivos que no es HFS+ y luego el repositorio se usa con HFS+. [48]
Etiquetas y ramas de Subversion
Los números de revisión son difíciles de recordar en cualquier sistema de control de versiones. Por este motivo, la mayoría de los sistemas ofrecen etiquetas simbólicas como referencias fáciles de usar a ellos. Subversion no tiene esa característica y lo que su documentación recomienda utilizar en su lugar es de naturaleza muy diferente. En lugar de implementar etiquetas como referencias a puntos del historial, Subversion recomienda hacer copias instantáneas en un subdirectorio conocido (" tags/") en el espacio del árbol del repositorio. Solo hay disponibles unas pocas referenciasHEAD predefinidas: , BASE, PREVy COMMITTED.
Esta proyección de la historia al espacio tiene múltiples problemas:
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 URL. Esto hace que algunas operaciones sean menos convenientes y otras imposibles. Por ejemplo, una operación ingenua svn diff -r tag1:tag2 myfileno funciona; es un poco más complicado de lograr que eso, ya que requiere que el usuario conozca e ingrese la 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.
Cuando dos tipos de objetos (idealmente independientes) conviven en el árbol del repositorio, puede surgir una "lucha por llegar a la cima". En otras palabras, suele ser difícil decidir en qué nivel crear el tags/subdirectorio:
Las etiquetas, según su definición convencional, son de solo lectura y de peso ligero, tanto en el repositorio como en el cliente. Las copias de Subversion no son de solo lectura y, si bien son de peso ligero 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 característica llamada "etiquetas" o "alias". [49] Las etiquetas de SVN se parecerí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 logrado ningún progreso y las etiquetas simbólicas no están en la lista de las características más solicitadas. [50]
Desarrollo e implementación
CollabNet ha continuado su participación en Subversion, pero el proyecto funciona como una comunidad independiente de código abierto. En noviembre de 2009, el proyecto fue aceptado en la Incubadora Apache, con el objetivo de convertirse en parte de los esfuerzos de la Apache Software Foundation . [51] Desde marzo de 2010, el proyecto se conoce formalmente como Apache Subversion, y es parte de los Proyectos de Nivel Superior de Apache. [52]
En octubre de 2009, WANdisco anunció la contratación de los principales colaboradores de Subversion, ya que la empresa se disponía a convertirse en uno de los principales patrocinadores corporativos del proyecto. Entre ellos se encontraba Hyrum Wright, presidente de Subversion Corporation y director de versiones del proyecto Subversion desde principios de 2008, que se unió a la empresa para dirigir su equipo de código abierto. [53]
La comunidad de código abierto de Subversion no proporciona binarios, pero los usuarios potenciales pueden descargar binarios de voluntarios. [54] 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.
El trabajo anunciado en 2009 incluía SubversionJ (una API de Java ) y la implementación del comando Obliterate, similar al que proporciona Perforce . Ambas mejoras fueron patrocinadas por WANdisco. [55]
Los desarrolladores de Subversion normalmente tienen al menos una o dos nuevas características en desarrollo activo en cualquier momento. La versión 1.7 de Subversion en octubre de 2011 incluyó un transporte HTTP optimizado para mejorar el rendimiento y una biblioteca de copia de trabajo reescrita. [56]
En 2002 se realizó un concurso de diseño para seleccionar el logotipo de Subversion. Los diseños originales y los votos para cada logotipo se pueden consultar aquí. El logotipo actual fue el que recibió más votos en el concurso.
^ "La Apache Software Foundation anuncia el 20º aniversario de Apache Subversion". Sala de prensa de GlobeNewswire (nota de prensa). 2020-02-27 . Consultado el 2023-01-29 .
^ ab Collins-Sussman, Ben; Brian W. Fitzpatrick; C. Michael Pilato (2011). "What is Subversion? > Subversion's History". Control de versiones con Subversion (para Subversion 1.7) . Consultado el 15 de marzo de 2012 .
^ Benjamin Zeiss (2004). "Se lanza Subversion 1.0". Linux Weekly News . Consultado el 30 de marzo de 2014 .
^ Rubinstein, David (4 de noviembre de 2009). «Subversion une fuerzas con Apache». SD Times. Archivado desde el original el 11 de noviembre de 2009. Consultado el 15 de marzo de 2012 .
^ "Subversion ahora es Apache Subversion". 18 de febrero de 2010. Archivado desde el original el 12 de mayo de 2011. Consultado el 15 de marzo de 2012 .
^ "Notas de la versión de Subversion 1.1" . Consultado el 21 de septiembre de 2015 .
^ "Notas de la versión de Subversion 1.2" . Consultado el 21 de septiembre de 2015 .
^ "Notas de la versión de Subversion 1.3" . Consultado el 21 de septiembre de 2015 .
^ "Notas de la versión de Subversion 1.4" . Consultado el 21 de septiembre de 2015 .
^ "Notas de la versión de Subversion 1.5" . Consultado el 21 de septiembre de 2015 .
^ "Notas de la versión de Apache Subversion 1.6" . Consultado el 21 de septiembre de 2015 .
^ "Notas de la versión de Apache Subversion 1.7" . Consultado el 21 de septiembre de 2015 .
^ "Notas de la versión de Apache Subversion 1.8" . Consultado el 21 de septiembre de 2015 .
^ "Notas de la versión de Apache Subversion 1.9" . Consultado el 21 de septiembre de 2015 .
^ "Notas de la versión de Apache Subversion 1.10" . Consultado el 17 de abril de 2018 .
^ "Notas de la versión de Apache Subversion 1.11" . Consultado el 31 de octubre de 2018 .
^ "Notas de la versión de Apache Subversion 1.12" . Consultado el 1 de mayo de 2019 .
^ "Notas de la versión de Apache Subversion 1.13".
^ "Notas de la versión Apache Subversion 1.14 LTS". subversion.apache.org . Consultado el 2 de junio de 2020 .
^ El equipo de Subversion. «Archivos de noticias de Apache Subversion». subversion.apache.org . The Apache Software Foundation . Consultado el 15 de octubre de 2024 .
^ Sperling, Stefan (8 de octubre de 2024). "Anuncio de lanzamiento: [SEGURIDAD] [ANUNCIO] Apache Subversion 1.14.4 lanzado". lists.apache.org . Lista de correo de usuarios de Subversion. The Apache Software Foundation . Consultado el 15 de octubre de 2024 .
^ El equipo de Subversion (8 de octubre de 2024). «Registro de cambios para la versión 1.14.4 y anteriores». Apache Subversion . The Apache Software Foundation . Consultado el 15 de octubre de 2024 .
^ "Archivo CAMBIOS de Apache Subversion" . Consultado el 31 de octubre de 2018 .
^ de 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.
^ "Notas de la versión de Apache Subversion 1.8". Proyecto Apache . Consultado el 5 de mayo de 2020 .
^ "Notas de la versión de Apache Subversion 1.9".
^ Berkeley DB se basa en el bloqueo de archivos y, por lo tanto, no debería utilizarse en sistemas de archivos (de red) que no los implementen.
^ Notas de la versión SVN 1.5
^ Fusión básica
^ "rcs(1)". Páginas del manual de OpenBSD .
^ Propiedades de Subversion
^ cambio previo a la revprop
^ Ramificación entre archivos: un método práctico para representar variantes Archivado el 14 de julio de 2007 en Wayback Machine
^ Ramificación/Etiquetado — TortoiseSVN
^ "Implementar cambios de nombre verdaderos". Archivado desde el original el 1 de diciembre de 2002. Consultado el 11 de mayo de 2007 .
^ Fusión avanzada
^ Mejoras relacionadas con copiar y mover en Subversion 1.5
^ La copia de trabajo registra los movimientos como una operación de primera clase en Subversion 1.8
^ "[SVN-516] svn obliterate" . Consultado el 4 de septiembre de 2023 .
^ "Subclipse - Reparar suma de comprobación SVN".
^ Mejoras en el almacenamiento de metadatos de la copia de trabajo (cliente)
^ "[SVN-1256] Capacidad para conservar la última hora de modificación (mtime) de archivos bajo control de versiones" . Consultado el 4 de septiembre de 2023 .
^ FreezeAttrib (guarda/restaura los atributos del archivo usando propiedades)
^ fsvs – Sistema de control de versiones completo en GitHub
^ Inseguridad del programador @ iBanjo
^ Vídeo de Google Tech Talk y su transcripción
^ "[SVN-2464] Canonizar/preparar cadenas de nombres de archivos UTF-8 para manejar las diferencias compuestas/descompuestas que se muestran, por ejemplo, en Mac OS X HFS+" . Consultado el 4 de septiembre de 2023 .
^ 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 .
^ "Hoja de ruta de Apache Subversion". Proyecto Apache . Consultado el 5 de mayo de 2020 .
^ "Subversion enviado para convertirse en un proyecto en la Apache Software Foundation". 4 de noviembre de 2009. Consultado el 1 de octubre de 2019 .
^ "CollabNet apoya la transición de Subversion al proyecto de nivel superior Apache". CollabNet. 1 de marzo de 2010. Archivado desde el original el 11 de marzo de 2010.
^ WANdisco (7 de enero de 2010). «WANdisco nombra a Hyrum Wright para liderar los esfuerzos de Subversion en código abierto». Comunicado de prensa . Revista Open Source. Archivado desde el original el 18 de enero de 2012 . Consultado el 29 de octubre de 2011 .
^ "Paquetes binarios de Apache Subversion". Sitio web oficial del proyecto . Consultado el 29 de octubre de 2011 .
^ WANdisco (28 de octubre de 2009). «WANdisco presenta nuevas iniciativas para el proyecto de código abierto Subversion». Comunicado de prensa . CM Crossroads. Archivado desde el original el 18 de noviembre de 2011 . Consultado el 29 de octubre de 2011 .
^ "Mapa 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; Version Control with Subversion ; O'Reilly; ISBN 0-596-00448-6 (1.ª edición, libro de bolsillo, 2004, libro completo en línea, réplica)
Garrett Rooney; Subversión práctica ; Apress; ISBN 1-59059-290-5 (1.ª edición, tapa blanda, 2005)
Mike Mason; Control de versiones pragmático con Subversion ; Pragmatic Bookshelf; ISBN 0-9745140-6-3 (1.ª edición, libro de bolsillo, 2005)
William Nagel; Control de versiones de Subversion: uso del sistema de control de versiones de Subversion en proyectos de desarrollo ; Prentice Hall; ISBN 0-13-185518-2 (1.ª edición, libro de bolsillo, 2005)
Lectura adicional
Disipando el miedo, la incertidumbre y la incertidumbre sobre Subversion, por Ben Collins-Sussman (desarrollador de Subversion), enlace roto el 7 de marzo de 2013 (versión capturada de Internet Archive.org Wayback Machine 2011-07-18, "última actualización" 21 de diciembre de 2004)