SVN es un sistema de control de versiones centralizado. Comandos SVN Comandos Svn

Introducción

La función de ayuda de Subversion ( ayuda svn) proporciona un resumen de los comandos disponibles. Hay información más detallada disponible en el libro en línea Subversion disponible en http://svnbook.red-bean.com/en/1.2/index.html. El capítulo 3 es especialmente útil.

El siguiente es un conjunto básico de comandos que todos los editores utilizarán con frecuencia. Algunos comandos tienen dos formas, la larga y la corta. Ambos están listados en la descripción.

diferencia svn. Esto es útil para dos propósitos diferentes. Primero, aquellos sin acceso de escritura al servidor BLFS SVN pueden usarlo para generar parches y enviarlos a la lista de correo BLFS-Dev. Para hacer esto, simplemente edite los archivos en su sandbox local y luego ejecute svn diff > ARCHIVO.parche desde la raíz de su directorio BLFS. Luego puede adjuntar este archivo a un mensaje en la lista de correo de BLFS-Dev donde alguien con derechos de edición puede recogerlo y aplicarlo al libro. El segundo uso es descubrir qué ha cambiado entre dos revisiones usando: svn diff -r revisión1: revisión2 NOMBRE DE ARCHIVO . Por ejemplo: svn diff -r 168:169 índice.xml generará una diferencia que muestra los cambios entre las revisiones 168 y 169 de index.xml.

Subversion (SVN - Sistema de Versiones Concurrentes) - sistema centralizado control de versiones. Diseñado como reemplazo de CVS, tiene la misma funcionalidad, pero carece de muchas de sus desventajas. Ver también: libro SVN.

Configurar un servidor SVN

Repositorio SVN, bastante simple, en en este ejemplo, directorio, /home/svn/, debe existir: # svnadmin create --fs-type fsfs /home/svn/project1 Puede conectarse al repositorio de las siguientes maneras:

  • archivo://- Acceso directo a través del sistema de archivos usando SVN cliente. Los privilegios deben configurarse correctamente en el sistema de archivos local.
  • svn:// o svn+ssh:// - Acceso remoto A SVN servidor (también según el protocolo SSH). Requiere derechos en el sistema de archivos local, puerto predeterminado: 2690/tcp.
  • http:// Acceso remoto mediante webdav usando apache. Este método no requiere usuarios locales.
Importe y verifique un proyecto existente a través del sistema de archivos local. No es necesario ir al directorio de trabajo, simplemente puede especificar la ruta completa: # svn import /project1/ file:///home/svn/project1/trunk -m "Importación inicial" # svn checkout file:// /home/svn/proyecto1

Acceso remoto mediante protocolo SSH

Acceso remoto vía protocolo SSH no requiere ninguna configuración adicional, simplemente reemplace archivo:// en svn+ssh/nombre de host. Por ejemplo: # svn checkout svn+ssh://hostname/home/svn/project1 Como en el caso del acceso local, el usuario debe tener una cuenta para acceder a través del protocolo SSH al servidor y permisos de lectura/escritura configurados correctamente. Este método puede ser adecuado para pequeños grupos de usuarios, los usuarios del grupo son los propietarios del repositorio, por ejemplo: # groupadd subversion # groupmod -A user1 subversion # chown -R root:subversion /home/svn # chmod -R 770 /home/svn

Acceso remoto a través de HTTP (apache)

Acceso remoto mediante HTTP(HTTPS), una solución adecuada para grupos de usuarios remotos. Este método utiliza la autenticación del servidor web. apache(no cuentas locales). Aquí hay una configuración típica: LoadModule dav_module módulos/mod_dav.so LoadModule dav_svn_module módulos/mod_dav_svn.so LoadModule authz_svn_module módulos/mod_authz_svn.so # Sólo para control de acceso DAV svn # URL "/svn/foo" se asignará a la ruta del repositorio /home/svn/foo SVNParentPath /home/svn AuthType Basic AuthName "Repositorio de Subversion" AuthzSVNAccessFile /etc/apache2/svn.acl AuthUserFile /etc/apache2/ svn-passwd Requiere servidor de usuario válido apache debe tener acceso completo al repositorio: # chown -R www:www /home/svn Crea un usuario usando htpasswd: # htpasswd -c /etc/svn-passwd usuario1 #-C Crea un archivo

Ejemplo de control de acceso svn.acl

# Acceso de lectura predeterminado. "* =" no tendrá acceso por defecto[/] * = r proyecto1-desarrolladores = joe, jack, jane # Dar permisos de escritura a los desarrolladores@ proyecto1-desarrolladores = rw

