Uso de control de versiones externo

La forma más avanzada de trabajar con proyectos bajo control de versiones es aprovechar las capacidades de un Workspace conectado. Un Workspace ofrece la estructura avanzada de un proyecto, lo que proporciona un flujo de trabajo y un almacenamiento simplificados, capacidades de colaboración mejoradas y mucho más.

El repositorio VCS de destino en un Workspace está estrechamente integrado tanto con el Workspace como con Altium Designer (cuando se ha iniciado sesión), lo que elimina la necesidad de configurar repositorios VCS independientes. El acceso de los usuarios, el contenido del repositorio y el estado de los proyectos se pueden gestionar a través de la interfaz del navegador del Workspace. Si está utilizando el VCS interno de un Workspace conectado, la información de esta página no se aplica a su caso.

Este documento detalla el enfoque fundamental para usar control de versiones externo, donde el repositorio no está alojado en un Workspace conectado. Esto incluye repositorios de control de versiones disponibles localmente, a través de una red conectada o desde un producto de servidor VCS dedicado. Si está utilizando un VCS externo, continúe leyendo.

Una de las mayores fortalezas de un entorno electrónico de creación y edición es la facilidad con la que se puede crear y modificar un archivo. Esta capacidad significa que las ideas pueden capturarse, explorarse y desarrollarse rápidamente, pero también significa que puede ser difícil llevar un seguimiento de los cambios realizados en archivos valiosos, como el código fuente y los datos de diseño electrónico.

La necesidad de llevar un seguimiento de los cambios realizados en un archivo, combinada con la necesidad de una solución sistemática para gestionar fuentes capturadas en formato electrónico, dio origen a los sistemas de control de versiones (VCS). Los sistemas de control de versiones son herramientas de software que no solo pueden mantener un historial de las distintas versiones de un archivo, sino que también permiten abrir cualquier revisión de ese archivo, así como comparar los cambios realizados entre cualesquiera dos versiones del archivo. Por lo general, un VCS se integra con el sistema operativo (OS) local proporcionando funciones y operaciones adicionales de versionado para carpetas y archivos.

Los sistemas de control de versiones pueden funcionar completamente de forma independiente del entorno de creación y edición utilizado para crear un archivo. Normalmente ofrecen una interfaz que le permite añadir y luego confirmar archivos en un área de almacenamiento central llamada repositorio, una función Checkout para copiar un archivo desde el repositorio a una carpeta de trabajo, una función Commit para registrar de nuevo en el repositorio cualquier cambio, un método para registrar información sobre un cambio y mucho más.

Estas funciones se encuentran en extensiones del shell de Windows, como el cliente Tortoise y también están incluidas en Altium Designer. Las operaciones de VCS pueden realizarse dentro del entorno de Altium Designer sin necesidad de acceder al sistema de archivos del OS.

Es útil comprender la terminología utilizada con los sistemas de control de versiones. Aunque existen numerosos sistemas disponibles, por lo general todos utilizan términos similares para describir su funcionalidad.

Conceptos esenciales del control de versiones

Altium Designer admite los sistemas de control de versiones (VCS) Subversion (SVN) y Git. Debido a que cuenta con soporte interno para estos sistemas, proporciona acceso a los comandos comunes de manejo de archivos de SVN/Git, como Commit, Update, etc., dentro de Altium Designer, junto con capacidades adicionales de Subversion, como la posibilidad de crear un repositorio SVN. Esto se integra con las funciones de comparación de esquemáticos y PCB, lo que facilita comparar rápidamente e identificar diferencias entre dos revisiones de un documento esquemático o PCB y, para diseños de PCB, resolver conflictos de revisiones concurrentes.

El enfoque básico para trabajar con un sistema de control de versiones (VCS) consiste en acceder desde un repositorio a una copia de los archivos del proyecto con los que desea trabajar, editar los archivos en Altium Designer y luego hacer “commit” de los archivos modificados de vuelta al repositorio. La interacción con el repositorio se realiza a través de una interfaz de sistema de control de versiones, que Altium Designer incorpora en su panel Storage Manager y en el panel Projects.

La clave de cómo funciona un sistema de control de versiones es que supervisa el estado de los archivos a los que se ha accedido desde el repositorio a través de una carpeta de trabajo y, por lo tanto, realiza el seguimiento de qué revisión se está utilizando y si ha sido modificada. Aunque el resultado es el mismo, la organización del repositorio y de los archivos de trabajo difiere entre los tipos de sistemas de control de versiones: Git o SVN.

Asegúrese de que las extensiones de software VCS Provider - SVN y VCS Provider - Git estén instaladas en Altium Designer. Estas extensiones se instalan con Altium Designer de forma predeterminada y pueden instalarse o eliminarse manualmente.

Para obtener más información sobre la gestión de extensiones, consulte la página Extending Your Installation (Altium Designer Develop, Altium Designer Agile, Altium Designer).

VCS Git

La figura siguiente ilustra el concepto de un recurso compartido de repositorio Git remoto que contiene una secuencia de revisiones de archivos de diseño (hasta la revisión 5), donde su contenido se ha copiado a un repositorio Git local de trabajo, normalmente mediante la clonación del repositorio remoto o la incorporación de sus datos al repositorio de trabajo mediante Pull. Cuando los archivos del repositorio de trabajo se abren en el entorno de Altium Designer, Altium Designer reconoce que un archivo de proyecto está bajo control de versiones Git, y su estado actual de control de versiones se muestra tanto en el panel Storage Manager como en el Projects.

