Comando svn de Linux

Linux 命令大全Manual completo de comandos de Linux


SVN (Subversion) es un sistema de control de versiones de código abierto que se utiliza para gestionar el historial de cambios de archivos y directorios. Ayuda a los equipos de desarrollo a colaborar en proyectos, realizar un seguimiento de los cambios de código y admitir la reversión de versiones.

Comprensión por analogía: puedes imaginar SVN como una máquina del tiempo que registra cada modificación de cada archivo en tu proyecto, como los puntos de guardado en un juego; puedes volver en cualquier momento a cualquiera de las versiones anteriores.


Conceptos básicos de SVN

Repositorio

El repositorio de SVN es el lugar donde se almacenan todos los datos de las versiones, equivalente a una base de datos central. Conserva el historial completo del proyecto.

Copia de trabajo (Working Copy)

Esta es una copia del proyecto en tu máquina local. Puedes realizar modificaciones aquí y luego enviar los cambios al repositorio.

Número de revisión (Revision)

Cada confirmación genera un número de revisión globalmente único, que se utiliza para identificar un estado específico del proyecto.


Instalación y configuración de SVN

Instalar SVN

En la mayoría de las distribuciones de Linux, se puede instalar mediante el gestor de paquetes:

Ejemplo

# Ubuntu/Debian
sudo apt-get install subversion

# CentOS/RHEL
sudo yum install subversion

# Fedora
sudo dnf install subversion

Verificar la instalación

svn --version

Explicación detallada de los comandos SVN comunes

Obtener código (Checkout)

Obtener el código del repositorio SVN a nivel local:

Ejemplo

svn checkout [URL del repositorio] [Directorio local]
# Ejemplo:
svn checkout http://svn.example.com/svn/project/trunk myproject

Opciones comunes:

  • --username: especificar nombre de usuario
  • --password: especificar contraseña
  • --non-interactive: modo no interactivo

Actualizar código (Update)

Sincronizar la copia de trabajo local con la última versión del repositorio:

Ejemplo

svn update
# Actualizar a una versión específica
svn update -r 1234

Confirmar cambios (Commit)

Enviar las modificaciones locales al repositorio:

svn commit -m "提交说明"

Ver el estado (Status)

Ver el estado de modificación de la copia de trabajo:

svn status

Explicación de los indicadores de estado:

  • A: archivo nuevo
  • M: archivo modificado
  • D: archivo eliminado
  • ?: archivo sin control de versiones
  • !: archivo perdido

Añadir archivos (Add)

Incluir nuevos archivos en el control de versiones:

Ejemplo

svn addNombre del archivo
# Añadir todos los archivos nuevos del directorio actual
svn add --force .

Eliminar archivos (Delete)

Eliminar archivos del control de versiones:

svn delete 文件名

Ver el registro (Log)

Ver el historial de confirmaciones:

Ejemplo

svn log
# Ver el registro de un archivo específico
svn logNombre del archivo
# Limitar el número de entradas mostradas
svn log -l 10

Comparar diferencias (Diff)

Ver el contenido modificado:

Ejemplo

# Comparar la copia de trabajo con la versión base
svn diff
# Comparar dos versiones
svn diff -r 100:200

Revertir cambios (Revert)

Descartar las modificaciones locales:

Ejemplo

svn revertNombre del archivo
# Revertir todos los cambios
svn revert -R .

Resolver conflictos (Resolve)

Pueden surgir conflictos cuando varias personas modifican el mismo archivo:

Ejemplo

# Ver archivos en conflicto
svn status
# Marcar como resuelto después de resolver el conflicto
svn resolve --acceptworking archivo_en_conflicto

Operaciones avanzadas

Ramas y fusiones

Ejemplo

# Crear una rama
svn copyURL de origen URL de destino-m "Descripción de la creación de la rama"

# Fusionar la rama
svn mergeURL de origen[@Versión]Ruta de la copia de trabajo

Gestión de etiquetas

Ejemplo

# Crear una etiqueta (misma sintaxis que crear una rama)
svn copy http://svn.example.com/svn/project/trunk
         http://svn.example.com/svn/project/tags/1.0
         -m "Crear etiqueta de la versión 1.0"

Gestión de propiedades

Ejemplo

# Establecer una propiedad
svn propset svn:keywords "Date Rev Author"Nombre del archivo

# Ver propiedades
svn propgetsvn:keywords nombre_del_archivo

Consejos prácticos

  1. Ignorar archivos: crearsvn:ignorela propiedad para excluir archivos que no necesitan control de versiones

    svn propset svn:ignore "*.log" .
  2. Ver información detallada de archivos:

    svn info 文件名
  3. Exportar una copia limpia(sin el directorio .svn):

    svn export 仓库URL 本地目录
  4. Limpiar la copia de trabajo:

    svn cleanup

Solución de problemas comunes

Error de autenticación

Ejemplo

# Eliminar la información de autenticación guardada
rm -rf ~/.subversion/auth/

Bloqueo de la copia de trabajo

svn cleanup

Proceso de resolución de conflictos

  1. Actualizar la copia de trabajo:svn update
  2. Resolver el conflicto manualmente (editar el archivo)
  3. Marcar como resuelto:svn resolve --accept working 文件名
  4. Confirmar los cambios:svn commit -m "解决冲突"

Mejores prácticas

  1. Actualizar la copia de trabajo antes de confirmar
  2. Escribir mensajes de confirmación significativos
  3. Confirmar cambios pequeños con frecuencia, en lugar de enviar muchas modificaciones de una sola vez
  4. Usar ramas para el desarrollo de funciones
  5. Realizar copias de seguridad periódicas del repositorio

Comparación entre SVN y Git

Característica SVN Git
Arquitectura Centralizada Distribuida
Velocidad Más lenta Más rápida
Ramas/Fusión Más complejo Sencillo y eficiente
Trabajo sin conexión Soporte limitado Soporte completo
Curva de aprendizaje Más suave Más pronunciada

Resumen

SVN es un sistema de control de versiones potente y estable, especialmente adecuado para proyectos que requieren un control de permisos estricto y una gestión centralizada. Al dominar estos comandos y conceptos básicos, ya podrás utilizar SVN de manera eficiente para el trabajo diario de control de versiones. Recuerda que el núcleo del control de versiones es confirmar con frecuencia y mantener buenos hábitos de confirmación, lo que proporcionará una red de seguridad fiable para el desarrollo de tu proyecto.


Linux 命令大全Manual completo de comandos de Linux

Otras extensiones