Algunos comandos para gestionar el repositorio SVN

Consulte también la Tarjeta de referencia rápida de Subversion. Tortoise SVN, una buena interfaz de Windows.

Importar

Importar al repositorio nuevo proyecto que contiene directorios y archivos, puede utilizar el comando importar. El mismo comando también se utiliza para agregar un directorio con su contenido a un proyecto ya existente. # svn ayuda a importar # Ayuda al mando # Agregue un nuevo directorio y su contenido al directorio src del proyecto1.# svn import /project1/newdir http://host.url/svn/project1/trunk/src -m "agregar nuevodir"

Comandos SVN típicos

# svn co http://host.url/svn/project1/trunk # Realizar un pedido de ultima versión # Las etiquetas y ramas se crean mediante copia# svn mkdir http://host.url/svn/project1/tags/ # Crear un directorio de etiquetas# svn copy -m "Etiqueta rc1 rel." http://host.url/svn/project1/trunk \ http://host.url/svn/project1/tags/1.0rc1 # estado de svn [--verbose] # Verificar el estado de los archivos en el directorio de trabajo# svn agregar src/file.h src/file.cpp # Agregar dos archivos# svn commit -m "Se agregó un nuevo archivo de clase" # Enviar cambios por mensaje# svn ls http://host.url/svn/project1/tags/ # Lista de todas las etiquetas# svn mover foo.c bar.c # Mover (cambiar nombre) archivos# svn eliminar algún_archivo_antiguo # Eliminar archivos

Esta serie de artículos está dedicada a la introducción al uso. SVN, desde el punto de vista usuario regular. El artículo fue escrito para ayudar a mis colegas a aprender y utilizar rápidamente SVN. Así que comencemos con lo básico.

Introducción

Subversión ( SVN) es un sistema de control de versiones gratuito y de código abierto. SVN le permite administrar archivos y directorios, así como los cambios realizados en ellos a lo largo del tiempo. SVN proporciona las siguientes características:

  1. Control de cambios de directorio. SVN utiliza un sistema de archivos "virtual" con capacidades de control de versiones que es capaz de rastrear cambios a lo largo del tiempo en estructuras de directorios completas
  2. Historia verdadera versiones. SVN permite agregar, eliminar, copiar y cambiar el nombre de archivos y directorios. Además, cada archivo recién agregado comienza desde cero, manteniendo su propio historial de cambios.
  3. Compromiso atómico de cambios. Cada conjunto de cambios termina en el repositorio por completo o no termina allí en absoluto. Aquellos. Si, al confirmar los cambios del proyecto, se produjo un error durante el procesamiento del archivo, entonces los cambios en todo el proyecto no se confirmarán.
  4. Metadatos con versiones. Cada archivo y directorio tiene su propio conjunto de propiedades, representadas por un nombre y un valor. Puede crear y guardar los pares necesarios de nombres de propiedades y sus valores. Las propiedades de los archivos están tan versionadas como su contenido.
  5. Una forma unificada de trabajar con datos. SVN detecta diferencias entre archivos utilizando un algoritmo binario especial que funciona igualmente con archivos de texto y binarios. Los archivos se escriben en el almacenamiento en forma comprimida independientemente de su tipo, y las diferencias entre las versiones individuales se pueden transmitir a través de la red en ambas direcciones.
  6. Ramas y etiquetas efectivas. SVN crea ramas y etiquetas simplemente copiando un proyecto, utilizando un mecanismo similar a los enlaces físicos en los sistemas de archivos. Gracias a esto, las operaciones de creación de ramas y etiquetas toman poco tiempo.