Concept image showing how the files are managed by the Git Version Control System

► Consulte la página Control de versiones basado en Git para obtener más información.

VCS Subversion

La figura siguiente ilustra el concepto de un repositorio Subversion que contiene una secuencia de revisiones de archivos de diseño (hasta la revisión 5), con la copia más reciente extraída (File » Check Out) en una carpeta de trabajo. Cuando los archivos de la carpeta de trabajo se abren en el entorno de Altium Designer, Altium Designer reconoce que un archivo de proyecto está bajo control de versiones SVN, y su estado actual de control de versiones se muestra tanto en el panel Storage Manager como en el Projects.

Concept image showing how the files are managed by the Subversion Version Control System

► Consulte la página Control de versiones basado en SVN para obtener más información.

En ambos sistemas VCS anteriores, el vínculo entre el repositorio de origen y la ubicación de trabajo se referencia en la base de datos VCS de esta última (en la subcarpeta del sistema .svn o .git).

Cuando los archivos de trabajo VCS están abiertos en Altium Designer, el menú del botón derecho en el panel Storage Manager (y en el panel Projects) le permite realizar acciones VCS estándar, como confirmar un archivo modificado en el repositorio central (SVN) o en el repositorio de trabajo (Git).

Acceso al control de versiones

En Altium Designer, las acciones relacionadas con VCS pueden realizarse a través de los paneles Projects y Storage Manager, siendo este último el que proporciona acceso directo a comandos e información VCS adicionales. Los paneles se rellenan con los documentos del proyecto y su estado VCS relacionado cuando se abren en Altium Designer.

Los paneles pueden abrirse desde el menú del botón en la parte inferior derecha del espacio de trabajo, o desde el menú principal View » Panels.

Panel Projects

El panel Projects muestra todos los proyectos que están actualmente abiertos en Altium Designer, junto con sus documentos constituyentes y el estado de control de versiones asociado para cada archivo.

El estado del archivo VCS en el panel se indica mediante una serie de iconos que se relacionan con condiciones específicas del archivo detectadas por el sistema de control de versiones. El estado de condición de cada archivo es, en términos generales, relativo a su equivalente que existe bajo control de versiones en el repositorio vinculado. A los comandos VCS en el panel Projects se accede desde la opción Version Control en el menú contextual del panel al hacer clic con el botón derecho.

Iconos de control de versiones tal como aparecen en el panel Projects Iconos de control de versiones tal como aparecen en el panel Projects

Los iconos de estado VCS del panel solo aparecerán si la opción Show VCS status (en General) está marcada en la página System – Projects Panel del cuadro de diálogo Preferences. Puede ser necesario reiniciar para que el cambio surta efecto.

► Consulte la página del panel Projects para obtener más información.

Panel Storage Manager

El panel Storage Manager ofrece una vista detallada del documento activo desde la perspectiva del almacenamiento de archivos y proporciona acceso a la función de historial local del documento y al estado/comandos del control de versiones.

El estado del archivo VCS en el panel se indica mediante una serie de descripciones e iconos correspondientes que se relacionan con condiciones específicas del archivo detectadas por el sistema de control de versiones. El estado de condición de cada archivo es, en términos generales, relativo a su equivalente que existe bajo control de versiones en el repositorio vinculado.

El panel Storage ManagerEl panel Storage Manager

Se accede a los comandos VCS en el panel Storage Manager desde el menú contextual del botón derecho. Para realizar una acción VCS sobre un archivo específico, haga clic con el botón derecho en su entrada en el panel y seleccione el comando deseado, por ejemplo, Commit, Update, Resolve conflict, etc.

El historial de revisiones del archivo seleccionado y el historial local del documento pueden verse en la sección inferior del panel, o bien una línea temporal general de eventos si cambia a “vista clásica” – Switch to Classic View en las opciones del botón derecho. El número de revisión indicado se incrementará con cada commit del VCS, donde la primera revisión (Revisión 1) corresponde a la creación de las carpetas del proyecto VCS, antes de que se agreguen archivos.

► Consulte la página del panel Storage Manager para obtener más información.

Estado del control de versiones

Para ambos paneles, Projects y Storage Manager, el estado VCS actual de cada archivo que está bajo control de versiones se muestra junto con su entrada en el panel.

El sistema de control de versiones esencialmente supervisa y compara los archivos de la carpeta de trabajo con sus equivalentes en el repositorio de diseño. Altium Designer solicita e intercambia información con el sistema de control de versiones a través de su interfaz VCS y responde en consecuencia a las condiciones comparativas del estado de los archivos. En la práctica, esto se manifiesta en los iconos de archivo de los paneles Projects y Storage Manager, a través de una variedad de alertas VCS y mediante cambios apropiados en los comandos disponibles de gestión de archivos.

Los iconos y su significado se describen en la sección Iconos de estado del control de versiones de la página Gestión de documentos del proyecto .

Acceso de múltiples usuarios

En la mayoría de las situaciones, la infraestructura de control de versiones de una empresa se basará en repositorios centrales de SVN o Git, servidos a través de la red mediante uno de los métodos de protocolo disponibles: svn, svn+ssh, https, etc. Esto proporciona acceso a todos los usuarios de la red, sujeto a permisos, y un medio para el desarrollo colaborativo de proyectos a partir de una única fuente.

