¿Cómo usar Subversion para el lenguaje no comstackdo?

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

El ciclo normal de actualización / confirmación funcionará bien, ya que modificará el seguimiento y la comparación de las revisiones. Donde me gustaría un consejo es sobre el event handling la implementación.

Con este sistema de script, no hay un paso de compilation distinto involucrado; en su lugar, la implementación implica cargar una secuencia de commands seleccionada directamente en la aplicación de host.

Los cambios en un script no se incluyen necesariamente en el próximo lanzamiento; pueden estar destinados para el lanzamiento posterior o posterior.

En un mundo ideal, me gustaría poder asignar una secuencia de commands en una versión determinada, por ejemplo, la versión "septiembre de 2009", una vez que se haya probado, y luego extraer todas las secuencias de esa versión con un solo command.

Actualizar

Por lo que puedo decir, ni Tags ni ChangeLists van a ser la respuesta.

Las lists de cambios no son persistentes (no existen en el repository) y necesito una solución que permita una revisión mucho más tarde.

Las tags son efectivamente las mismas que las sucursales: contienen todos los files de forma pnetworkingeterminada, y usted solo elige las revisiones.

Espero un enfoque que comience con una twig vacía en la que las revisiones de files específicos se puedan colocar según sea necesario.

Actualización 2

Dos ejemplos, que muestran cómo puedo enfrentar esta situación con las características de otras herramientas. Tenga en count que no estoy tratando de promocionar estas herramientas en absoluto, ya que quiero usar subversión, solo estoy tratando de averiguar cómo.

Con QVCS , puedo lograr el resultado deseado aplicando una label a una revisión específica de un file. Esa label se mantendría en su lugar, adjunta a esa revisión de ese file. En cualquier momento, pude hacer un checkout limpio, en un directory vacío, y especificar que solo los files con la label especificada deberían copyrse.

Del mismo modo, con StarTeam , puedo aplicar una label a una revisión de file y retirar solo los files con esa label.

"En un mundo ideal, me gustaría poder asignar una secuencia de commands en una versión determinada, por ejemplo, la versión" septiembre de 2009 ", una vez que se haya probado, y luego extraer todos los scripts para esa versión con un solo command. "

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

Puede gestionar sus lanzamientos "futuros" con las sucursales de Subversion. Cuando realice un cambio destinado a una versión futura, confírmelo a la twig correspondiente. Cuando llegue el momento de incorporar todas esas funciones futuras al tronco, fusione la twig.

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

Vea la sección de Patrones de ramificación comunes del libro de Subversion para más información. En particular, la sección "Sucursales de funciones" parece más apropiada para su situación.

Una solución sería comenzar una nueva twig usando svn mkdir (en lugar de svn copy ), y luego copyr selectivamente los files necesarios desde la twig principal a través de svn copy

Veo el problema, que no tiene nada que ver con SVN. Desea almacenar algunos files en una twig de versión, pero no en otros. Entonces, bifurque todo el directory de versiones y luego elimine los files que no desea mostrar allí; o crea un nuevo directory vacío y copy solo los files que deseas.

Es así de simple. No necesita lists de cambios ni tags ni nada complicado, y ningún sistema de subversión podrá adivinar qué files desea. Personalmente, haría la opción de sucursal + eliminar ya que puede deshacer la eliminación en una date posterior si decide que desea recuperar los files.

Creo que con svn 1.6 puedes tener elementos externos apuntando a files individuales. Por lo tanto, si lo desea, puede crear una estructura de tree vacía y definir un set de elementos externos que incorporen los files que desea en la estructura. Esto le daría una especie de "visualización en vivo" de una sucursal.

Tal vez podría hacer reference a las versiones de file directamente desde el enlace troncal, o podría aplicar capas a su enfoque y usar una twig de publicación para fusionarse en revisiones particulares, y luego hacer reference a esa twig de publicación en los aspectos externos de su "visualización en vivo". De esta forma, libera características mediante la fusión de revisiones, manteniendo el control de revisión normal y el historial de fusión, y luego una actualización de svn en el server haría que esos files entren en la estructura en vivo.

La desventaja sería que sería difícil cambiar a una twig diferente (digamos una label vieja, debido a un problema en la nueva versión) – tendría que editar manualmente todas sus definiciones externas. Esto puede no ser un problema si están todos en el mismo directory, pero podría ser un problema si tiene que searchlos.

En las notas de la versión de svn 1.6 hay disponible un poco de información sobre los files externos.

Parece que está buscando metadatos sobre scripts específicos. Por lo tanto, una opción es almacenar sus scripts como files separados y usar las properties de svn . Las properties Svn le permiten almacenar pares key-valor asociados con un file.

Por ejemplo, para reflejar su ejemplo de "label", puede crear una propiedad para cada file que decida include en una publicación en particular. En este caso, cree una propiedad "Septiembre de 2009" con el valor "verdadero".

A continuación, puede seleccionar solo los files con la propiedad "Septiembre de 2009" al generar su package de implementación.

El uso de tags y twigs es útil cuando desea rastrear los cambios en su repository a lo largo del time, y generar diffs para ver cuáles son esos cambios, pero es una instantánea de todo el repository …