Lista de términos básicos

  1. Repositorio(repositorio) es un depósito centralizado de códigos fuente, materiales de trabajo y documentación. Cualquier número de clientes se conecta al almacenamiento y lee o escribe estos archivos.
  2. Copia de trabajo/copia de trabajo(WC) es un árbol normal de directorios en una computadora que contiene un conjunto de archivos para trabajar en un proyecto. Los cambios en la copia de trabajo no están disponibles para otros usuarios del repositorio hasta que se confirmen.
  3. Trompa— dirección principal del desarrollo
  4. Rama(“Sucursal”) es una dirección de desarrollo que existe independientemente de otra dirección, pero que tiene una historia común con ella. Una rama siempre comienza como una copia de algo y avanza desde ese punto, creando su propia historia.
  5. Etiqueta(“Etiqueta”) es una versión seleccionada explícitamente de los archivos del proyecto en un momento determinado, mediante la creación de una carpeta separada.
  6. Revisión— número de revisión del repositorio, dentro del repositorio el número de revisión es un valor único
  7. Verificar- un equipo que realiza la recepción inicial del proyecto desde el repositorio en WC.
  8. Comprometerse- un comando que envía cambios a los archivos del proyecto en WC al Repositorio.
  9. Actualizar- un comando que actualiza los archivos del proyecto en WC desde el repositorio
  10. Revertir- un comando que deshace cualquier cambio en los archivos del proyecto en WC según el número de revisión del repositorio.
  11. Unir- un comando que fusiona archivos de diferentes ramas del proyecto y coloca el resultado de la fusión en WC.
  12. Conflicto- una situación que surge al realizar cambios, cuando varios desarrolladores cambiaron los mismos archivos.
  13. Resolver- un conjunto de reglas para resolver conflictos emergentes.
  14. Importar- un comando para copiar rápidamente un árbol de archivos al Repositorio.
  15. Exportar- el comando para exportar un proyecto se diferencia del pago en que no crea información de servicio en las carpetas del proyecto.
  16. Cambiar- un comando que cambia WC a otra rama de desarrollo.
  17. Crear, Agregar, Borrar, Copiar, Mover, Rebautizar- comandos para gestionar archivos y carpetas en el repositorio o WC.

Software

Trabajar con el repositorio SVN revisado en base a software TortugaSVN

Extracto

Svn checkout [-profundidad ARG] [--ignore-externals] [-r rev] RUTA URL

Si la casilla de verificación está marcada Saltar externo

Si está recuperando una revisión específica, especifíquela después de la URL usando el parámetro -r.

Actualizar

Información de svn URL_working_copy actualización de svn [-r rev] RUTA

Actualizar varios elementos no es actualmente una operación atómica en Subversion. Por lo tanto, TortoiseSVN primero encuentra la revisión principal (HEAD) en el repositorio y luego actualiza todos los elementos a esa revisión para evitar crear una copia de trabajo con revisiones mixtas.

Si solo se selecciona un elemento para actualizar, o los elementos seleccionados no son todos del mismo repositorio, TortoiseSVN simplemente actualiza a la revisión principal.

Aquí no se utilizan opciones de línea de comando. Actualización a revisión También implementa el comando de actualización, pero ofrece más funcionalidad.

Actualización a revisión

Svn info URL_working_copy actualización svn [-r rev] [-profundidad ARG] [--ignore-externals] RUTA

Los elementos del cuadro combinado de profundidad se relacionan con el argumento -profundidad.

Si la casilla de verificación está marcada Saltar externo, use la opción --ignore-externals.

Arreglar

En TortoiseSVN, el cuadro de diálogo de confirmación utiliza varios comandos de Subversion. La primera etapa es una verificación de estado, que identifica elementos de su copia de trabajo que podrían potencialmente confirmarse. Puede explorar esta lista, comparar los archivos con su base y seleccionar los elementos que desea incluir en la confirmación.

Estado de svn -v RUTA

Si la casilla de verificación está marcada

Si marca archivos y carpetas sin versión, esos elementos se agregarán primero a su copia de trabajo.

Svn agregar RUTA...

Cuando haces clic en Aceptar, Subversion comienza a ejecutar la confirmación. Si deja todas las casillas de verificación de archivos en su estado predeterminado, TortoiseSVN utiliza una única confirmación recursiva de la copia de trabajo. Si ha desmarcado algunos archivos, entonces se debe utilizar la confirmación no recursiva (-N) y cada ruta debe especificarse individualmente en línea de comando para fijación.

Svn commit -m "LogMessage" [-profundidad ARG] [--no-unlock] RUTA...

LogMessage aquí representa el contenido del campo de entrada del mensaje de registro. Puede que esté vacío.

Diferencia

Svn diff RUTA

Si utiliza el comando Diff del menú contextual principal, compara el archivo modificado con su revisión base. La salida del ICS del comando anterior también hace esto y produce una salida en el formato de diferencias combinadas. Sin embargo, TortoiseSVN no utiliza esto. TortoiseSVN usa TortoiseMerge (o un programa de diferencias de su elección) para mostrar visualmente las diferencias entre archivos de texto, por lo que no existe un equivalente directo a SVN.

También puedes comparar dos archivos cualesquiera usando TortoiseSVN, independientemente de si están bajo control de versiones. TortoiseSVN simplemente introduce estos dos archivos en el programa de diferencias elegido y le permite determinar dónde están las diferencias.

Revista

Svn log -v -r 0:N --limit 100 [--stop-on-copy] RUTA o svn log -v -r M:N [--stop-on-copy] RUTA