A su vez, las capacidades de acceso múltiple permiten que distintos miembros del equipo sigan trabajando en un proyecto de forma independiente, sin tener que esperar a que otra persona vuelva a registrar un archivo antes de poder trabajar en él. Un sistema distribuido de control de versiones Git lleva esta ventaja un paso más allá al permitir que los archivos se confirmen en el repositorio de trabajo local a medida que trabaja, y que esos cambios confirmados se “envíen” de vuelta al repositorio central de Git en cualquier momento posterior; por lo tanto, no requiere conexión de red hasta entonces.

Sin embargo, un VCS compatible con el trabajo en equipo sí requiere que existan herramientas y técnicas para resolver la situación inevitable en la que dos usuarios han modificado el mismo archivo. Cuando estas capacidades están disponibles, se dispone de la base para una verdadera colaboración de diseño multiusuario y sus beneficios asociados.

Para dar soporte a esta situación, Altium Designer incluye capacidades de comparación (o 'diff') de esquemas y PCB, disponibles a través del panel Storage Manager.

Repositorios VCS

La mejor manera de trabajar a partir de un conjunto conocido de archivos fuente es almacenar el proyecto de diseño en un entorno controlado, como un repositorio de control de versiones. Esto es importante porque la única forma de garantizar que las salidas provienen de los archivos fuente correctos es:

  1. Confirmar que el conjunto de archivos fuente está actualizado.
  2. Tomar una instantánea de ellos.
  3. Generar las salidas a partir de esa instantánea.

En Altium Designer, dicho repositorio se denomina Design Repository. Propiedad del equipo de diseño, el Repositorio de Diseño contiene una vista de alta resolución del historial del proceso de diseño y es la herramienta principal de colaboración utilizada por el equipo de diseño.

El Repositorio de Diseño se convierte en el repositorio central desde el que varios miembros del equipo pueden registrar y retirar datos, manteniendo al mismo tiempo un historial completo de revisiones de todos los cambios realizados en el diseño. Por lo tanto, un diseño se almacena como una serie de versiones de los documentos del proyecto y de origen que lo componen, construyendo una imagen progresiva de la intención del diseñador a lo largo del tiempo. Al utilizar un Repositorio de Diseño controlado por versiones, tiene la garantía integral de que nunca se pierde ninguna revisión de un diseño, lo que permite una colaboración segura sobre el mismo diseño entre miembros de un equipo que pueden estar geográficamente dispersos. La propia naturaleza del sistema de control de versiones proporciona una pista de auditoría para el diseño. La responsabilidad total surge gracias a la transparencia de quién cambió qué, en qué documento fuente y cuándo. El sistema puede admitir varios Repositorios de Diseño controlados por versiones, estableciéndose el vínculo con un repositorio concreto mediante el enlace de control de versiones dentro de la carpeta del proyecto.

Al conectarse a un Repositorio de Diseño, en efecto está registrando ese repositorio en el sistema; por así decirlo, informando a Altium Designer de su existencia. Además, no existe especificación manual de rutas a repositorios no oficiales o “no autorizados”. A través de Altium Designer, solo puede interactuar con aquellos Repositorios de Diseño basados en VCS a los que se haya conectado deliberadamente en el sistema.

Antes de usar el control de versiones, los archivos del proyecto deben ser reconocidos tanto por el VCS como por Altium Designer como archivos bajo control de versiones. Este proceso puede ser diferente según los distintos métodos y aplicaciones de VCS, pero esencialmente implica crear y/o conectarse a un repositorio de diseño y agregar los archivos del proyecto de diseño a ese repositorio.

Los repositorios de diseño se basan en una estructura de base de datos y almacenan internamente la información en una jerarquía de archivos y directorios, conocida como árbol de archivos. El repositorio real al que se conecta puede ser un repositorio central de SVN, un repositorio de trabajo de Git (asociado a un repositorio remoto de Git), o uno que haya creado en una ubicación accesible, como el PC local o una ubicación de red compartida.

VCS del Workspace conectado

La forma más avanzada de trabajar con proyectos bajo control de versiones es aprovechar las capacidades de un Workspace conectado. Un Workspace ofrece la estructura avanzada de un proyecto, lo que brinda un flujo de trabajo y almacenamiento simplificados, capacidades de colaboración mejoradas y mucho más.

El repositorio VCS de destino en un Workspace está estrechamente integrado tanto con el Workspace como con Altium Designer (cuando ha iniciado sesión), lo que elimina la necesidad de configurar repositorios VCS separados. El acceso de los usuarios, el contenido del repositorio y el estado de los proyectos se pueden gestionar a través de la interfaz del navegador del Workspace.

Actualizar nuevos cambios al control de versiones

Cuando un proyecto se ha añadido al control de versiones, su carpeta local de trabajo del proyecto queda ahora vinculada a su equivalente en el repositorio VCS, como indica el icono de vínculo asociado con las entradas de la carpeta del proyecto en el panel Storage Manager. Para confirmar las ubicaciones de la carpeta vinculada y del repositorio, haga clic con el botón derecho en cualquier entrada de archivo del panel y seleccione la opción VCS Properties (no disponible al usar Git). El siguiente cuadro de diálogo Properties incluye las rutas de las ubicaciones vinculadas e información sobre la última revisión del VCS.

