Respuestas:
La ramificación en Subversion se ve facilitada por una instalación de copiado muy, muy ligera y eficiente.
La ramificación y el etiquetado son efectivamente lo mismo. Simplemente copie una carpeta completa en el repositorio a otro lugar del repositorio usando el svn copy
comando.
Básicamente, esto significa que es por convención lo que significa copiar una carpeta, ya sea una copia de seguridad, etiqueta, rama o lo que sea. Dependiendo de cómo quiera pensar sobre las cosas (normalmente dependiendo de la herramienta SCM que haya utilizado en el pasado), necesita configurar una estructura de carpetas dentro de su repositorio para apoyar su estilo.
Los estilos comunes son tener un montón de carpetas en la parte superior de su repositorio llamada tags
, branches
, trunk
, etc - que le permite copiar sus enteros trunk
(o subconjuntos) en los tags
y / o branches
carpetas. Si tiene más de un proyecto, es posible que desee replicar este tipo de estructura en cada proyecto:
Puede llevar un tiempo acostumbrarse al concepto, pero funciona, solo asegúrese de que usted (y su equipo) tengan claras las convenciones que va a utilizar. También es una buena idea tener una buena convención de nomenclatura, algo que le diga por qué se hizo la rama / etiqueta y si aún es apropiada, considere formas de archivar ramas que son obsoletas.
svn cp
usa copias baratas, no copia los archivos reales durante la ramificación. Ver svnbook.red-bean.com/en/1.1/ch04s02.html
Cree una nueva rama utilizando el svn copy
comando de la siguiente manera:
$ svn copy svn+ssh://host.example.com/repos/project/trunk \
svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH \
-m "Creating a branch of project"
svn switch svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH .
(si desea cambiar el pago actual a una nueva sucursal) o svn checkout svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH
(si desea tener una nueva sucursal en el directorio separado) para comenzar a trabajar en la sucursal recién creada.
--parents
opción consvn copy
!
-m
opción, dice como svn: E155010: Path '/home/constantine/someDirectory/svn+ssh:https:/myhost.com/svn/dir1/dir2/trunk/dir3/dir4/dir5' does not exist
. Con -m
eso dice svn: E205009: Local, non-commit operations do not take a log message or revision properties
. (Reemplacé las direcciones, pero existen, excepto, ofc, el nuevo directorio de sucursal y toda la ruta + url que SVN por alguna razón se fusionó en el error) .
svn cp /trunk/ /branch/NEW_Branch
Si tiene algunos cambios locales en el tronco, úselo Rsync
para sincronizar los cambios.
rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch
rsync
de esta manera. svn cp
también copiará cualquier cambio local.
Suponga que desea crear una rama a partir de un nombre de troncal (como "PRUEBA") y luego use:
svn cp -m "CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST
Normalmente lo copiaría a svn + ssh: //host.example.com/repos/project/branches/mybranch para que pueda mantener varias ramas en el repositorio, pero su sintaxis es válida.
Aquí hay algunos consejos sobre cómo configurar el diseño de su repositorio .
Sugerencia para nuevos usuarios de SVN; Esto puede ayudar un poco a obtener rápidamente las URL correctas.
Ejecutar svn info
para mostrar información útil sobre la rama actual desprotegida.
La URL debería (si ejecuta svn en la carpeta raíz) proporcionarle la URL desde la que necesita copiar.
También para cambiar a la rama recién creada, use el svn switch
comando:
svn switch http://my.repo.url/myrepo/branches/newBranchName
Si incluso planea fusionar su sucursal, le recomiendo que mire esto:
Escuché que Subversion 1.5 crea más seguimiento de fusión, no tengo experiencia con eso. ¡Mi proyecto está en 1.4.xy svnmerge.py es un salvavidas!
A continuación se detallan los pasos para crear una rama desde el tronco utilizando TortoiseSVN en la máquina Windows. Obviamente, esto necesita que se instale el cliente TortoiseSVN.