De forma predeterminada, TortoiseSVN intenta extraer 100 mensajes de registro utilizando el método --limit. Si las instalaciones se ven obligadas a utilizar las API antiguas, entonces el segundo formulario se utiliza para recuperar mensajes de registro de 100 revisiones del repositorio.

Si la casilla de verificación está marcada Detenerse al copiar/cambiar nombre, utilice la opción --stop-on-copy.

Comprobando cambios

Estado de svn -v RUTA o estado de svn -u -v RUTA

La verificación de estado inicial analiza solo su copia de trabajo. Si haces clic en Verificar almacenamiento, luego también se verifica el repositorio para ver qué archivos cambiarán con la actualización, y esto requiere la opción -u.

Si la casilla de verificación está marcada Mostrar archivos no versionados, TortoiseSVN también mostrará archivos y carpetas no versionados en la jerarquía de la copia de trabajo, respetando las reglas de ignorar. Esta propiedad en particular no tiene equivalente directo en Subversion, ya que el comando svn status no va a carpetas no versionadas.

Gráfico de revisión

El gráfico de revisión es una característica proporcionada únicamente por TortoiseSVN. No existe ningún equivalente en el cliente de línea de comandos.

Qué hace TortoiseSVN:

Svn información URL_working_copy svn log -v URL

donde está la URL raíz almacenamiento y luego analiza los datos devueltos.

Explorador de almacenamiento

Información de svn URL de copia de trabajo lista de svn [-r rev] -v URL

Puede utilizar svn info para definir la raíz del repositorio: este es el nivel superior que se muestra en el navegador del repositorio. No puedes pasar de este nivel. Además, este comando devuelve toda la información de bloqueo que se muestra en el Explorador de almacenamiento.

Al llamar a svn list se enumerará el contenido de la carpeta, para la URL y la revisión especificadas.

Editar conflictos

Este comando no tiene equivalente en ICS. Llama TortoiseMerge o herramienta externa diferenciación/fusión de tres vías para ver los archivos involucrados en el conflicto y seleccionar las líneas que deben usarse.

Establecido

Svn resolvió RUTA

Rebautizar

Svn cambiar el nombre CURRENT_PATH NEW_PATH

Borrar

Svn eliminar RUTA

Eliminar cambios

Estado de svn -v RUTA

La primera etapa es una verificación de estado, identificando elementos en su copia de trabajo a los que potencialmente se les podrían eliminar cambios. Puede ver la lista, comparar archivos con la base de datos y seleccionar elementos en los que desea eliminar cambios.

Cuando hace clic en Aceptar, Subversion eliminará los cambios. Si deja todos los indicadores de selección de archivos en su estado predeterminado, TortoiseSVN utiliza una única función recursiva (-R) para deshacer los cambios en la copia de trabajo. Si desmarca algunos archivos, cada ruta debe especificarse individualmente en la línea de comando para eliminar los cambios.

Svn revertir [-R] RUTA...

Limpieza

RUTA de limpieza de Svn

Bloquear

Estado de svn -v RUTA

La primera etapa es una verificación de estado, que identifica los archivos en su copia de trabajo que potencialmente podrían estar bloqueados. Puede seleccionar los elementos que desea bloquear.

Svn lock -m "LockMessage" [--force] RUTA...

LockMessage es el contenido del campo del mensaje de bloqueo. Puede que esté vacío.

Si la casilla de verificación está marcada Cerraduras de intercepción, utilice la opción --force.

Desbloqueo

RUTA de desbloqueo de Svn

Sucursal/Etiqueta

Svn copy -m "LogMessage" URL URL o svn copy -m "LogMessage" o svn copy -m "LogMessage" URL de RUTA

El cuadro de diálogo Rama/Etiqueta realiza una copia al almacenamiento. Hay 3 botones conmutables:

  • Revisión líder en el repositorio (HEAD)
  • La revisión especificada en el repositorio.
  • Copia de trabajo

que corresponden a las tres opciones de línea de comando anteriores.

agregar: agrega archivos, directorios y enlaces simbólicos, marcándolos para su posterior inclusión en el repositorio. Una vez marcados, se descargan y se agregan al repositorio la primera vez que se confirman los cambios. Si agregó algo, pero luego cambió de opinión antes de fijarlo, puede eliminar la marca de agregar usando el subcomando svn revert.
svn agregar RUTA...
$svn agregar directorio de prueba

culpar (elogiar, anotar, comentar): muestra el autor y el editor línea por línea para los archivos o URL especificados. Cada línea de texto comienza con el nombre del autor (nombre de usuario) y el número de revisión. Esto indica quién y cuándo modificó esta línea por última vez.
svn culpa al OBJETIVO[@REV]…
$ svn culpa http://svn.red-bean.com/repos/test/readme.txt