Archivo indicado por el icono de vínculo y el correspondiente panel Properties  que contiene información sobre la última revisión del VCS Archivo indicado por el icono de vínculo y el correspondiente panel Properties que contiene información sobre la última revisión del VCS

El cuadro de diálogo Properties proporciona la siguiente información (la información es solo para visualización; no se permiten ediciones): 

  • Path - la ruta al documento local en su carpeta de trabajo).
  • URL - la URL de la ubicación del documento en el repositorio VCS.
  • Repository Root - la raíz del repositorio.
  • Repository UUID - el UUID del repositorio.
  • Revision - la revisión actual del documento en su carpeta de trabajo local.
  • Last Change Author - el autor del último cambio.
  • Last Change Revision - la revisión del último cambio
  • Last Change Time - la fecha y hora del último cambio.
  • Conflicted - si el documento está o no en conflicto.

Como resultado del vínculo VCS registrado, el sistema de control de versiones puede supervisar y detectar cualquier diferencia entre los archivos de la carpeta local del proyecto y sus equivalentes en la carpeta del repositorio VCS. Cuando se detecta una diferencia, como cuando un archivo de diseño ha sido editado y guardado en Altium Designer, el sistema de control de versiones cambiará el estado del archivo local a Modified () y Altium Designer ofrecerá un conjunto adecuado de comandos VCS en el menú contextual de los paneles.

Confirmar cambios

Después de que un archivo de documento del proyecto haya sido editado y guardado en Altium Designer, se marca como Modified, y se indica como tal () tanto en los paneles Projects como Storage Manager. Para confirmar esos cambios como una nueva revisión en el VCS, haga clic con el botón derecho en la entrada del archivo en el panel y seleccione el comando Commit en el menú contextual, o seleccione el comando Project » History & Version Control » Commit en los menús principales.

Al confirmar un cambio en un archivo, se abrirá el cuadro de diálogo Edit Comment dialog. Utilice este cuadro de diálogo para agregar un comentario que indique el motivo de la confirmación, lo que puede ayudar a otros a ver qué cambio(s) se han realizado. Si ha agregado comentarios anteriormente, puede seleccionar rápidamente uno de ellos para reutilizarlo.

El comando Commit El comando Commit

También puede usarse el comando Commit Whole Project, que confirmará todos los archivos modificados del proyecto. Al confirmar todo el proyecto, se abrirá el cuadro de diálogo Commit to Version Control.

El cuadro de diálogo Commit to Version Control
El cuadro de diálogo Commit to Version Control

  • When using Subversion (SVN): El proceso de confirmación copia el archivo actualizado desde la carpeta local al repositorio, incrementando el número de revisión de la entrada del VCS y restableciendo el estado del archivo a No Modification ().
  • When using Git:El proceso de commit actualiza el repositorio de trabajo local del VCS, a la vez que incrementa el número de revisión de la entrada y establece el estado del archivo en Ahead of Server (). Puede seguir editando, guardando y haciendo commit de archivos en el repositorio de trabajo local o ratificar los nuevos cambios mediante el comando Push para actualizar el repositorio Git remoto; el estado del archivo volverá entonces a No Modification ().

Tenga en cuenta que, para proyectos de Workspace basados en Git, los comandos Commit y Commit Whole Project no están disponibles. Puede usar el comando Save to Server desde el menú contextual con clic derecho de la entrada del proyecto en el panel Projects para hacer commit del proyecto de Workspace en el repositorio local y enviarlo al repositorio remoto en una sola acción.

Si es necesario, los comandos Commit y Commit Whole Project pueden ponerse a disposición habilitando la opción VCS.AllowGitCommit en el cuadro de diálogo Advanced Settings dialog.

Una vez que un proyecto se ha agregado al control de versiones, se pueden agregar más archivos y hacer commit de ellos al control de versiones de forma individual, usando los comandos singulares Add to Version Control y Commit. Del mismo modo, archivos específicos pueden eliminarse individualmente del control de versiones (pero conservarse en el proyecto de trabajo local) con el comando Remove from Version Control.

Vea el panel Storage Manager para observar la secuencia de acciones en la sección VCS Revisions, que incluirá la creación de una nueva revisión VCS (con un número de revisión incrementado) para ese archivo; en este caso, la Revisión 3 y su comentario agregado. El icono indica la revisión más reciente y la revisión actual del archivo seleccionado, o en términos de control de versiones, la revisión Head.

La sección VCS Revisions del panel Storage Manager La sección VCS Revisions del panel Storage Manager

Para obtener una vista combinada de las entradas de revisión y del historial de eventos, cambie a la vista única Timeline seleccionando Switch to Combined View en el menú contextual con clic derecho.

Extraer desde el control de versiones

Como se explicó anteriormente, un proyecto local que se ha agregado al control de versiones puede ser editado por Altium Designer desde la carpeta local del proyecto, y luego los cambios se actualizan en el repositorio VCS. La carpeta local y la carpeta del repositorio están vinculadas y, en última instancia, sincronizadas por el VCS.

