¿Cómo debería estructurar copys de trabajo para SVN?

Mi tree SVN local de copys de trabajo está configurado para que coincida con la estructura de directory del repository. En otras palabras, tiene troncales, twigs y carpetas de tags en todo el lugar. ¿Es esta una buena manera de configurar las copys de trabajo? ¿Alguna idea mejor / alternativa?

Me parece conveniente tener una copy de trabajo de una manera similar a la suya con una sola exception, hago un escaso checkout de twigs y tags y las rellene / coloque a pedido. Entonces los commands de pago son algo así como

$ svn co --depth immediates url_of_myrepo $PWD ;# empty checkout of the repo $ svn up --set-depth infinity $PWD/myrepo/trunk ;# sticky dense update of the trunk ... $ svn up --set-depth infinity $PWD/branches/release_branch ;# sticky dense update of a branch $ cd $PWD/branches/release_branch $ svn merge -c 1234 ../../trunk ;# merge a revision from trunk $ svn commit $ cd .. $ svn update --set-depth exclude release_branch ;# sticky wipe out of branch from the working copy ... 

Eso es un poco poco convencional, diría yo. Lo más normal es que pague una copy de trabajo de la twig / label / troncal del proyecto en la que realmente intenta trabajar en lugar de todo el tree.

Hace que sea un poco más fácil recordar los cambios que está realizando si no tiene la capacidad de realizar cambios accidentalmente en todo el tree en cualquier momento.

Entonces si tienes

 proj tags/ t1/ branches/ b1/ b2/ trunk/ 

Tu harías

 svn checkout proj/trunk proj-trunk 

Si simultáneamente necesita trabajar en una sucursal, obtenga una copy de trabajo por separado:

 svn checkout proj/branches/b1 proj-b1 

Añadiré que a veces, mantendré una copy de trabajo de un pequeño proyecto verificado en la raíz, para poder examinar cualquier label o twig, pero en realidad no modifico esta copy . Es solo un método rápido para navegar por el repository del proyecto con un editor de text apropiado, etc. Sin embargo, a menudo se sale de synchronization y requiere un uso digno de svn up así que no uso esta técnica con demasiada frecuencia.

En mi opinión, esta es una buena idea en caso de que necesite verificar nuevas sucursales, sin consultar todo el repository. En realidad, no necesita crear las carpetas en las que no trabajará por el momento. Por ejemplo, debe comenzar con algo como myproject/trunk cuando comience su trabajo en el tronco del proyecto: de esta manera, tan pronto como quiera pasar a una twig, puede verificarlo también en su ruta más adecuada .

También prefiero crear carpetas de revisiones después del nombre de la twig, como myproject/branches/mybranch/[rev] para mayor claridad, cuando con frecuencia tengo que cambiar entre las revisiones.

Lo que generalmente hago con Source Control es sincronizar con la última revisión de la twig principal o lo que actualmente se llama la twig principal. En términos generales, solo me dedico a una twig o me sincronizo con ella si un cliente específico solicita una característica específica que no deseo include en la versión general disponible para todas las versiones. Sin embargo, si esa característica progresa lo suficiente como para considerar moverla a la compilation "GA", entonces siempre puedo fusionar esos cambios nuevamente en la twig principal.

El objective de subversión es administrar sus versiones y proporcionar una copy de security. Mantener múltiples twigs simplemente parece una excelente manera de desorganizar rápidamente y realmente confundirse en el futuro. También imho derrota el propósito del control de la fuente en primer lugar.

Generalmente como Michael explicó

 proj tags/ branches/ trunk/ 

Pero también solía agregar carpetas para documentation o bibliotecas.