2008-09-23 8 views
7

¿Siempre sigue la convención de colocar directorios de ramas, etiquetas y troncales en el nivel superior de su repositorio de Subversion? Últimamente, he dejado de molestar y nada malo ha pasado (todavía).¿Utiliza las ramas/etiquetas/convención troncal?

Debería ser posible mover árboles de directorios si alguna vez hay una necesidad de crearlos. ¿Estoy creando problemas para más adelante?

Respuesta

12

¿Has probado la bifurcación o etiquetado? Hasta entonces, no hay problema. Sin embargo, un beneficio adicional del uso de las ramas, etiquetas, convención troncal es que es exactamente eso, una convención. La gente espera ver eso, por lo que saben qué hacer cuando necesitan bifurcar.

+0

No hay muy pocas etiquetas en estos repositorios, ya que están destinadas a la documentación y gestión de proyectos en lugar de a un desarrollo de software activo. –

0

No, han abandonado ese enfoque para los proyectos actualmente en la cola. Si bien el concepto parece muy válido, parece perder más tiempo del que ahorra en la práctica.

+2

Hasta que necesite crear una rama o etiquetar una versión. En ese punto perderá horas de esfuerzo del desarrollador moviendo la base de código existente. Es más fácil tomar los 30 segundos para crear esos directorios al principio. –

+0

Lo siento apático, no toma horas crear una rama o etiqueta según sea necesario ... –

+0

No, pero una vez que mueves tu código de la raíz al tronco, tienes un montón de desarrolladores y procesos automatizados que apuntan a nada –

1

Esto depende de qué tan grande es el proyecto. Tenemos algunas cosas (concedidas, en git, pero el concepto es el mismo) que es bastante grande. Cada desarrollador usa su propia sucursal, hay una rama principal y de prueba. También etiquetamos las versiones, y si hay correcciones específicas de la versión, se crea una rama para que las correcciones se puedan integrar de manera bastante sencilla.

Esta configuración tiene sus ventajas: no conseguimos el pelo de los demás durante el desarrollo. Pero la desventaja es que necesitamos un integrador para poner las confirmaciones de la rama de desarrolladores en la rama de prueba, y luego en la línea principal.

Si el proyecto es pequeño, solo se trata de una sobrecarga, pero nunca se sabe qué tan grande será el proyecto.

+0

Etiquetas en Git son al menos útiles: puedes ver qué etiqueta es una confirmación antes/después, actúan como mnemónicos para confirmaciones, etc., etc. En las etiquetas de subversión hay un ciudadano de segunda clase y una completa pérdida de tiempo. No se puede hacer "svn log -r (nombre-tag)" o lo que sea. Incluso CVS hizo las etiquetas mejor. – richq

+0

SVN trata todo como un directorio. Para etiquetar una rama, cópiela a un directorio en el directorio ./tags/. Del mismo modo para las sucursales en SVN. En git, las ramas y las etiquetas son independientes y están hechas correctamente. – Rory

0

¿Al menos tiene un baúl? Si no es así, cuando necesite bifurcar o etiquetar, tendrá que tenerlos en su directorio raíz del proyecto, junto con el código/contenido real. ¡Ay!

EDIT: Creo que se puede crear una carpeta tronco, a continuación, trasladar todo a que, a continuación, crear sus ramas, etc ...

Para los que dicen "sólo lo hacen más tarde, no pierda el tiempo, etc. .. "Sin embargo, honestamente, ¿cuán alto es para crearlos al comienzo de su proyecto? 2 minutos, lo mejor? ¿Por qué no solo hacerlo entonces? Tomará mucho más tiempo mover todo más tarde, incluso si solo necesita rama 1 en 5 veces, todavía creo que usaría menos tiempo comenzando con una rama, etiqueta, estructura de troncales.

+0

¡No es el momento de crearlas, es la necesidad de escribir el elemento de ruta adicional durante el uso diario que me irrita! ~~~ –

+0

¿Por qué no utilizar una de las varias interfaces SVN (integración IDE, TortoiseSVN, etc.)? –

1

Acabo de empezar a utilizar realmente la convención, y estoy de acuerdo with Danimal. Si tiene una compilación en QA, y otra en producción, y otra en desarrollo de funciones loco-nuevo-experimental, es bueno cambiar rápidamente de una a otra.

0

Como dije en What do "branch", "tag" and "trunk" mean in Subversion repositories?, dado que la rama y la etiqueta son las mismas, no está obligado a seguir ninguna convención que no sea la suya.
Especialmente para un proyecto pequeño con desarrollo secuencial (es decir, no hay necesidad de esfuerzos paralelos entre desarrollo actual, mantenimiento de versiones anteriores, exploración de marcos alternativos, ...)

0

Por lo general, mantendré mi tronco en la raíz de el repositorio y solo moverlo a una carpeta Trunk si realmente necesito crear una etiqueta de una rama. Creo que con SVN, siempre que tu estructura sea lógica, no deberías tener problemas para reorganizarla más adelante si tus necesidades cambian.

0