Otro usuario, que no tendrá acceso al proyecto desde su carpeta de origen (que es local a su PC), puede usar el proceso Clone (Git) o Check Out (SVN) para obtener su propia copia de los archivos desde el repositorio VCS que aloja el proyecto. Todos los usuarios que deseen colaborar en el diseño del proyecto deberán conectarse a ese repositorio de diseño común, que normalmente se configura para ser accesible a través de la red local o desde un servidor.

La carpeta del proyecto seleccionada en el repositorio y sus archivos constituyentes se extraerán a la carpeta local especificada y se abrirán en Altium Designer. Tenga en cuenta que la carpeta local es la definida como carpeta de checkout para el repositorio seleccionado, y que el proyecto extraído queda posteriormente vinculado a su equivalente en el repositorio VCS. El vínculo VCS indica al sistema de control de versiones que supervise y detecte cualquier diferencia entre los archivos de la carpeta local de checkout y sus equivalentes en la carpeta del repositorio VCS.

Haga de los cambios cuando se hayan completado las ediciones del archivo, lo que sincronizará los archivos del repositorio de diseño para que coincidan con los de la carpeta de checkout, creando una nueva revisión VCS.

Checkout frente a Open Project

Cuando un proyecto local se ha agregado al control de versiones, en realidad existen dos formas de editarlo y actualizarlo en el VCS:

  • Abriendo el proyecto local (File » Open Project) en Altium Designer y, a continuación, haciendo commit de los cambios guardados al repositorio VCS. En este caso, la carpeta del proyecto local y su equivalente en el repositorio están vinculadas por el VCS.

  • Extrayendo el proyecto (File » Check Out) desde el repositorio VCS y, a continuación, haciendo commit al repositorio de los cambios guardados realizados en Altium Designer. En este caso, el proyecto en la carpeta de checkout designada y su equivalente en el repositorio están vinculados por el VCS.

El proyecto local es la fuente, u origen, del proyecto VCS que se comparte con otros usuarios. Dependiendo de cómo desee trabajar, esta versión fuente local podría eliminarse o bloquearse como fuente archivada del proyecto, y luego podría usarse el enfoque Check Out para realizar más ediciones. O bien, podría seguir abriendo y trabajando con los archivos del proyecto desde la carpeta local de "origen" (Open Project).

El mejor enfoque es ceñirse a un solo método (se recomienda check out), ya que las dos opciones manejan una carpeta de trabajo en ubicaciones diferentes: la carpeta del proyecto fuente local o la carpeta de checkout VCS designada. Por el contrario, si se usan ambos métodos, habrá múltiples copias activas del mismo proyecto en el PC local. Sin embargo, si estas versiones se envían diligentemente mediante Commit al repositorio VCS centralizado después de cada edición, el repositorio siempre contendrá la revisión más reciente del proyecto, como se pretende.

Cuando el proyecto no está disponible localmente, como en el caso de otro usuario, la única opción es hacer Check Out del proyecto desde el repositorio VCS.

Tenga en cuenta también que, una vez que un proyecto se ha extraído inicialmente del repositorio VCS, entonces existe localmente y puede volver a abrirse directamente desde la carpeta de checkout (File » Open Project). En este caso, nuevamente existe la opción de extraer un proyecto desde el VCS o abrir la versión local; sin embargo, solo habrá una copia local. En términos prácticos de VCS, los dos métodos son muy similares, pero se comportarán de manera distinta en algunas circunstancias, como cuando falta un archivo local, caso en el que será restaurado por el proceso de check out, mientras que será eliminado del proyecto mediante un comando Open Project.

Revisiones del control de versiones

Durante el trabajo con documentos de diseño en Altium Designer que están bajo control de versiones, los archivos de diseño a los que se ha accedido desde el repositorio VCS central (compartido) representarán la revisión más reciente de esos archivos. Cuando las ediciones locales se han completado y se han enviado mediante commit (o, con Git, push) de vuelta al repositorio VCS compartido, esas versiones de archivo pasan a ser las revisiones más recientes.

Así, la secuencia normal de check out, edición, guardado y commit (y Push, con Git) agrega progresivamente nuevas revisiones de archivo al VCS central a medida que se desarrolla el diseño del proyecto. Sin embargo, cuando un proyecto está siendo desarrollado de forma colaborativa por varios diseñadores, se pueden enviar nuevas revisiones al repositorio central (compartido) en cualquier momento, por parte de cualquier diseñador.

Revisión desactualizada

La interacción entre varios diseñadores y el repositorio central puede manifestarse de varias maneras; una de ellas es que un proyecto abierto localmente ya no sea la revisión más reciente: un proyecto extraído del repositorio o abierto desde la carpeta de trabajo local tiene un estado de Out of date () en el panel Projects.

Archivo etiquetado como Out of fateArchivo etiquetado como Out of fate

En este caso, otro usuario ha editado y hecho commit del mismo proyecto al repositorio desde la última vez que se editó localmente. Por ejemplo, un usuario local Barry está trabajando en el proyecto y ha hecho commit de, digamos, Revision 14, pero otro usuario Harold ha hecho commit de Revision 15 después de ese momento, como se indica en el panel Storage Manager mostrado a continuación. Debido a que el VCS detecta la diferencia entre un archivo en la carpeta de trabajo local y su equivalente en el repositorio (que en este caso es más reciente), el sistema considera que la revisión más nueva local (indicada por el icono ) está desactualizada.

