Comando svn de 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
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
# 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
# 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 nuevoM: archivo modificadoD: archivo eliminado?: archivo sin control de versiones!: archivo perdido
Añadir archivos (Add)
Incluir nuevos archivos en el control de versiones:
Ejemplo
# 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
# 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
svn diff
# Comparar dos versiones
svn diff -r 100:200
Revertir cambios (Revert)
Descartar las modificaciones locales:
Ejemplo
# Revertir todos los cambios
svn revert -R .
Resolver conflictos (Resolve)
Pueden surgir conflictos cuando varias personas modifican el mismo archivo:
Ejemplo
svn status
# Marcar como resuelto después de resolver el conflicto
svn resolve --acceptworking archivo_en_conflicto
Operaciones avanzadas
Ramas y fusiones
Ejemplo
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
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
svn propset svn:keywords "Date Rev Author"Nombre del archivo
# Ver propiedades
svn propgetsvn:keywords nombre_del_archivo
Consejos prácticos
-
Ignorar archivos: crear
svn:ignorela propiedad para excluir archivos que no necesitan control de versionessvn propset svn:ignore "*.log" .
-
Ver información detallada de archivos:
svn info 文件名
-
Exportar una copia limpia(sin el directorio .svn):
svn export 仓库URL 本地目录
-
Limpiar la copia de trabajo:
svn cleanup
Solución de problemas comunes
Error de autenticación
Ejemplo
rm -rf ~/.subversion/auth/
Bloqueo de la copia de trabajo
svn cleanup
Proceso de resolución de conflictos
- Actualizar la copia de trabajo:
svn update - Resolver el conflicto manualmente (editar el archivo)
- Marcar como resuelto:
svn resolve --accept working 文件名 - Confirmar los cambios:
svn commit -m "解决冲突"
Mejores prácticas
- Actualizar la copia de trabajo antes de confirmar
- Escribir mensajes de confirmación significativos
- Confirmar cambios pequeños con frecuencia, en lugar de enviar muchas modificaciones de una sola vez
- Usar ramas para el desarrollo de funciones
- 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.
Otras extensiones