git accurev

git - ¿Qué es una explicación de una oración de cómo funciona Accurev?



(5)

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

Un repositorio de git es, FWIW, un bosque de árboles de historia, de los cuales las hojas de confirmación son (cometa metadatos 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, vi su video introductorio de 2 minutos (enlace destinado a referencia, no publicidad), y se parece bastante a su árbol de historial de SCM (sucursales) con tiempo promedio. Los elementos con el ícono de la ola acuosa son cabezas de bifurcación, y la carpeta amarilla es una copia de trabajo. Cuando el presentador mueve las copias de trabajo, parece estar haciendo una rebase de todas las copias de trabajo de su subordinado (¡malvado! ¡Solo piense en los conflictos de fusión!). El ícono con tres puntos verdes (la lista de problemas) sería una lista de confirmación, que se seleccionará al copiarla.

En una frase: nada que no sepas ya a través de la experiencia previa de cvs / svn / git, diría yo.

Entiendo git, Subversion, CVS y muchos 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 lo mejor.

Explicaría a git como "un gráfico dirigido de comillas donde un cometer es un diff, un hash padre (o padres) y un hash de sí mismo". Puede avanzar fácilmente desde allí para explicar conceptos como rebase y qué son realmente las combinaciones, las combinaciones de avance rápido frente a las reales, etc. Me ha resultado fácil enseñar a los nuevos usuarios conceptos complejos de git en unos 15-20 minutos.

Realmente me gustaría entender a Accurev en ese nivel. Asi que...

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

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

  • ¿Qué sucede cuando "guardo" algunos archivos y luego los "promuevo"?
  • ¿Qué pasa si no promuevo los mismos archivos que he guardado?
  • ¿Por qué a veces la historia se atribuye erróneamente cuando ocurren actualizaciones no conflictivas (también conocidas como superposición)? Esto, en particular, recuerda un modo de falla de Subversión que, a partir de las explicaciones básicas que he escuchado, no creo que deba existir con Accurev.
  • ¿Por qué diff casi nunca contiene lo que espero? Creo que lo que sucede es que la diferencia contra la base me muestra la diferencia frente a la transmisión principal (móvil) actual, pero lo que realmente quiero es solo para ver los cambios que he realizado desde la última actualización.

Accurev se deriva de ClearCase y toma después de las secuencias ClearCase UCM .
(El modelo Accurev tiene algunas similitudes con UCM y es 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 para trabajar (compilar y / o probar, y / o depurar, ...).

Es por eso que Accurev se presenta como una arquitectura basada en flujo para SCM .

Si tiene un flujo privado por desarrollador (el flujo de área de trabajo) desde el cual puede promover a flujos más comunes. Cada promoción actualiza la configuración (que de nuevo es solo la lista de lo que necesita para trabajar) de la transmisión principal.


Dado que varios otros han intentado responder a tu pregunta directa, y la respuesta de Dave es la más concisa y precisa, voy a probar tus balas:

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

    La opción Mantener un archivo creará una nueva versión de ese archivo, aún privada para su área de trabajo. Excelente para la codificación autónoma, la creación de puntos de desviación, simplemente el desarrollo privado. Puede volver en cualquier momento en el futuro a cualquier versión anterior guardada de un archivo, ya sea de usted o de cualquier otro colaborador. Cuando se sienta cómodo con la versión actual (compiló, compiló, probó, lo que sea), puede promoverla en su transmisión principal, exponiendo así a otros a su versión sin el riesgo de romper cosas como puede hacerlo cuando se compromete en el check-in

  • ¿Qué pasa si no promuevo los mismos archivos que he guardado?

    De nuevo, la autonomía total del espacio de trabajo. 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. Puede Promover ninguno, todos, uno, algunos, realmente no importa, y puede hacer esto en su línea de tiempo.

  • ¿Por qué a veces la historia se atribuye erróneamente cuando ocurren actualizaciones no conflictivas (también conocidas como superposición)? Esto, en particular, recuerda un modo de falla de Subversión que, a partir de las explicaciones básicas que he escuchado, no creo que deba existir con Accurev.

    No estoy seguro de saber específicamente a qué te refieres 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 enumerarán como (se superponen) en su área de trabajo. Nuevamente, puede elegir cuándo realizar la fusión y seguir Actualizando otros cambios desde arriba, e incluso continuar trabajando en el archivo en conflicto. La combinación se produce 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.

  • ¿Por qué diff casi nunca contiene lo que espero? Creo que lo que sucede es que la diferencia contra la base me muestra la diferencia frente a la transmisión principal (móvil) actual, pero lo que realmente quiero es solo para ver los cambios que he realizado desde la última actualización.

    La diferencia de diferencia con la base le mostrará cómo la versión en su área de trabajo se compara con la versión que heredó por última vez de una actualización o creación de área de trabajo. Un Diff contra Backed le mostrará cómo se compara su versión con la que está actualmente en la transmisión principal. Entonces, si alguien ha promovido cambios en ese archivo mientras todavía tienes el tuyo en progreso, Diff contra Basis solo se comparará con tu original, mientras que Diff contra Backed se compara con el nuevo contenido en el padre. Por cierto, en la vista Historial -> Explorar versiones, puede diferenciar dos versiones de un archivo entre sí.

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


Te daré la oración única técnica (no biz) basada en el estilo de tu Q:

AccuRev adopta un enfoque orientado a objetos para modelar configuraciones s / w. Es así de simple y es increíble! 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 este poderoso enfoque de tecnología y modelo de datos porque no pueden ver más allá de las ''sucursales'' tradicionales: ala cvs, svn, p4, cc, ad infinitum. La mejor analogía sería comparar una serie de secuencias AccuRev con reglas en una especificación de configuración en clearcase ... (nota: es solo una analogía) pero mucho más poderosa, ya que las secuencias son entidades de primera clase que mantienen la configuración y el historial basados ​​en el tiempo.

El truco para comprender AccuRev es que, si bien cualquier "flujo" dado -representa- una configuración completa (es decir, puede verificarlo), el contenido real de ese flujo se determina dinámicamente agregando cualquier archivo local / cambios de directorio, cualquier cambio del padre, en la parte superior del árbol hasta la parte superior donde se reúnen el resto de los archivos. Entonces, cada vez que vea un ''árbol'' de flujos, NO son ramas ... más bien una serie de configuraciones basadas en herencia donde el flujo superior es como la ''superclase'' y todos los [grandes] hijos son subclases. Los nuevos cambios de archivo / dir se promocionan en el árbol a medida que van desde el desarrollo, la integración, el control de calidad, etc.

HTH _ Dave


Descargo de responsabilidad: el sistema de control de fuente que mejor entiendo es SVN. De modo que influye en mi uso de términos como repo, pago, etc. Además, utilizo Accurev a diario, pero tiendo a no aventurarme lejos de los conceptos centrales que creo que tengo una comprensión firme de.

Una frase (con un asterisco): Accurev es un repositorio ordenado por el tiempo que mantiene un historial de revisión de los archivos cambiados para cada flujo / área 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 del núcleo de sus flujos padre e hijo *.

(*) Una secuencia secundaria actualiza una secuencia solo una vez que la corriente secundaria promueve los cambios en la secuencia principal.

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

(Llegaré a los espacios de trabajo más tarde. No te preocupes por ellos en este punto).

Cuando creas una transmisión criada de otra, es como si hicieras una rama SVN para crear la transmisión secundaria, pero la diferencia (maravillosa) es que las combinaciones de SVN se cuidan cada vez que actualizas la transmisión principal o secundaria (o se le avisa cuando existe un conflicto y necesita resolverlo manualmente).

Digamos que comienzas 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 secuencias secundarias a continuación, ChildStream1, ChildStream2. Cualquier cambio realizado en los archivos en CompanyStream se filtrará a ambas secuencias secundarias, por lo que siempre tienen el último código que heredaron de CompanyStream. (La herencia de los cambios de revisión es un concepto básico en Accurev.) Mientras tanto, está realizando un desarrollo específico para un proveedor en ChildStream1, y cambios específicos para otro proveedor en ChildStream2. Puede decidir de forma selectiva qué código de ChildStream1 y 2 se promocionará a CompanyStream, pero cualquier cambio realizado en CompanyStream debe ser algo que desee que aparezca en ambas secuencias secundarias. Si promueve el código de ChildStream1 a CompanyStream, esos cambios aparecerán en ChildStream2 una vez que se actualice (porque, de nuevo, hereda CompanyStream)

La visualización de la secuencia se vería así:

CompanyStream -
| - ChildStream1
| - ChildStream2

Accurev Overlap = Se ha modificado un archivo en una transmisión principal desde que actualizó su transmisión. Visualice la transmisión principal como si estuviera por encima de usted (así es como se mostrará en el cliente), y esa transmisión ha progresado horizontalmente para que se superponga al punto en el tiempo en que se encuentra.

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

Espacios de trabajo Accurev

No he mencionado espacios de trabajo todavía. Un espacio de trabajo representa el código en su disco duro. Un espacio de trabajo es similar a una secuencia en que puede tener un historial y puede realizar un seguimiento de los cambios que ha realizado. (Esto es lo que hace una Conservación: almacena una instantánea de los archivos que especificó durante la operación Mantener en el historial de su área de trabajo. Puede volver a esas instantáneas de archivos en cualquier momento. Como resultado, una área de trabajo también puede verse como su flujo personal, privado, que es un registro de los cambios realizados en el código dentro de).

Las secuencias son conceptos abstractos que representan cambios de revisión y un historial 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 las secuencias, los espacios de trabajo no pueden tener secuencias secundarias o espacios de trabajo secundarios. Los espacios de trabajo son como las hojas de un árbol; Las corrientes son como las ramas.

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

Promueves a una corriente. Te mantienes en un espacio de trabajo. Los cambios promocionados son visibles para todos los que pueden ver la transmisión. Los cambios guardados son visibles solo para usted, el propietario del área de trabajo.

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

  • ¿Qué pasa si no promuevo los mismos archivos que he guardado?

Entonces solo estarán en tu espacio de trabajo. Además, creo que cuando haces una promoción, Accurev se mantiene primero (de modo que tienes un registro del cambio de archivo tanto en tu área de trabajo como en el flujo al que estás promocionando).

  • ¿Por qué a veces la historia se atribuye erróneamente cuando ocurren actualizaciones no conflictivas (también conocidas como superposición)? Esto, en particular, recuerda un modo de falla de Subversión que, a partir de las explicaciones básicas que he escuchado, no creo que deba existir con Accurev.

¿Puede dar un ejemplo? Mi comprensión de la versión del archivo de Accurev es un poco borrosa. Creo que el atributo de versión será asignado por el área de trabajo o la secuencia desde la cual se promovió el cambio más reciente (no se mantuvo). Es posible que haya algunas relaciones de herencia de secuencias que hacen que un archivo tenga atributos que no parezcan correctos hasta que lo rastree.

  • ¿Por qué diff casi nunca contiene lo que espero? Creo que lo que sucede es que la diferencia contra la base me muestra la diferencia frente a la transmisión principal (móvil) actual, pero lo que realmente quiero es solo para ver los cambios que he realizado desde la última actualización.

Luego haga una diferencia contra "Respaldado", no contra Base.

La configuración simple que funciona para mí es: siempre creo mi propio flujo privado y personal a partir de algún flujo de desarrollo público. Luego, cuando hago cambios que quiero registrar (o poder revertir a), promuevo a mi propia transmisión. Sigo trabajando en mi espacio de trabajo, y si quiero diferenciarlo de lo que he hecho anteriormente o de lo que está pasando por encima de mí (cambios que otras personas han hecho), hago una diferencia contra Respaldado.

Lo siento, esto es demasiado largo. Esperemos que ayude ...