Concepto de Subversión
Subversion es una versión gratuita y de código abierto sistema de control (VCS).Esto es, Subversion maneja ficheros y directorios, y los cambios introducidos en ellos, con el tiempo. Esto le permite recuperar versiones antiguas de sus datos o examinar la historia de cómo cambiaron sus datos. En este sentido, muchas personas piensan de un sistema de control de versiones como una especie de "máquina del tiempo".
Subversion puede operar a través de redes, que permite que sea utilizado por personas en diferentes equipos. En algún nivel, la capacidad para que varias personas puedan modificar y administrar el mismo conjunto de datos de sus respectivas ubicaciones fomenta la colaboración. Se puede progresar mas rápidamente sin un único conducto a través del cual todas las modificaciones que se producen. Y porque el trabajo está en versiones, no tienen por qué temer que la calidad es la compensación por la pérdida de ese conducto, si es un cambio incorrecto que se haga de los datos, simplemente deshacer el cambio.
Algunos sistemas de control de versiones también son software de gestión de configuración (SCM). Estos sistemas están diseñados específicamente para manejar árboles de código fuente y tienen muchas características que son específicas de desarrollo de software, tales como el entendimiento nativo de lenguajes de programación, o proporcionan herramientas para la construcción de software. Subversion, sin embargo, no es uno de estos sistemas. Se trata de un sistema general que puede ser utilizado para manejar cualquier colección de archivos. Para usted, esos ficheros pueden ser de código fuente para otros, cualquier cosa, desde listas de compras de comestibles para combinaciones de vídeo digital y más allá.
Ventajas:
Entre las ventajas más notables que SVN tiene sobre CVS:
· Poder renombrar ficheros en el repositorio, sin perder la historia.
· Y una gestión más eficiente de ficheros binarios en el repositorio
· La distribución de SVN viene con scripts que te permitirán migrar repositorios de CVS a SVN prácticamente sin pérdida de información.
· Se sigue la historia de los archivos y directorios a través de copias y renombrados.
Desventajas:
· El manejo de cambio de nombres de archivos no es completo.
· No resuelve el problema de aplicar repetidamente parches entre ramas, no facilita llevar la cuenta de qué cambios se han realizado.
Como montar un servidor Subversion
Instalacion y configuracion de Subversion
Primer paso: Instalación de las herramientas necesarias
Instalamos los paquetes que nos hacen falta para crear repositorios:
sudo aptitude install subversion subversion-tools
Necesitamos dos módulos de apache instalados en nuestro servidor, si haremos uso de svn a través de internet… (obvio, al menos para mí)
Los modulos son dav y dav_svn. Para comprobar que los tenemos:
a2enmod dav
a2enmod dav_svn
Si no estaban instalados, los instalamos:
sudo aptitude install libapache2-svn
Segundo paso: Creación de grupos y usuarios permitidos
Creamos un grupo subversion para manejar fácilmente los permisos
groupadd subversion
Añadimos a dicho grupo los usuarios que queremos que usen de algún modo nuestro servidor
usermod -a -Gsubversion user1
usermod -a -Gsubversion user2
usermod -a -Gsubversion user3
Ahora pasamos a crear los ficheros de acceso, que guardan los nombres y contraseñas de esos usuarios que harán uso del repositorio:
htpasswd2 -c /etc/apache2/dav_svn.passwd user1
htpasswd2 /etc/apache2/dav_svn.passwd user2
htpasswd2 /etc/apache2/dav_svn.passwd user3
El primero lleva -c por la simple razón de que crea el fichero. Los demás se añaden a él.
Cada vez que introduzcamos un usuario, se nos pedirá su nueva contraseña.
Tercer paso: Creación de un repositorio
Ahora creamos la carpeta donde ubicaremos el repositorio:
sudo mkdir /home/SVN
sudo svnadmin create /home/SVN
Y le damos los correspondientes permisos
chown -R www-data:subversion /home/svn/
chmod -R 770 /home/svn/
Cuarto paso: Configurando Apache para los repositorios
Pasamos a configurar el fichero que gestiona el módulo de apache para el svn:
sudo gedit /etc/apache2/mods-available/dav_svn.conf
Dentro ponemos esta configuración:
##
# SVN
#
DAV svn
SVNPath /home/svn
AuthType Basic
AuthName "Repositorio Subversion del proyecto"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
Si queremos quitar el modo lectura a cualquiera, porque nuestro proyecto sea confidencial o no queramos que sea visto desde fuera, basta reemplazar la sección:
Require valid-user
por
Require valid-user
Reiniciamos el servicio de apache para que nos rearranque con los cambios introducidos.
sudo /etc/init.d/apache2 restart
Manejo de Usuarios en Subversion
Agregar Usuarios al Subversion
Para Agregar usuarios al Subversion, es necesario editar dos ficheros.
Fichero Authz
En este fichero se almacenan los permisos de los usuarios a los repositorios, esta conformado por las siguientes directivas:
Directiva Groups:
[groups]
admins = usuario1,usuario2
En esta directiva se crean los grupos de usuarios, y se asignan los usuarios pertenecientes a estos separados por comas (,) como se muestran en el ejemplo anterior. Cada grupo de usuarios se debe crear en una línea diferente y se pueden asignar cuantos usuarios sean necesarios.
Directiva de Repositorios:
[repo1:/]
@admins = rw
* =
En esta directiva se asigna la permisología a cada repositorio existente, se encierra entre corchetes [ ] el nombre del repositorio de la forma que se indica arriba. Luego se asignan los grupos que tendrán acceso a este y el tipo de acceso que tendrán “r” para lectura y “w” para escritura. Por último se le quitan los permisos a los demás usuarios con “* =” Se pueden poner tantos repositorios como sean necesarios.
El segundo fichero es el passwd-digest
Este fichero contiene los usuarios con el Shadow Password el cual podemos copiar de algun servidor, o generar un nuevo password con el htpasswd en linux.
Comandos de Subversión
Comando Descripción svn - help Lista de los comandos de Subversion svn comando de ayuda Ayuda en dado "orden" svn add nombre de archivo svn add directorio Agregar un archivo o directorio a Subversion control de CM. svn culpa archivo Mostrar contenido del archivo con las modificaciones anotadas con información del autor. svn cat nombrearchivo Lista el contenido de archivo bajo control de Subversion. svn checkout nodo http:// de nombre / repositorio / svn / trunk /parentPath / ruta svn checkout nodo http:// de nombre / repositorio / svn / trunk /parentPath. svn checkout archivo: / / / repositorio / svn / trunk / ruta / Pedido todos los archivos de la ruta de acceso y subdirectorios se especifican a continuación. Crea "de trabajo" copia de los archivos y directorios. Utilice la opción "-r" para especificar una revisión en concreto que no sea la última. La dirección URL "svn: / /" se comunica con un servidor SVN (puerto 3690) La dirección URL "http://" se comunica con el servidor Apache ymod_dav_svn módulo (puerto 80) [comunes servidor más] svn de limpieza la subversión de limpieza de los archivos resultantes de los procesos se escapó y se estrelló. svn commit nombre de archivo Check-in (cometer) locales "trabajo" de archivos, archivos o directorios y contenidos (recursivamente) en el repositorio Subversion. Atómica, es decir, todos comprometidos o no, no incompleta de check-in. svn copy fuente destination_clone Copia de archivos o el árbol de directorios. Se puede copiar de una copia local de trabajo a otro o para la dirección URL del servidor repositorio. Las fuentes y los destinos pueden ser copias de trabajo o URLs. svn http:// acogida copia / repositorio / proyecto / host http:// tronco / repositorio / proyecto / tags / TagName-1.4.5-m"etiqueta de versión 1.4.5" Etiqueta un comunicado. Toma una instantánea del repositorio y le asigna un nombre. Esto se puede realizar en cualquier sucursal de la guía. svn copy. http:// host / repositorio / proyecto / tags / TagName-1.4.5-m "etiqueta de versión 1.4.5" Etiqueta un comunicado. Toma una instantánea de su copia de trabajo local y asigna un nombre. Esto se puede realizar en cualquier sucursal de la guía. svn eliminar nombre de archivo Eliminar archivos del repositorio. El comando rm UNIX de nombre de archivo. Debe realizar un "compromiso" para actualizar el directorio del repositorio y locales que trabajan con los cambios. es decir: svn diff nombre de archivo Mostrar archivos diffs entre repositorio SVN y sus cambios en los archivos usando el archivo en formato GNU diff. Utilice las herramientas de esta interfaz gráfica de usuario como se muestra a continuación. svn diff-r rev1: rev2 nombre de archivo Mostrar archivos diffs entre versiones especificadas. svn diff nombre de archivo> archivo de parche parche Generar archivo utilizado por el comando patch . svn directorio de exportación Exportación árbol de directorios de su sistema de archivos pero no será un "directorio de trabajo" bajo el control de SVN. svn de exportación-r-Rev número de nodo-http:// nombre / ruta árbol de exportación de la guía de la versión especificada y crear árbol de directorios y archivos locales que no están bajo el control de SVN. svn import local de la guía http:// nodo / repositorio / svn / trunk / directorio Añadir directorio (y los archivos en forma recursiva) a la ruta en el repositorio especificado. svn info Nombre de archivo Mostrar información sobre el archivo o directorio. (Fecha de cambio, el autor, la revisión, la ruta en el repositorio.) svn directorio de listas Lista de archivo o directorio de archivos en el repositorio. Se utiliza para ver repositorio antes de pagar. Si el directorio actual es determinado(lista de svn. /), Subversion lista de la URL del repositorio del directorio actual. lista de svn-r directorio RevisionNumber Lista de directorios de archivos en el repositorio en la revisión especificada. svn bloqueo de nombre de archivo-m "comentario sobre por qué su llave o por quién" (El comentario no es necesaria, pero a menudo es útil) archivo de bloqueo para permitir el acceso exclusivo a uno y prohibir todos los demás. Una confirmación abrirá el archivo (a menos que el "- no-unlock" opción se utiliza). El bloqueo se puede quitar con los comandos: svn desbloquear nombre de archivo, svnlook y comandos de la svnadmin(es decir, la lista: lslocks svnadmin y quitar: rmlocks svnadmin nombre de archivo). svn registro de nombre de archivo Mostrar los mensajes de registro de Subversion para un sistema de revisión (s) y / o archivo (s) y / o todos los contenidos directamente en el repositorio. svn merge url/path/branch1 http:// http:// url/path/branch2 de trabajo-local-dir Combinar cambios de directorio en su directorio de trabajo actual o combinar un archivo en Subversion en el archivo en su directorio de trabajo.Si el objetivo no se especifica, el directorio actual o idéntico nombre base se asume. Se utiliza para incorporar los cambios en comprobar que no tienen en cuenta en su archivo o para fusionar las ramas. svn merge - dry-run-r 414:413 url http:// / ruta Prueba de combinación de correspondencia. No se realizan cambios a su copia de trabajo local, pero muestra los comentarios de Subversion, como si se llevó a cabo fusión. svn merge-r 414:413 url http:// / ruta Deshacer los cambios realizados cometido en la revisión 414. svn mkdir directorio Crear un nuevo directorio bajo control de versiones. svn mover directory1 directorio2 Cambiar el nombre o mover un archivo o directorio. Mueve / renombra el archivo / directorio en el repositorio y en el área de trabajo local. svn revert fichero Deshacer los cambios en los archivos de trabajo locales. Deseche los cambios locales. svn resolved nombre de archivo Ejecute este comando después de resolver los conflictos de fusión.Siguiente "cometer" los cambios. svn status Mostrar el estado de cambios en los archivos en el directorio actual y recursivamente en directorios por debajo. -Q: Calma. No imprimir ": Archivo no / directorio bajo control de versiones" o ": Archivo / directorio que falta" información extraña. En primer lugar collumn: En segundo lugar collumn: Modificación de las propiedades En tercer lugar collumn: Seguros svn http://server/new-branch interruptor Cambiar su copia de trabajo local para reflejar una nueva rama del repositorio en lugar de tronco o la rama anterior. También le permite a punto de su repositorio a un nuevo camino en el servidor si los cambios de ruta del servidor desde el que realizó un hotel. svn update Migrar todas las actualizaciones de repositorio de Subversion a tu copia local (recusively para todos los archivos en el directorio actual y todos por debajo de ella). Si ha habido cambios a la repositorio SVN desde el que descargó los archivos, la subversión le dará la oportunidad de combinar.Estado de los archivos se utiliza la codificación como se ha dicho de "estado". Los archivos marcados con una "C" (conflicto) deberían fusionarse de revertir. Si se fusionó entonces se puede realizar una "resolución" y un "check-in".
También:? o h
También se debe realizar: svn ci nombre de archivo (o svn commit) para cargar el archivo o directorio. El archivo no estará disponible en el repositorio hasta que un "compromiso" se lleva a cabo. Si la adición de un directorio, el directorio y todos sus contenidos de forma recursiva se agregan. es decir:
svn ci directorio
svn commit de la guía
svn commit.
svn culpa-r RevisionNumber nombre de archivo
También: alabanza, anotar, ann
Esto crea:
path/file1
path/file2
...
Esto crea:
path/file1
path/file2
...
Tenga en cuenta la diferencia que un "." hace.
svn co-r 497-nodo del nombre http:// / repositorio / svn / trunk / archivo-nombre de la ruta
También: svn co https ://..., ://... svn, y ssh + svn: / /
MS / Windows: svn co file: / / / c: / repositorio / proyecto / trunk
Pedido un repositorio.
svn commit - message "mensaje va aquí." nombre de archivo
svn commit-m "Mensaje va aquí." nombre de archivo
svn ci archivo1 archivo2 nombreDeArchivo3
svn ci.
... Cp: También svn
svn eliminar directorio
También: del, eliminar o rm
svn rm http://host/repos/project/trunk/ archivo o directorio
svn commit.
svn di nombre de archivo
Ejemplo: svn diff-r 456:459 subfn.cpp
Utilizando esta herramienta de interfaz gráfica de usuario: svn diff-r 457:459 - diff-cmd kdiff3 de nombre de archivo
No se puede especificar una dirección URL.
svn lista de nombre de archivo
svn log.
registro http:// URL svn / ruta / archivo
svn log-v.
svn log-r RevisionNumber dirección http:// / ruta / archivo
Lista detallada. Incluye una lista de todos los archivos en el cambio
Muestra los cambios en los archivos asociados con el número de revisión.
svn merge archivo1 archivo2 @ @ revJ revK
svn merge-r 414:411 url http:// / ruta de trabajo-dir
svn merge-r 413: CABEZA de nombre de archivo
Ejemplo mediante la GUI herramienta de combinación:
svn diff-r 459:454 --cmd esta kdiff3 - 'm' extensiones de archivo de nombre
A continuación, dígale a la subversión que los conflictos se han resuelto:
svn resolver de nombre de archivo
Por último, el check-in de archivo: svn ci nombre de archivo
o cancelar los cambios: svn revert de nombre de archivo
svn merge-r 414:413.
svn mkdir URL http:// / directorio
svn mv directory1 directorio2
mv archivo de edad de nombre de archivo svn-nuevo nombre
Debe realizar svn ci-archivo nuevo nombre después de la mudanza para que los cambios que tendrá lugar en el repositorio.
svn status-u
svn status-u.
svn status-UQ.
Mostrar información de archivo de fecha: svn status - show-updates
(Equivalente: svn status-u)
-U: Determina el estado mediante la comparación de su repositorio local con el servidor de repositorio. Sin esta opción, el estado sólo se muestra serán los cambios que has hecho en tu repositorio local.
svn switch - relocate http://server/new-path http://server/old-path
svn update nombre de archivo
svn update-r458 nombre de archivo
svn update - ignore-externals /.
Si un nombre de archivo se especifica, sólo que el archivo se actualiza.
También se puede sincronizar a una revisión especifica propuesta por-r.
Utilice - ignore-externals para evitar el procesamiento lento de lo externo a un servidor de Internet potencialmente lenta distantes.
Bibliografía:
Ubuntu Life http://ubuntulife.wordpress.com/2007/05/29/instalar-un-servidor-de-subversion-en-ubuntu/
No hay comentarios:
Publicar un comentario