Pregunta

Quiero usar Subversion con un sistema de desarrollo basado en la escritura, y se preguntaba qué hacer de manera diferente a mi situación habitual (C # /. NET).

La actualización de la normalidad del día a día / cometen ciclo no tendrán ningún problema, ya que cambiará el seguimiento y la comparación de las revisiones. Donde me gustaría algún consejo es de alrededor de manejo de despliegue.

Con este sistema de escritura, no hay paso de generación distinta involucrados - en cambio, implica el despliegue de subir un script seleccionado directamente en la aplicación host.

Los cambios en una secuencia de comandos no están necesariamente incluidos en la próxima versión - que puede ser destinada para la liberación después de eso, o el que después de eso.

En un mundo ideal, me gustaría ser capaz de asignar una secuencia de comandos en un comunicado dado, decir la liberación "Septiembre 2009", una vez que ha sido probado, y luego sacar todas las secuencias de comandos para que la liberación con una sola comandos.

Actualizar

Por lo que yo puedo decir, ni etiquetas ni listas de cambios van a ser la respuesta.

Las listas de cambios no son persistentes (no existen en el repositorio) y que necesitan una solución que permita revisión mucho más adelante.

Las etiquetas son efectivamente lo mismo que las ramas - contienen todos archivos por defecto, y que acaba de elegir qué revisiones.

Estoy esperando un enfoque que empezar con una rama de vacío en la que las revisiones de archivos específicos podrían ser colocados según sea necesario.

Actualización 2

Dos ejemplos, que muestran cómo puedo satisfacer esta situación con funciones añaden en otras herramientas. Tenga en cuenta que no estoy tratando de promover estas herramientas en absoluto, ya que quiero usar la subversión, sólo estoy tratando de averiguar cómo.

QVCS , puedo lograr el resultado deseado mediante la aplicación de una etiqueta a una revisión específica de un archivo. Esa etiqueta se quedaría en su lugar, que se adjunta a esa revisión de ese archivo. En cualquier momento, lo que podía hacer una extracción limpia, en un directorio vacío, y especificar que sólo los archivos con la etiqueta especificada deben copiar hacia abajo.

Del mismo modo, con StarTeam , I puede aplicar una etiqueta a una revisión de archivos y la salida sólo los archivos con esa etiqueta.

¿Fue útil?

Solución

"En un mundo ideal, me gustaría ser capaz de asignar una secuencia de comandos en un comunicado dado, decir que la 'versión de septiembre de 2009', una vez que ha sido probado, y luego sacar todas las secuencias de comandos para que se liberar con un solo comando ".

Esto es exactamente lo que etiquetas están diseñadas para .

Otros consejos

Puede administrar los "futuros" comunicados con ramas de Subversion. Cuando se realiza un cambio que está destinado para una futura versión, se comprometen a la rama correspondiente. Cuando llega el momento de sacar todas esas características futuras en el maletero, fusionar la rama.

Esto no es realmente tan diferente del flujo de trabajo para el uso de Subversion con un lenguaje compilado, o de hecho para cualquier otro propósito.

Común ramificación sección de los patrones libro de Subversion para más información. En particular, la sección "Función ramas" suena más adecuado para su situación.

Una solución sería comenzar de una nueva rama usando svn mkdir (en lugar de svn copy), y luego copiar de forma selectiva los archivos necesarios de su rama principal a través de svn copy

Veo el problema - que no tiene nada que ver con SVN. Desea almacenar algunos archivos en una rama de lanzamiento, pero no otros. Así y alguna de las ramas del directorio de versión entera a continuación, elimine los archivos que no desea mostrar allí; o crear un nuevo directorio vacío y copiar sólo los archivos que desea.

Su es así de simple. No es necesario listas de cambios o etiquetas o nada complicado en absoluto, y ningún sistema subversión será capaz de adivinar qué archivos que desea. En lo personal, me gustaría hacer la rama + opción de borrado como entonces se puede deshacer la eliminación en una fecha posterior si usted decide que no desea los archivos de nuevo.

Creo que con SVN 1.6 se puede tener aspectos externos que apuntan a archivos individuales. Así que, si lo desea, puede crear una estructura de árbol vacío y definir un conjunto de factores externos sobre el mismo que traen en los archivos que desea en la estructura. Esto le daría una especie de 'vista en vivo' de una rama.

Se podría quizá hacer referencia a las versiones de los archivos directamente del tronco - o puede estratificar su enfoque y utilizar una rama de lanzamiento para fusionarse en las revisiones particulares, y después hacer referencia a que la rama de lanzamiento en lo externo de su 'vista en vivo'. De esa manera, liberar características mediante la fusión de las revisiones - mantener el control de revisión normal y fusionar la historia, y luego un SVN-actualización en el servidor tiraría de los archivos en la estructura vivo

.

El inconveniente sería que sería difícil de cambiar a una rama diffrerent (por ejemplo una etiqueta de edad, debido a un problema en la nueva versión) - que tendría que editar manualmente todas sus definiciones externas. Esto puede no ser un problema si todos están en el mismo directorio, pero podría ser un problema si usted tiene que buscar alrededor para ellos.

Un poco de información sobre los archivos externos están disponibles en el SVN notas de la versión 1.6

Parece que usted está buscando metadatos acerca de los scripts específicos. Por lo tanto es una opción para almacenar las secuencias de comandos como archivos separados, y usar propiedades SVN . SVN propiedades le permiten almacenar pares clave-valor asociado a un archivo.

Por ejemplo, para reflejar su "etiqueta" ejemplo, puede crear una propiedad para cada archivo que decida incluir en una versión particular. En este caso, cree una propiedad "Septiembre 2009" con el valor "verdadero".

A continuación, puede seleccionar sólo los archivos con la propiedad "Septiembre 2009" cuando se genera el paquete de implementación.

El uso de etiquetas y ramas son útiles cuando se desea realizar un seguimiento de los cambios en el repositorio con el tiempo, y para generar diffs para ver lo que esos cambios son - pero es una instantánea de todo el repositorio ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top