¿Qué es una explicación de una frase de cómo funciona Accurev?


Entiendo git, Subversion, CVS y una miríada de otros sistemas de control de código fuente.

He empezado a usar Accurev y me confunde.

Creo que necesito formar un modelo mental que lo relacione con otros SCM. Idealmente en relación con git porque entiendo git mejor.

Explicaría git como "un gráfico dirigido de commits donde un commit es un diff, un hash padre (o padres), y un hash de sí mismo."Puedes pasar fácilmente a partir de ahí para explicar conceptos como rebase y lo fusiona realmente son, fast-forward vs real se funde y así sucesivamente. He encontrado fácil enseñar a los nuevos usuarios conceptos complejos de git en unos 15-20 minutos.

Realmente me gustaría entender Accurev en ese nivel. Tan...

¿Cuál es la abstracción de una oración de cómo funciona Accurev que hace posible explicar cómo se comporta?

Algunos ejemplos de preguntas que me gustaría que mi modelo mental respondiera:

  • ¿Qué sucede cuando "guardo" algunos archivos ¿y luego "promoverlos"?
  • ¿Qué pasa si no promociono los mismos archivos que acabo de guardar?
  • ¿Por qué la historia a veces se atribuye erróneamente cuando ocurren actualizaciones no conflictivas (también conocidas como superpuestas)? Esto, en particular, es una reminiscencia de un modo de subversión fallido que, por las explicaciones básicas que he escuchado, no creo que deba existir con Accurev.
  • ¿Por qué las diferencias casi nunca contienen lo que espero que contengan? Creo que lo que pasa es que la diferencia contra la base es mostrándome la diferencia con la corriente principal actual (en movimiento), pero lo que realmente quiero es solo ver los cambios que he hecho desde la última actualización.
 28
Author: Otto, 2011-01-07

5 answers

Descargo de responsabilidad: El sistema de control de código fuente que mejor entiendo es SVN. Así que colorea mi uso de términos como repo, checkout, etc. Además, uso Accurev a diario, pero tiendo a no aventurarme lejos de los conceptos centrales de los que siento que tengo una firme comprensión.

Una oración (con un asterisco): Accurev es un repositorio ordenado por el tiempo que mantiene un historial de revisiones de archivos modificados para cada flujo/espacio de trabajo, y le permite desarrollar diferentes versiones del código (en flujos) mientras que cada flujo se actualiza de forma transparente con el código central de sus flujos padre e hijo*.

(*) Una secuencia es actualizada por una secuencia secundaria solo una vez que una secuencia secundaria promueve cambios en la secuencia principal.

El principal beneficio de Accurev es la capacidad de mantener diferentes versiones de código fácilmente. Si quieres entenderlo, no buscaría abstracciones rápidas o términos redefinidos en un lenguaje con el que estés familiarizado. Me gustaría buscar ejemplos y un suave explicación de los términos a medida que surgen. Desafortunadamente, sólo sé lo que necesito saber, pero lo intentaré...

(Iré a workspaces más tarde. No te preocupes por ellos en este momento.)

Cuando crea una secuencia con matriz de otra, es como si hubiera hecho una rama SVN para crear la secuencia secundaria, pero la (maravillosa) diferencia es que las fusiones SVN se encargan de usted cada vez que actualiza la secuencia primaria o secundaria (o se le alerta cuando existe un conflicto y necesita para resolverlo manualmente).

