2010-03-13 17 views
11

He creado un código experimental que me gustaría guardar en el repositorio, pero no lo quiero en la rama principal. ¿Cómo comprometerías esto con una sucursal?svn branch commit - commit experimental

Quizás me equivoqué, pero de lo que he entendido acerca de la bifurcación, todo lo que hace es copiar el código ya verificado en otro directorio en el repositorio. Supongo que se podría copiar la rama principal a otra ubicación, y luego cambiar el puntero de ubicación del repositorio de copia de trabajo para apuntar a esa ubicación, y luego confirmar el código experimental. Pero eso parece un poco largo. ¿Es así como lo haces?

Respuesta

14

eso es precisamente cómo lo hace (al menos en Subversion). Por ejemplo:

 
svn cp svn://server/repo/trunk svn://server/repo/branches/experiment 
svn switch svn://server/repo/branches/experiment 
svn commit -m "testing stuff" 

El cp (copiar) la operación de Subversion está diseñado para ser muy barato y en realidad no hace una copia de todo el código en su repositorio de nuevo. Simplemente configura punteros para apuntar a la revisión que ha copiado en trunk.

No todos los sistemas funcionan de esta manera; por ejemplo, en Git puedes crear una nueva rama y cambiar a ella con un comando: git checkout -b experiment.

+0

Técnicamente, se debe crear la rama mediante el revisión de su copia de trabajo en lugar de ToT, ¿no? –

2

Una rama SVN no copia todo el código nuevamente, solo se refiere al original y agrega el Diff de su nuevo código. Otra cosa buena de una sucursal es que siempre puedes unirla o sincronizarla con su origen. Una rama es simplemente otra carpeta en el repositorio SVN como etiquetas o troncales.

Sugiero crear una copia de seguridad antes de cambiar de rama, en caso de que sobrescriba los cambios existentes por error.

Usted puede encontrar los comandos y más información sobre las ramas de SVN en el libre SVN Book

1

yo sepa la mayoría de los clientes de SVN con una interfaz gráfica de usuario (por ejemplo, la tortuga, Subclipse, svnX tiene un comando rama que da la magia para usted.

ver de otra manera la respuesta de Greg.