Diferentes estados de revisión en el Storage ManagerDiferentes estados de revisión en el Storage Manager

Puede usar la función Compare function de Altium Designer para determinar las diferencias entre las revisiones del archivo.

Esta situación se corrige actualizando los archivos locales para que coincidan con los del repositorio VCS central, usando el comando Update en el menú contextual con clic derecho del panel Projects o Storage Manager. Las dos versiones del archivo quedan entonces sincronizadas, y la versión local (del usuario Barry) se actualiza a la versión de revisión más reciente; en este ejemplo, Revision 15. Tenga en cuenta que si hace Save de un archivo mientras está designado como Out of date, se creará una situación de VCS Conflict, en la que el VCS detecta que se ha actualizado una revisión anterior de un archivo en la carpeta de trabajo.

El repositorio central y la revisión local en el Storage ManagerEl repositorio central y la revisión local en el Storage Manager

También puede seleccionar el comando Update Whole Project para acceder al cuadro de diálogo Update from Version Control , que le permite seleccionar archivos que se extraerán desde un repositorio compartido. Todos los documentos del proyecto que estén desactualizados o contengan conflictos se muestran en el cuadro de diálogo. Puede seleccionar documentos específicos para actualizar o elegir actualizarlos todos de una vez. Los documentos seleccionados se actualizan desde el repositorio y todos los documentos desactualizados se seleccionan de forma predeterminada. Todos los documentos seleccionados se actualizarán a la versión más reciente del repositorio.

El cuadro de diálogo Update from Version Control
El cuadro de diálogo Update from Version Control

La columna Path muestra el directorio del archivo. La columna Status muestra el estado actual del archivo. Si el estado de un archivo se muestra como Conflict, al hacer clic en OK para actualizar los archivos se mostrará un cuadro de diálogo de confirmación. Haga clic en OK para actualizar a la versión más reciente del repositorio o en Cancel para salir y guardar los cambios en la versión actualmente presente en el repositorio.

Un archivo de diseño no mostrará un estado Out of date si el proyecto se ha abierto desde la carpeta local de checkout, en lugar de haberse extraído desde el repositorio. El comando Refresh del panel Storage Manager (o la tecla F5) puede corregir esto activando al VCS para que compare las carpetas vinculadas; sin embargo, esta situación es otra indicación de que los proyectos deben extraerse desde el repositorio (y no abrirse directamente en local) cuando se trabaja de forma colaborativa con un repositorio SVN central.

Conflicto de revisión

La interacción entre varios diseñadores y el repositorio central también puede crear una situación en la que el mismo archivo haya sido editado y guardado localmente por dos usuarios de Altium Designer, y uno de ellos haya confirmado esos cambios.

Esto significa que la secuencia de pasos de un diseñador (check out, editar, guardar, commit) se ha entrelazado con la de otro diseñador, por lo que un archivo que un usuario ha extraído del repositorio para editarlo puede no remain como la revisión más reciente mientras se está trabajando en él; otro usuario ha actualizado la revisión entretanto. Quien primero confirme las ediciones en el repositorio en este caso prevalecerá al crear una nueva revisión, mientras que otro usuario que haya editado y guardado el mismo archivo se enfrentará a una situación de Conflict, indicada por el icono .

Ejemplo de conflicto de revisiónEjemplo de conflicto de revisión

Desde la perspectiva de un VCS, que compara los archivos de la carpeta de trabajo con los archivos del repositorio, un Conflict representa la condición en la que una revisión desactualizada de un archivo de la carpeta de trabajo ha sido editada y guardada.

Cuando se utiliza control de versiones Git, se crea un Conflict cuando dos diseñadores han editado, guardado y confirmado el mismo archivo en su carpeta de repositorio Git local, y uno de ellos luego envía esos cambios al repositorio Git central (el Remote). Tenga en cuenta que las Git VCS Revisions se mostrarán en el panel Storage como cadenas GUID.

Git VCS Revisions en el panel Storage ManagerGit VCS Revisions en el panel Storage Manager

Hay varias opciones de comando a las que se accede desde el menú contextual con clic derecho History & Version Control del panel Projects, el menú principal Project » History & Version Control y el panel Storage Manager que pueden usarse cuando un archivo tiene un estado Conflict:

  • Commit – esta opción provocará un error de Subversion, ya que confirmar la revisión editada localmente (por ejemplo, Revision 15) sobrescribiría la revisión más reciente (Revision 16) ya confirmada por otro usuario.
  • Update – esta opción actualizará la revisión del archivo local a la versión más reciente del repositorio central (Revision 16), perdiéndose así cualquier cambio local que haya hecho en Revision 15.
  • Resolve Conflict – esta opción descartará los cambios confirmados en el repositorio desde la última vez que actualizó. Después de ejecutar el comando, aparecerá un cuadro de diálogo de confirmación; haga clic en Yes para continuar. El archivo del proyecto en su carpeta de trabajo se actualizará a la última revisión registrada en el repositorio por el otro usuario, pero el editor conservará los cambios que haya realizado en la revisión anterior. Por lo tanto, el archivo local adquiere un estado de Modified, lo que le permite confirmar esos cambios como una nueva revisión en el repositorio usando el comando Commit o el comando Commit Whole Project. Una vez que haya confirmado el archivo del proyecto, el otro usuario verá el/los archivo(s) como Out of date, ya que usted ha creado una revisión más reciente en el repositorio.

    Esta opción solo se recomienda cuando un archivo text está en conflicto, ya que el sistema Subversion intentará fusionar las diferencias en el archivo local. Ese proceso podría dañar otros tipos de archivo, como los documentos de diseño, por lo que un Conflict se resuelve mejor actualizando a la última revisión de origen o revirtiendo los cambios locales.

    Cuando se utiliza Git, el comando Resolve Conflict anulará la condición de conflicto al confirmar el archivo en la carpeta del repositorio local. Cuando después se haga Push del archivo al repositorio remoto, el archivo del otro diseñador se marcará como Out of Date y deberá actualizarse. Sin embargo, al igual que con Subversion, la vía más segura es Update el archivo en conflicto a la última revisión de origen (un Pull en términos de Git) o Revert los cambios locales.
  • Revert – esta opción hará que se pierdan (deshagan) los cambios locales, revirtiendo el archivo local a su revisión base; aquí, Revision 15. Por lo tanto, el conflicto de revisión queda resuelto, pero el archivo quedará marcado como Out of date, ya que existe una revisión más reciente (Revision 16) en el repositorio.