Uso el tronco, las etiquetas y las ramas en cada proyecto. En serio, qué tan difícil es crear 2 directorios adicionales cuando se crea el proyecto. Hay algunos beneficios de seguir la convención solo para mantener la consistencia.Encuentro que tengo muchas etiquetas (cada aplicación de una aplicación fuera del entorno de desarrollo se versiona y etiqueta). No tengo tantas sucursales porque, en general, no trabajo con personas con las que no confío antes de la revisión. Entonces, generalmente cuando obtengo sucursales, es porque tengo una división permanente de la base de código, generalmente para diferentes clientes. Una vez que el código se vuelve irreconciliable, generalmente dejo una rama y la muevo a su propio baúl.

0

Últimamente estoy usando un modelo más centrado en ágil y puedes echar un vistazo here.

Es muy importante seguir algunas políticas en el control de versiones, incluso usando un modelo bien definido, la versión del código es algo que te lleva a cometer errores, confusiones desordenadas y todas esas cosas malas, así que ten cuidado .

Este modelo le da responsabilidades a cada repositorio y no le permite superponerse donde se encuentra su producción, entregable y código de construcción.

0

I siguen la convención por numerosas razones

  1. material de referencia y los procedimientos que utilizan el b/t/t convención puede aplicarse inmediatamente a su estructura SVN repo.
  2. Todos los desarrolladores que entren al equipo que estén familiarizados con la convención tienen una curva de aprendizaje mínima para acostumbrarse a su estructura de repo de svn.
  3. Donde las troncales & tienen un beneficio inmediato y obvio, es solo cuando tienes que rastrear historias y registros para cubrir el culo de tu empresa o de ti, que te das cuenta del beneficio de mantener un procedimiento de etiquetado uniforme.

En resumen, puede que no sea inmediatamente obvio por qué la convención es algo bueno, pero es cuando necesita ayuda, consejos o alguna locura de la administración que se convierte en un regalo del cielo proverbial.

0

Me gusta usar las ramas para "mini-proyectos" para una simple prueba de conceptos. Es rápido, fácil y, en general, ayuda a mantenerse al día con su proyecto principal. Puse prueba de conceptos en el directorio de sucursales ya que no está separado del proyecto principal, pero es valioso para el proyecto.

Como han mencionado otros, utilizo las etiquetas para lanzamientos. La mayoría de las versiones que hago están en versiones, así que generalmente solo tengo un archivo zip del paquete o el instalador de la versión.

2

La respuesta rápida es "haga lo que mejor se adapte a sus procedimientos".

Como Danimal dijo que la estructura de branch/trunk/tag es una convención. Sin embargo, no estoy de acuerdo con que sea la ubicación de la b/t/t lo que es importante, simplemente la existencia de ellos.

Lo que debe tener es un lugar que obviamente está designado para sucursales, en algún lugar designado para su tronco y lo mismo para sus etiquetas. Exactamente donde caen depende en gran medida de la estructura de su repositorio y la naturaleza de los archivos que conserva.

Por ejemplo, si mantiene varios proyectos en un repositorio, probablemente encontrará que tiene más sentido crear sus directorios b/t/t en sus proyectos. Si tiene módulos distintos dentro de su proyecto, la b/t/t debe crearse bajo los directorios del módulo.

Pregúntate cuál es el pedazo lógico más grande que vas a querer ramificar y déjate guiar por eso.

0

No. No son las últimas 3 situaciones de trabajo. Trabajo con no programadores que necesitan escribir, corregir y recuperar secuencias de comandos de procesamiento. La programación es en su mayoría informal, con trabajos ocasionalmente más profundos o más grandes. No hay expectativa de seguir las prácticas de grandes desarrolladores de software. La terminología estándar del repositorio puede entrar en conflicto con la jerga utilizada en el campo en el que trabajamos. Así que creamos nuestros propios directorios de repositorios.

0

En un entorno muy sencillo, puede salirse con la exclusión de la rama, etiqueta, tronco desde la parte superior de su repositorio SVN. Por ejemplo, si está utilizando SVN para sus asignaciones universitarias, no le preocuparán mucho los cambios en el código una vez que se entregue a su cliente (la persona que marca la tarea), y por lo tanto podría prescindir de manera sensata. rama, etiqueta, tronco y solo tiene una estructura. (Efectivamente, todo es el "tronco").

Si, por otro lado, ha estado administrando código que se implementa en 700 sitios diferentes y que se divide en líneas de productos separadas, estaría Es una locura no usar 'branch, tag, trunk' cerca de la parte superior de su estructura (hay una razón para dividir sus productos antes de ir por la ruta BTT), ya que necesitará saber qué código fue donde, y ser capaz de separar las principales actividades de reescritura (las cosas que haces en el tronco) de las reparaciones puntuales para ayudar a que un sitio tenga un problema inmediato (lo que haces en una rama, luego se funden en el tronco). Y si quieres poder responder a la pregunta "¿Por qué el Foobar dejó de funcionar cuando lanzamos el parche 1.2.3?" entonces las etiquetas son esenciales.

1

He escrito herramientas en el pasado para automatizar ciertas piezas de SVN. Crear un repositorio básico es uno de ellos. Paso 1: crea un repositorio vacío. Paso 2: crear carpetas de troncales, ramas y etiquetas - cometer Paso 3: copiar guiones de ganchos al nuevo repositorio

Uno de mis scripts de gancho es para asegurarse de que los elementos en el directorio de etiquetas no se puedan modificar. Esto hace que las etiquetas tengan un significado diferente de las ramas.

Cuestiones relacionadas