viernes, 7 de enero de 2011

Subversión

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
También:? o h

Ayuda en dado "orden"

svn add nombre de archivo

svn add directorio

Agregar un archivo o directorio a Subversion control de CM.
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 archivo
svn culpa-r RevisionNumber nombre de archivo
También: alabanza, anotar, ann

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
Esto crea:
path/file1
path/file2
...

svn checkout nodo http:// de nombre / repositorio / svn / trunk /parentPath.
Esto crea:
path/file1
path/file2
...
Tenga en cuenta la diferencia que un "." hace.

svn checkout archivo: / / / repositorio / svn / trunk / ruta /
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 todos los archivos de la ruta de acceso y subdirectorios se especifican a continuación. Crea "de trabajo" copia de los archivos y directorios.
Pedido un repositorio.

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

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
... Cp: También svn

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
svn eliminar directorio
También: del, eliminar o rm
svn rm http://host/repos/project/trunk/ archivo o directorio

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

svn diff nombre de archivo
svn di 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.
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

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.)
No se puede especificar una dirección URL.

svn directorio de listas
svn lista de nombre de archivo

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
svn log.
registro http:// URL svn / ruta / archivo
svn log-v.
svn log-r RevisionNumber dirección http:// / ruta / 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.
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 url/path/branch1 http:// http:// url/path/branch2 de trabajo-local-dir
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

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.
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 - 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
svn merge-r 414:413.

Deshacer los cambios realizados cometido en la revisión 414.

svn mkdir directorio
svn mkdir URL http:// / directorio

Crear un nuevo directorio bajo control de versiones.

svn mover directory1 directorio2
svn mv directory1 directorio2
mv archivo de edad de nombre de archivo svn-nuevo nombre

Cambiar el nombre o mover un archivo o directorio. Mueve / renombra el archivo / directorio en el repositorio y en el área de trabajo local.
Debe realizar svn ci-archivo nuevo nombre después de la mudanza para que los cambios que tendrá lugar en el repositorio.

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
svn status-u
svn status-u.
svn status-UQ.

Mostrar el estado de cambios en los archivos en el directorio actual y recursivamente en directorios por debajo.
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.

-Q: Calma. No imprimir ": Archivo no / directorio bajo control de versiones" o ": Archivo / directorio que falta" información extraña.

En primer lugar collumn:

  • R: El archivo que se agregará
  • C: Los cambios conflictivos
  • D: El archivo que desea borrar
  • G: El archivo se va a combinar con las actualizaciones del servidor
  • M: El archivo ha sido modificado
  • R: El archivo que se sustituye
  • G: El archivo que se fusionen
  • X: El recurso es externo al repositorio (svn: externals)
  • ?: Archivo / directorio no bajo control de versiones
  • !: Archivo / directorio desaparecidos
  • ~: Ítem versionado obstruido por algún elemento de un tipo diferente.

En segundo lugar collumn: Modificación de las propiedades

  • '' No hay modificaciones. La copia de trabajo es hasta la fecha.
  • "C" En conflicto
  • 'M' Modificado
  • Archivo local '*' diferente del repositorio. Una revisión más reciente en el servidor. Actualización dará lugar a fusionar o posible conflicto.

En tercer lugar collumn: Seguros

    • '' No está bloqueada
    • 'L' bloqueado
    • "S" cambia a una rama

svn http://server/new-branch interruptor
svn switch - relocate http://server/new-path http://server/old-path

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
svn update nombre de archivo
svn update-r458 nombre de archivo
svn update - ignore-externals /.

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".
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:

Rhommel Lamas [disponible en línea] http://techironic.com/index.php/2009/06/18/manejo-de-subversion-creacion-de-repositorios/

Ben Collins-Sussman, Brian W. Fitzpatrick, C. Michael Pilat [disponible en Linea] VERSION CONTROL WITH SUBVERSION http://svnbook.red-bean.com/nightly/en/svn-book.pdf

Ubuntu Life http://ubuntulife.wordpress.com/2007/05/29/instalar-un-servidor-de-subversion-en-ubuntu/

No hay comentarios:

Publicar un comentario