cat: imprime el contenido de archivos o URL específicos. Para enumerar el contenido de los directorios, utilice svn list.
svn gato OBJETIVO[@REV]…
$ svn gato http://svn.red-bean.com/repos/test/readme.txt

checkout (co): crea una copia de trabajo basada en los datos del repositorio. Si se omite PATH, el nombre base de la URL se utilizará como nombre del directorio de la copia de trabajo. Si se proporcionan varias URL, se crearán las copias correspondientes en el subdirectorio PATH, cada una en su propio directorio derivado del nombre base de la URL.
URL de pago de svn[@REV]…
svn pago svn://svn.ru2web.ru/ru2web/branches/www-01/ /usr/home/vasia/ru2web.ru/app/

limpieza: limpia recursivamente la copia de trabajo, eliminando los bloqueos restantes de operaciones incompletas. Tan pronto como encuentre el error "la copia de trabajo está bloqueada", ejecute este subcomando para eliminar bloqueos antiguos y poner la copia de trabajo en estado de funcionamiento.

Si por alguna razón la operación del comando svn update falló debido a problemas con el programa de diferenciación externo en ejecución (por ejemplo, hice clic en algo incorrecto o hubo una falla en la red), debe configurar el parámetro –diff3-cmd en permita que se limpie la copia para completar todas las uniones utilizando un programa de diferencias externo. También puede especificar el directorio de configuración usando la opción –config-dir, pero tenga cuidado de no abusar de estas opciones.

commit (ci): envía los cambios realizados en la copia de trabajo al repositorio para guardarlos allí. Si no utiliza la opción –file o –message, svn iniciará un editor externo para redactar el comentario. Lea la descripción del parámetro editor-cmd en "Config".
svn commit enviará todas las etiquetas de bloqueo encontradas de forma recursiva a la instalación de almacenamiento y desbloqueará los recursos correspondientes a estas etiquetas si no se especificó el parámetro –no-unlock. El "área de búsqueda" se especifica especificando PATH.
compromiso svn

copiar (cp): copia un archivo en una copia de trabajo o en un almacenamiento. SRC y DST pueden ser rutas dentro de la copia de trabajo o URL dentro del repositorio.
copia svn SRC horario de verano

eliminar (del, remove, rm): eliminar un elemento de una copia de trabajo o repositorio.
svn eliminar RUTA...
svn eliminar URL...

diff (di): muestra las diferencias entre la copia de trabajo y el repositorio.
$ svn diff http://svn.collab.net/repos/svn/trunk/COMMITTERS@3000 http://svn.collab.net/repos/svn/trunk/COMMITTERS@3500

exportar: exporta un árbol de directorios limpio (sin carpetas .svn).

ayuda (?, h) – Ayuda.

importar: envía un archivo o árbol sin versión al repositorio.
URL de importación svn

info: muestra información sobre un elemento local o remoto.
información svn

list (ls): lista de directorios en el repositorio.
lista svn...]
$ lista svn http://svn.red-bean.com/repos/test/support

bloquear: bloquea la copia de trabajo en el repositorio para que ningún otro usuario pueda realizar cambios en la ruta indicada.
svn lock OBJETIVO…
$ svn bloquear árbol.jpg casa.jpg

log: muestra mensajes de registro.
svnlog
URL de registro svn
$svnlog

fusionar: aplica diferencias entre dos fuentes.
$ svn fusionar -r 250:HEAD http://svn.red-bean.com/repos/branches/my-branch

mkdir: crea un directorio en un repositorio controlado por versión.
$svn mkdir nuevodir

mover (mv, renombrar, ren): mueve un archivo o directorio.
svn mover SRC horario de verano

propdel (pdel, pd): elimina propiedades de archivos, directorios o revisiones.
svn propdel NOMBREPROP
svn propdel NOMBREPROP –revprop -r REV

propedit (pedit, pe)
propget (pget, página)
proplista (plist, pl)
conjunto de propiedades (pset, ps)

resuelto: elimina los “conflictos” de la copia de trabajo de archivos o directorios.
svn resolvió RUTA…

revertir: revertir todos los cambios locales.
$ svn revertir myprj.phtml

status (stat, st): estado de la copia de trabajo de archivos o directorios.
$svn estado wc

switch (sw): actualiza la copia de trabajo a una URL diferente.

desbloquear: desbloquea la copia de trabajo.

actualizar (arriba): actualización de su copia de trabajo.