Comparar revisiones

Una gran ventaja de trabajar con control de versiones es la capacidad de comparar revisiones históricas de archivos de diseño, lo que proporciona el Difference Comparator integrado de Altium Designer y al que se accede desde el panel Storage Manager. Cuando se usa junto con el panel Differences, puede hacerse una comparación lógica o gráfica entre revisiones del VCS mientras se exploran de forma interactiva los objetos afectados. Se pueden comparar tanto revisiones de esquemáticos como de PCB.

Para iniciar una comparación entre dos revisiones, seleccione ambas entradas (usando el método estándar Ctrl+click) en la lista VCS Revisions del panel Storage Manager, y luego seleccione el comando Compare en el menú contextual con clic derecho del panel.

También puede usar el comando History & Version Control » Compare with Head  del menú contextual con clic derecho del documento en el panel Projects para comparar el documento enfocado con la revisión principal de ese documento del repositorio VCS.

El comando Compare  en el panel Storage ManagerEl comando Compare en el panel Storage Manager

Ambas revisiones del archivo se abrirán en modo de pantalla dividida, donde podrán compararse visualmente. Las diferencias que se muestran están determinadas por las opciones seleccionadas para los tipos de comparación física en la pestaña Comparator tab del cuadro de diálogo Options for Project: Project » Project Options.

La clave para localizar y ver las diferencias de comparación está en el panel Differences, que proporciona una lista seleccionable de las diferencias lógicas o gráficas entre los documentos. Las entradas listadas en el panel para cada revisión del documento interactúan con el editor, permitiendo que una diferencia detectada (como un objeto movido) se resalte gráficamente al seleccionarla.

La localización y visualización de las diferencias de comparación se realiza en el panel DifferencesLa localización y visualización de las diferencias de comparación se realiza en el panel Differences

La funcionalidad Compare también se aplica a revisiones de documentos PCB, junto con revisiones de documentos esquemáticos y documentos basados en texto.

  • Para documentos de esquemáticos o PCB (de diseño o de biblioteca), se realiza una comparación gráfica y las diferencias detectadas se enumeran en el panel Differences. Con las dos versiones del documento abiertas una al lado de la otra en la ventana del editor de diseño, puede examinar gráficamente las diferencias. Al hacer clic en una carpeta de nivel superior para una diferencia detectada, esa diferencia se resaltará simultáneamente en ambos documentos.
  • Para documentos ASCII basados en texto, aparecerá el cuadro de diálogo CompareForm, mostrando un 'diff' gráfico de las dos versiones del documento. Los documentos elegidos se muestran lado a lado. El cuadro de diálogo es solo para comparación; no se pueden realizar modificaciones en un documento cargado. Mediante codificación por colores, el cuadro de diálogo resalta las distintas diferencias entre las dos versiones del documento: líneas añadidas (rosa), líneas modificadas (verde) y líneas eliminadas (azul). En la parte inferior izquierda del cuadro de diálogo se presenta un resumen de cambios y la leyenda del código de colores.

La funcionalidad CompareLa funcionalidad Compare

El comando Compare puede aplicarse a cualquier par de revisiones, incluso entre la revisión local actual (en la carpeta de trabajo) y una revisión más reciente en el repositorio. En esta situación, la revisión local más reciente se indica en el panel Storage Manager como Out of date (), pero aun así puede compararse con una revisión más reciente que otro usuario haya añadido al repositorio.

La revisión local se indica en el panel Storage Manager como Out of dateLa revisión local se indica en el panel Storage Manager como Out of date

Este enfoque le permite previsualizar gráficamente los cambios que se impondrán al actualizar a la nueva revisión. En la imagen de ejemplo anterior, la revisión local actual (indicada por el icono ) es Revision 19, pero otro usuario ha confirmado una nueva revisión en el repositorio (Revision 22). Iniciar una comparación visual entre Revision 19 y Revision 22 le permite tomar una decisión informada sobre si aceptar los nuevos cambios del repositorio y, por implicación, si aplicará el comando Update o lo anulará provocando una condición de Conflict, mediante volver a guardar el archivo local y resolver el conflicto a favor de su versión local.

Terminología de control de versiones