Digamos que empiezas con una transmisión, CompanyStream. Su base de código es administrada por esa secuencia, y tiene un historial de cambios que ha realizado en los archivos. A continuación, decide crear dos flujos secundarios debajo de eso, ChildStream1, ChildStream2. Cualquier cambio realizado en los archivos de CompanyStream se filtrará a ambos flujos secundarios, por lo que siempre tendrán el código más reciente que heredaron de CompanyStream. (La herencia de los cambios de revisión es un concepto básico en Accurev.) Mientras tanto, estás haciendo desarrollo específico para un proveedor en ChildStream1, y cambios específicos para otro proveedor en ChildStream2. Puede decidir selectivamente qué código de ChildStream1 y 2 se promociona a CompanyStream, pero cualquier cambio realizado en CompanyStream debería ser lo que desea que aparezca en ambos flujos secundarios. Si promocionas código de ChildStream1 a CompanyStream, entonces esos cambios aparecerán en ChildStream2 una vez que haga una actualización (porque de nuevo, hereda CompanyStream)

La visualización de flujo se vería así:

CompanyStream {
                            / Child ChildStream1
                            / Child ChildStream2

Accurev Overlap = Un archivo en una secuencia padre ha sido modificado desde que actualizaste tu secuencia. Visualiza el flujo padre como si estuviera encima de ti (así es como se mostrará en el cliente), y ese flujo ha progresado horizontalmente para que se superponga al punto en el tiempo en el que estás en.

Mapeo rápido de SVN a conceptos Accurev:
SVN Checkin-Promote
SVN Checkout-Anchor (Anclar algo lo convierte en un WIP - Work In Progress)
SVN Update-Update

Accurev Workspaces

Todavía no he mencionado los espacios de trabajo. Un espacio de trabajo representa el código del disco duro. Un espacio de trabajo es similar a un flujo en el sentido de que puede tener un historial y puede realizar un seguimiento de los cambios que haya realizado. (Esto es lo que hace un Keep stores almacena un instantánea de los archivos que especifique durante esa operación de mantenimiento en el historial de su espacio de trabajo. Puede volver a esas instantáneas de archivo en cualquier momento. Como resultado, un espacio de trabajo también se puede ver como su propio flujo personal y privado, que es un registro de los cambios realizados en el código dentro.)

Los flujos son conceptos abstractos que representan cambios de revisión, y una historia de lo que ha sucedido. Las secuencias y los espacios de trabajo heredan el código de sus secuencias principales. Sin embargo, a diferencia de los flujos, los espacios de trabajo no se pueden tener flujos secundarios ni espacios de trabajo secundarios. Los espacios de trabajo son como hojas en un árbol; los arroyos son como ramas.

  • ¿Qué sucede cuando "guardo" algunos archivos y luego los "promociono"?

Promocionas a una transmisión. Te quedas en un espacio de trabajo. Los cambios promovidos son visibles para todos los que pueden ver la transmisión. Los cambios guardados solo son visibles para usted, el propietario del espacio de trabajo.

Los archivos guardados tendrán instantáneas en su espacio de trabajo (en caso de que desee volver a ellos). Los archivos promocionados tendrán instantáneas (por así decirlo) en la transmisión a la que los promovió. La gran diferencia es que los cambios promocionados se filtrarán a cualquier flujo o espacio de trabajo que herede ese flujo.

  • ¿Qué pasa si no promociono los mismos archivos que acabo de guardar?

Entonces solo estarán en tu espacio de trabajo. Además, creo que cuando haces una promoción, Accurev hace un keep primero (por lo que tienes un registro del cambio de archivo tanto en tu espacio de trabajo como en la transmisión a la que estás promocionando).

  • ¿Por qué la historia a veces se atribuye erróneamente cuando ocurren actualizaciones no conflictivas (también conocidas como superpuestas)? Esto, en particular, es una reminiscencia de un modo de subversión fallido que, por las explicaciones básicas que he escuchado, no creo que deba existir con Accurev.

¿Puedes dar un ejemplo? Mi comprensión del control de versiones de archivos de Accurev es un poco borrosa. Creo que el atributo version será asignado por el workspace o stream desde que el cambio más reciente fue promovido (no Mantenido). Es posible que haya algunas relaciones de herencia de secuencias que hacen que un archivo tenga atributos que no parecen correctos hasta que lo rastrees.

  • ¿Por qué las diferencias casi nunca contienen lo que espero que contengan? Creo que lo que sucede es que la diferencia contra la base me está mostrando la diferencia contra la corriente principal actual (en movimiento), pero lo que realmente quiero es solo ver los cambios que he hecho desde la última vez que actualizar.

Luego haga un diff contra "Backed", no contra Basis.

La configuración simple que funciona para mí es: Siempre creo mi propio flujo personal y privado a partir de algún flujo de desarrollo público. Luego, cuando hago cambios que quiero comprobar (o ser capaz de volver a), promover a mi propia corriente. Sigo trabajando en mi espacio de trabajo, y si quiero comparar mi espacio de trabajo con lo que he hecho anteriormente o lo que está pasando por encima de mí (cambios que otras personas han hecho), lo hago una diferencia contra Backed.

Lo siento, esto es tan largo. Espero que ayude...

 25
Author: compilererror,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-18 15:28:04

Dado que varios otros han intentado responder a su pregunta directa - con la respuesta de Dave siendo la más concisa y precisa-Voy a tomar una puñalada en sus balas:

  • ¿Qué sucede cuando "guardo" algunos archivos y luego los "promociono"?

    La conservación de un archivo creará una nueva versión de ese archivo, aún privada para tu espacio de trabajo. Excelente para codificación autónoma, creación de puntos de desviación, desarrollo privado simple. Usted puede, en cualquier momento en el futuro volver a cualquier versión guardada anterior de un archivo, ya sea de usted mismo o de cualquier otro colaborador. Cuando se sienta cómodo con la versión que tiene actual (que ha compilado, construido, probado, lo que sea), puede promoverlo en su flujo padre, exponiendo así a otros a su versión sin el riesgo de romper cosas como puede cuando se compromete a la hora de check-in.

  • ¿Qué pasa si no promociono los mismos archivos que acabo de guardar?

    De nuevo, espacio de trabajo total autonomía. Puedes trabajar en 100 archivos a la vez si eres el tipo de desarrollador que puede hacer un seguimiento de lo que estás haciendo. Puedes promover ninguno, todos, uno, algunos-realmente no importa-y puedes hacer esto en tu línea de tiempo.

  • ¿Por qué la historia a veces se atribuye mal cuando ocurren actualizaciones no conflictivas (también conocidas como superpuestas)? Esto, en particular, es una reminiscencia de un modo de subversión fallido que, por las explicaciones básicas que he escuchado, no creo que deba existir con Accurev.

    No estoy seguro de saber específicamente a qué se refiere aquí. Cuando ejecuta una actualización en un espacio de trabajo AccuRev, nunca sobrescribirá su trabajo en curso. Si está trabajando en elementos que de otro modo se heredarían (lo que significa que el contenido de su jerarquía principal ha cambiado), se mostrarán como (se superponen) en su espacio de trabajo. Una vez más, puede elegir cuándo realizar la fusión, y aún actualizar otros cambios desde arriba, e incluso continuar trabajando en el archivo en conflicto. La fusión ocurre en el espacio de trabajo, en lugar de en tiempo de promoción, lo que le da la opción de compilar, compilar y probar el resultado una vez más antes de entregarlo en otro lugar.

  • ¿Por qué las diferencias casi nunca contienen lo que espero que contengan? Creo que lo que sucede es que diff contra base me está mostrando el diff contra la corriente principal actual (en movimiento), pero lo que realmente quiero es solo ver los cambios que he hecho desde la última actualización.

    Una diferencia contra Basis le mostrará cómo se compara la versión de su espacio de trabajo con la última versión que heredó de una actualización o creación de un espacio de trabajo. Una diferencia con Backed le mostrará cómo se compara su versión con lo que está actualmente en la secuencia padre. Por lo tanto, si alguien ha promocionado cambios en ese archivo mientras aún tienes el tuyo en progreso, la comparación con la base solo se comparará con el original, mientras que la comparación con la copia de seguridad se comparará con el nuevo contenido del padre. Por cierto, en la Historia - >Ver versiones puede comparar dos versiones de un archivo entre sí.

Esperemos que esto proporcione un poco de perspectiva sobre sus preguntas específicas.

 5
Author: jtalbott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-23 10:14:22

Explicaría git como "un gráfico dirigido de commits donde un commit es un diff, un hash padre (o padres), y un hash de sí mismo."

Un repositorio git es, FWIW, un bosque de árboles de historia, de los cuales las hojas de confirmación son (metadatos de confirmación más) árboles de directorios y archivos. No hay diferencias, no en Git, al menos cuando se trata del concepto. Si el motor de almacenamiento pasa a hacer la deltificación, esa es otra historia.

En cuanto a AccuRev, observé su video introductorio de 2 minutos (enlace destinado a referencia, no a publicidad), y se parece bastante a su árbol de historia de SCM (ramas) organizado en tiempo promedio. Los elementos con el icono de onda acuosa son cabezas de rama, y la carpeta amarilla es una copia de trabajo. Cuando el presentador mueve las copias de trabajo, parece estar haciendo un rebase de todas las copias de trabajo de su subordinado (¡mal que! ¡solo piensa en los conflictos de fusión!). El icono con tres puntos verdes (la lista de cuestiones) sea una lista de confirmación, entonces eso es elegido cuando lo copia.

En una oración: nada que no sepas ya a través de la experiencia previa a cvs/svn/git - muévete yo diría.

 3
Author: user562374,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-07 00:18:16

Accurev es derivado de ClearCase y toma después de flujos UCM ClearCase.
(El modelo Accurev tiene algunas similitudes con la UCM, y bien recibido por los antiguos usuarios de ClearCase )

Una secuencia es una configuración , es decir, la lista de etiquetas (para componentes de solo lectura) o archivos (para componentes de escritura) que necesita trabajar (compilar, y/o probar, y/o depurar,...).

Es por eso que Accurev se presenta como un Arquitectura Basada en Stream para SCM.

If tiene una secuencia privada por desarrollador (la secuencia del espacio de trabajo) desde la que puede promover a secuencias más comunes. Cada promoción actualiza la configuración (que de nuevo es solo la lista de lo que necesitas trabajar) del flujo padre.

 3
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:09:56

Te daré la frase técnica (no biz) basada en el estilo de tu Q:

AccuRev toma un enfoque orientado a objetos para modelar configuraciones s/w. Es así de simple y es impresionante! Especialmente si está modelando un flujo de trabajo o, mejor aún, configurando la entrega continua (otro tema). Pero he visto que muchas personas descartan esta poderosa tecnología y el enfoque del modelo de datos porque no pueden mirar más allá de las 'ramas' tradicionales ala cvs, svn, p4, cc, ad infinitum. La mejor analogía sería comparar una serie de flujos AccuRev con reglas en una especificación de configuración en clearcase... (nota: es solo una analogía) pero mucho más potente ya que los flujos son entidades de primera clase que mantienen la configuración basada en el tiempo y el historial.

El truco para entender AccuRev es que mientras que cualquier "flujo" dado - representa-una configuración completa (es decir, puede comprobarlo), el contenido real de ese flujo se determina dinámicamente mediante la agregación de cualquier archivo local/cambios dir, cualquier cambios desde el padre, arriba del árbol hasta la parte superior donde se reúnen el resto de los archivos. Así que cada vez que ves un 'árbol' de arroyos, no son ramas... más bien una serie de configuraciones basadas en herencia donde el flujo superior es como la 'superclase' y todos los hijos [nietos]son subclases [sub]. Los nuevos cambios de archivos / dir se promueven en el árbol a medida que van desde el desarrollo, la integración, el control de calidad, etc.

HTH _ dave

 1
Author: user129236,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-07 05:36:18