Término Significado
Base

La revisión del repositorio que usted extrajo para que sea su Working Copy local. También llamada la revisión extraída.

Check-in

Guardar su copia de trabajo del archivo en el repositorio. Se denomina Commit en Altium Designer.

Check-out

Tomar una copia de un archivo del repositorio VCS a una carpeta de trabajo. Generalmente esta es la revisión más reciente del archivo, pero también pueden extraerse todas las revisiones anteriores. Dependiendo del VCS, el archivo puede marcarse como simplemente checked-out o checked-out de manera exclusiva (bloqueado).

Clone

Un comando de Git que copia (clona) un repositorio Git remoto a un repositorio Git de trabajo en una carpeta local, mientras extrae automáticamente la versión HEAD (la más reciente) a la carpeta. El repositorio local incluye la referencia de enlace al repositorio remoto (origin en este caso), por lo que los archivos que se actualicen en el repositorio de trabajo local pueden cargarse al repositorio remoto mediante el comando Push.

Commit

Guardar la copia de trabajo del archivo de nuevo en el repositorio. Se denomina Check-in en algunos sistemas de control de versiones. En Altium Design Software, el comando normal Save guarda un archivo editado en la carpeta de trabajo, mientras que Commit guarda ese archivo de la carpeta en el repositorio como una nueva revisión (versión).

Conflict

La situación en la que dos usuarios de Altium Designer intentan confirmar cambios que afectan a la misma región del mismo archivo. Estos deben resolverse, ya sea utilizando una herramienta de Merge, manualmente o determinando qué versión prevalecerá (se convertirá en la nueva revisión).

Database

El almacenamiento maestro de todos los archivos bajo control de versiones (o de código fuente), también conocido en la práctica como el Repository .

Git

Git es un sistema de control de versiones de código abierto. Altium Designer incorpora capacidades Git (mediante la extensión VCS Provider - Git), lo que permite hacer un seguimiento directo de las revisiones y acceder a ellas desde sus paneles Storage Manager y Projects.

Head

La revisión más reciente registrada en el sistema de control de versiones.

Log message

Un comentario sobre los cambios realizados en una revisión cuando se vuelve a registrar (commit) en el repositorio. Los mensajes de registro pueden utilizarse como un resumen del progreso de los cambios en un archivo.

Project

Muchos sistemas de control de versiones admiten el concepto de proyecto. Un proyecto de VCS es un conjunto de archivos relacionados que pueden registrarse/extraerse como un conjunto. El VCS también puede admitir otras funciones de tipo proyecto, como establecer un número de versión para todos los archivos de un proyecto. Esto es distinto del concepto de un proyecto de Altium Designer, que puede añadirse al control de versiones mediante el comando Add Project Folder to Version Control command.

Push

Actualizar un repositorio Git remoto con los archivos de su repositorio de trabajo local, para sincronizar los repositorios local y remoto. Este comando está disponible cuando un archivo del repositorio Git local es más reciente que su equivalente en el repositorio Git remoto. En términos conceptuales, es el complemento de un comando Git Pull.

Repository

El almacenamiento maestro de todos los archivos bajo control de versiones (o de código fuente); también puede conocerse como el Database.

Revision

Un cambio registrado en el historial de un archivo o conjunto de archivos. Esta es la referencia alfanumérica proporcionada por el VCS para rastrear las diferentes ediciones (versiones) del archivo que está almacenando.

Sandbox

La carpeta en la que se extraen los archivos del repositorio para poder trabajar con ellos; también se denomina Working Folder. Los archivos extraídos desde Altium Design Software se cargan automáticamente.

SVN

Subversion es un sistema de control de versiones de código abierto. Altium Designer incorpora capacidades de SVN (mediante la extensión VCS Provider - SVN), lo que permite rastrear revisiones y acceder a ellas directamente desde sus paneles Storage Manager y Projects.

Update

La acción de comprobar y “traer” cambios desde la versión del repositorio de un archivo a una copia de trabajo (el complemento de Commit o Check-in). El proceso de fusionar cualquier diferencia requiere una herramienta de Merge o una actualización manual.

VCS

Version Control System: término genérico aplicado a cualquier herramienta capaz de gestionar el historial de versiones de archivos y la recuperación de archivos.

Version

El término versión normalmente se utiliza para referirse al número de referencia externo asignado por una persona a los archivos controlados o a su salida (como en el caso del código fuente). La mayoría de las veces esto se considera una revisión.

Working Copy

La copia “local” de un archivo sobre la que se realizan cambios; normalmente reside en el Working Folder.

Working Folder

La carpeta en la que se extraen los archivos del repositorio para poder trabajar con ellos; con Git, este es un repositorio de trabajo local. Los archivos extraídos desde Altium Designer se cargan automáticamente.

Referencias

AI-LocalizedAI-localized
If you find an issue, select the text/image and pressCtrl + Enterto send us your feedback.
Feature Availability

The features available to you depend on which Altium solution you have – Altium Develop, an edition of Altium Agile (Agile Teams or Agile Enterprise), or Altium Designer (on active term).

If you don’t see a discussed feature in your software, contact Altium Sales to find out more.

Legacy Documentation

Altium Designer documentation is no longer versioned. If you need to access documentation for older versions of Altium Designer, visit the Legacy Documentation section of the Other Installers page.

Contenido