Using External Version Control

A forma mais avançada de trabalhar com projetos sob controlo de versões é tirar partido das capacidades de um Workspace ligado. Um Workspace oferece a estrutura avançada de um projeto, que disponibiliza um fluxo de trabalho e armazenamento simplificados, capacidades de colaboração melhoradas, entre outras vantagens.

O repositório VCS de destino num Workspace está fortemente integrado tanto com o Workspace como com o Altium Designer (quando a sessão está iniciada), o que elimina a necessidade de configurar repositórios VCS separados. O acesso dos utilizadores, o conteúdo do repositório e o estado dos projetos podem ser geridos através da interface do navegador do Workspace. Se estiver a utilizar o VCS interno de um Workspace ligado, a informação nesta página não se aplica ao seu caso.

Este documento detalha a abordagem fundamental para utilizar Controlo de Versões externo, em que o repositório não está alojado num Workspace ligado. Isto inclui repositórios de Controlo de Versões disponíveis localmente, através de uma rede ligada, ou a partir de um produto servidor VCS dedicado. Se estiver a utilizar um VCS externo, continue a ler.

Um dos maiores pontos fortes de um ambiente de criação e edição eletrónica é a facilidade com que pode criar e modificar um ficheiro. Esta capacidade significa que as ideias podem ser captadas, exploradas e desenvolvidas rapidamente, mas também significa que pode ser difícil acompanhar as alterações feitas a ficheiros valiosos, como código-fonte e dados de projeto eletrónico.

A necessidade de acompanhar as alterações feitas a um ficheiro, combinada com a necessidade de uma solução sistemática para gerir fontes captadas em formato eletrónico, deu origem aos Sistemas de Controlo de Versões (VCS). Os sistemas de controlo de versões são ferramentas de software que não só conseguem manter um histórico das várias versões de um ficheiro, como também permitem abrir qualquer revisão desse ficheiro, bem como comparar alterações feitas entre quaisquer duas versões do ficheiro. Um VCS integra-se geralmente com o Sistema Operativo (SO) local, fornecendo funções e operações adicionais de controlo de versões para pastas e ficheiros.

Os Sistemas de Controlo de Versões podem funcionar de forma completamente independente do ambiente de criação e edição utilizado para criar um ficheiro. Normalmente, oferecem uma interface que permite fazer Add e depois Commit de ficheiros para uma área central de armazenamento chamada repositório, uma funcionalidade Checkout para copiar um ficheiro do repositório para uma pasta de trabalho, uma funcionalidade Commit para voltar a enviar quaisquer alterações para o repositório, um método de registo de informação sobre uma alteração, e muito mais.

Estas funcionalidades encontram-se em extensões da shell do Windows, como o cliente Tortoise e também estão incluídas no próprio Altium Designer. As operações VCS podem ser realizadas dentro do ambiente do Altium Designer sem necessidade de aceder ao sistema de ficheiros do SO.

É útil compreender a terminologia utilizada com os sistemas de controlo de versões. Embora existam numerosos sistemas disponíveis, todos usam, em geral, termos semelhantes para descrever a sua funcionalidade.

Essenciais do Controlo de Versões

O Altium Designer suporta os sistemas de controlo de versões (VCS) Subversion (SVN) e Git. Como dispõe de suporte interno para estes sistemas, fornece acesso aos comandos comuns de gestão de ficheiros SVN/Git, como Commit, Update, etc., dentro do Altium Designer, juntamente com capacidades adicionais do Subversion, como a possibilidade de criar um repositório SVN. Isto integra-se com as funcionalidades de comparação de esquemas e PCB, facilitando a comparação rápida e a identificação de diferenças entre duas revisões de um documento de esquema ou PCB e, no caso de projetos PCB, a resolução de conflitos entre revisões simultâneas.

A abordagem básica para trabalhar com um Sistema de Controlo de Versões (VCS) consiste em aceder, a partir de um repositório, a uma cópia dos ficheiros do projeto em que pretende trabalhar, editar os ficheiros no Altium Designer e depois fazer o ‘commit’ dos ficheiros modificados de volta para o repositório. A interação com o repositório é feita através de uma interface do sistema de controlo de versões, que o Altium Designer incorporou no seu painel Storage Manager e no painel Projects.

A chave para o funcionamento de um sistema de controlo de versões é o facto de monitorizar o estado dos ficheiros que foram acedidos a partir do repositório, através de uma pasta de trabalho, acompanhando assim qual a revisão em que se está a trabalhar e se foi modificada. Embora o resultado seja o mesmo, a disposição do repositório e dos ficheiros de trabalho difere entre os tipos de sistemas de controlo de versões – Git ou SVN.

Certifique-se de que as extensões de software VCS Provider - SVN e VCS Provider - Git estão instaladas no Altium Designer. Estas extensões são instaladas com o Altium Designer por predefinição e podem ser instaladas ou removidas manualmente.

Para mais informações sobre a gestão de extensões, consulte a página Extending Your Installation (Altium Designer Develop, Altium Designer Agile, Altium Designer).

Git VCS

A figura abaixo ilustra o conceito de uma partilha de repositório Git remoto que contém uma sequência de revisões de ficheiros de projeto (até à revisão 5), cujo conteúdo foi copiado para um repositório Git de trabalho local – tipicamente através de Cloning do repositório remoto ou de Pulling dos seus dados para o repositório de trabalho. Quando os ficheiros no repositório de trabalho são abertos no ambiente do Altium Designer, o Altium Designer reconhece que um ficheiro de projeto está sob controlo de versões Git, sendo o seu estado atual de controlo de versões apresentado tanto no painel Storage Manager como no painel Projects.

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

► Consulte a página Controlo de Versões baseado em Git para mais informações.

Subversion VCS

A figura abaixo ilustra o conceito de um repositório Subversion que contém uma sequência de revisões de ficheiros de projeto (até à revisão 5), com a cópia mais recente extraída (File » Check Out) para uma pasta de trabalho. Quando os ficheiros na pasta de trabalho são abertos no ambiente do Altium Designer, o Altium Designer reconhece que um ficheiro de projeto está sob controlo de versões SVN, sendo o seu estado atual de controlo de versões apresentado tanto no painel Storage Manager como no painel Projects.

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

► Consulte a página Controlo de Versões baseado em SVN para mais informações.

Em ambos os sistemas VCS acima referidos, a ligação entre o repositório de origem e a localização de trabalho é referenciada na base de dados VCS desta última (na subpasta de sistema .svn ou .git).

Quando os ficheiros de trabalho VCS estão abertos no Altium Designer, o menu de clique direito no painel Storage Manager (e no painel Projects) permite-lhe executar ações VCS padrão, como fazer commit de um ficheiro alterado para o repositório central (SVN) ou para o repositório de trabalho (Git).

Acesso ao Controlo de Versões

No Altium Designer, as ações relacionadas com VCS podem ser executadas através dos painéis Projects e Storage Manager, sendo que este último fornece acesso direto a comandos e informações VCS adicionais. Os painéis são preenchidos com documentos do projeto e o respetivo estado VCS quando são abertos no Altium Designer.

Os painéis podem ser abertos a partir do menu do botão no canto inferior direito do espaço de trabalho, ou a partir do menu principal View » Panels.

Painel Projects

O painel Projects apresenta todos os projetos atualmente abertos no Altium Designer, juntamente com os respetivos documentos constituintes e o estado de Controlo de Versões associado a cada ficheiro.

O estado VCS dos ficheiros no painel é indicado através de uma série de ícones que correspondem a condições específicas dos ficheiros detetadas pelo sistema de controlo de versões. O estado de condição de cada ficheiro é, em termos gerais, relativo ao seu equivalente que existe sob controlo de versões no repositório ligado. Os comandos VCS no painel Projects são acedidos a partir da opção Version Control no menu contextual de clique direito do painel.

Ícones de Controlo de Versões tal como aparecem no painel Projects Ícones de Controlo de Versões tal como aparecem no painel Projects

Os ícones de estado VCS do painel só aparecem se a opção Show VCS status (em General) estiver assinalada na página System – Projects Panel da caixa de diálogo Preferences. Poderá ser necessário reiniciar para que a alteração produza efeito.

► Consulte a página painel Projects para mais informações.

Painel Storage Manager

O painel Storage Manager fornece uma vista detalhada do documento ativo na perspetiva do armazenamento de ficheiros e dá acesso à funcionalidade de histórico local do documento e ao estado/comandos de controlo de versões.

O estado VCS dos ficheiros no painel é indicado através de uma série de descrições e ícones correspondentes que dizem respeito a condições específicas dos ficheiros detetadas pelo sistema de controlo de versões. O estado de condição de cada ficheiro é, em termos gerais, relativo ao seu equivalente que existe sob controlo de versões no repositório ligado.

O painel Storage ManagerO painel Storage Manager

Os comandos VCS no painel Storage Manager são acedidos a partir do menu contextual de clique direito. Para executar uma ação VCS sobre um ficheiro específico, clique com o botão direito na sua entrada no painel e selecione o comando pretendido – por exemplo, Commit, Update, Resolve conflict, etc.

O histórico de revisões do ficheiro selecionado e o histórico local do documento podem ser vistos na secção inferior do painel, ou numa cronologia geral de eventos se mudar para 'classic view' – Switch to Classic View nas opções de clique direito. O número de revisão indicado aumentará a cada commit VCS, em que a primeira revisão (Revisão 1) corresponde à criação das pastas do projeto VCS, antes de os ficheiros serem adicionados.

► Consulte a página painel Storage Manager para mais informações.

Estado do Controlo de Versões

Tanto no painel Projects como no painel Storage Manager, o estado VCS atual de cada ficheiro que está sob controlo de versões é apresentado juntamente com a respetiva entrada no painel.

O sistema de controlo de versões monitoriza e compara essencialmente os ficheiros na pasta de trabalho com os seus equivalentes no repositório de projeto. O Altium Designer solicita e troca informações com o sistema de controlo de versões através da sua interface VCS, respondendo em conformidade às condições comparativas do estado dos ficheiros. Na prática, isto manifesta-se nos ícones de ficheiro dos painéis Projects e Storage Manager, através de um conjunto de alertas VCS e por alterações adequadas nos comandos disponíveis de gestão de ficheiros.

Os ícones e o respetivo significado são descritos na secção Version Control Status Icons da página Managing Project Documents .

Acesso de Múltiplos Utilizadores

Na maioria das situações, a infraestrutura de Version Control de uma empresa baseia-se em repositórios SVN ou Git centrais, disponibilizados através da rede utilizando um dos métodos de protocolo disponíveis – svn, svn+ssh, https, etc. Isto fornece acesso a todos os utilizadores na rede, sujeito a permissões, e um meio para o desenvolvimento colaborativo de projetos a partir de uma única fonte.

Por sua vez, as capacidades de acesso múltiplo permitem que diferentes membros da equipa continuem a trabalhar num projeto de forma independente, sem terem de esperar que outra pessoa volte a submeter um ficheiro antes de poderem trabalhar nele. Um sistema distribuído de Git version control system leva esta vantagem um passo mais longe, ao permitir que os ficheiros sejam submetidos ao repositório de trabalho local à medida que trabalha, e que essas alterações submetidas sejam depois enviadas para o repositório Git central em qualquer momento posterior — e, como tal, não requer uma ligação de rede até esse momento.

Ainda assim, um VCS compatível com equipas exige que estejam disponíveis ferramentas e técnicas para resolver a situação inevitável em que dois utilizadores modificaram o mesmo ficheiro. Quando estas capacidades estão disponíveis, fica criada a base para uma verdadeira colaboração de design multiutilizador e para os benefícios que lhe estão associados.

Para suportar esta situação, o Altium Designer inclui capacidades de comparação (ou 'diff') de esquemáticos e PCB, disponíveis através do Storage Manager panel.

Repositórios VCS

A melhor forma de trabalhar a partir de um conjunto conhecido de ficheiros-fonte é armazenar o projeto de design num ambiente controlado, como um repositório de Version Control. Isto é importante porque a única forma de garantir que os resultados provêm dos ficheiros-fonte corretos é:

  1. Confirmar que o conjunto de ficheiros-fonte está atualizado.
  2. Tirar uma instantânea desse conjunto.
  3. Gerar os resultados a partir dessa instantânea.

No Altium Designer, esse repositório é referido como um Design Repository. Sendo propriedade da equipa de design, o Design Repository contém uma visão detalhada do histórico do processo de design e é a principal ferramenta de colaboração utilizada pela equipa de design.

O Design Repository torna-se o repositório central a partir do qual vários membros da equipa podem submeter e obter dados, mantendo ao mesmo tempo um histórico completo de revisões de todas as alterações efetuadas ao design. Assim, um design é armazenado como uma série de versões dos seus documentos de projeto e de origem constituintes, construindo uma imagem progressiva da intenção do designer ao longo do tempo. Ao utilizar um Design Repository controlado por versões, tem a garantia fundamental de que nenhuma revisão de um design se perde, permitindo uma colaboração segura no mesmo design entre membros de uma equipa que podem estar geograficamente dispersos. A própria natureza do sistema de controlo de versões fornece um registo de auditoria do design. A responsabilidade total resulta da transparência sobre quem alterou o quê, em que documento-fonte e quando. O sistema pode suportar múltiplos Design Repositories com controlo de versões, sendo a ligação a um determinado repositório estabelecida pela ligação de controlo de versões dentro da pasta do projeto.

Ao ligar-se a um Design Repository está, na prática, a registar esse repositório no sistema — informando o Altium Designer da sua existência, por assim dizer. Além disso, não existe especificação manual de caminhos para repositórios não oficiais ou 'rogue'. Através do Altium Designer, só pode interagir com os Design Repositories baseados em VCS aos quais se ligou intencionalmente no sistema.

Antes de utilizar controlo de versões, os ficheiros do projeto têm de ser reconhecidos tanto pelo VCS como pelo Altium Designer como estando sob controlo de versões. Este processo pode ser diferente para os vários métodos e aplicações de VCS, mas consiste essencialmente em criar e/ou ligar-se a um repositório de design e adicionar os ficheiros do projeto de design a esse repositório.

Os repositórios de design baseiam-se numa estrutura de base de dados e armazenam internamente a informação numa hierarquia de ficheiros e diretórios, designada por árvore de ficheiros. O repositório real ao qual se liga pode ser um repositório SVN central, um repositório de trabalho Git (associado a um repositório Git remoto), ou um que tenha criado numa localização acessível, como no PC local ou numa localização de rede partilhada.

Workspace Ligado ao VCS

A forma mais avançada de trabalhar com projetos sob controlo de versões é tirar partido das capacidades de um connected Workspace. Um Workspace oferece a estrutura avançada de um project, que proporciona um fluxo de trabalho e armazenamento simplificados, capacidades de colaboração melhoradas e muito mais.

O repositório VCS de destino num Workspace está fortemente integrado tanto com o Workspace como com o Altium Designer (quando tem sessão iniciada), o que elimina a necessidade de configurar repositórios VCS separados. O acesso dos utilizadores, o conteúdo do repositório e o estado dos projetos podem ser geridos através da interface do navegador do Workspace.

Atualizar Novas Alterações para o Controlo de Versões

Quando um projeto foi adicionado ao controlo de versões, a sua pasta de projeto de trabalho local fica ligada à sua contraparte no repositório VCS, conforme indicado pelo ícone de ligação associado às entradas da pasta do projeto no painel Storage Manager. Para confirmar as localizações da pasta ligada e do repositório, clique com o botão direito em qualquer entrada de ficheiro no painel e selecione a opção VCS Properties (não disponível quando se utiliza Git). A caixa de diálogo Properties seguinte inclui os caminhos das localizações ligadas e informação sobre a revisão VCS mais recente.

Ficheiro indicado pelo ícone de ligação e o correspondente painel Properties  que contém informação sobre a revisão VCS mais recente Ficheiro indicado pelo ícone de ligação e o correspondente painel Properties que contém informação sobre a revisão VCS mais recente

A caixa de diálogo Properties fornece a seguinte informação (a informação destina-se apenas a visualização; não são permitidas edições): 

  • Path - o caminho para o documento local na sua pasta de trabalho.
  • URL - o URL da localização do documento no repositório VCS.
  • Repository Root - a raiz do repositório.
  • Repository UUID - o UUID do repositório.
  • Revision - a revisão atual do documento na sua pasta de trabalho local.
  • Last Change Author - o autor da última alteração.
  • Last Change Revision - a revisão da última alteração
  • Last Change Time - a data e hora da última alteração.
  • Conflicted - se o documento está ou não em conflito.

Como resultado da ligação VCS registada, o sistema de controlo de versões pode monitorizar e detetar quaisquer diferenças entre os ficheiros na pasta do projeto local e os seus equivalentes na pasta do repositório VCS. Quando é detetada uma diferença, como quando um ficheiro de design foi editado e guardado no Altium Designer, o sistema de controlo de versões altera o estado do ficheiro local para Modified () e o Altium Designer disponibiliza um conjunto apropriado de comandos VCS no menu do botão direito nos painéis.

Submeter Alterações

Depois de um ficheiro de documento do projeto ter sido editado e guardado no Altium Designer, é assinalado como Modified, e indicado como tal () tanto nos painéis Projects como Storage Manager. Para submeter essas alterações como uma nova revisão no VCS, clique com o botão direito na entrada do ficheiro no painel e selecione o comando Commit no menu de contexto ou selecione o comando Project » History & Version Control » Commit nos menus principais.

Ao submeter uma alteração a um ficheiro, abre-se a caixa de diálogo Edit Comment dialog. Utilize esta caixa de diálogo para adicionar um comentário indicando o motivo da submissão, o que pode ajudar outras pessoas a perceber que alteração(ões) foram efetuadas. Se tiver adicionado comentários anteriormente, pode selecionar rapidamente um deles para utilização.

O comando Commit O comando Commit

Também pode ser utilizado o comando Commit Whole Project, que submeterá todos os ficheiros modificados no projeto. Ao submeter o projeto inteiro, será aberta a caixa de diálogo Commit to Version Control.

A caixa de diálogo Commit to Version Control
A caixa de diálogo Commit to Version Control

  • When using Subversion (SVN): O processo de submissão copia o ficheiro atualizado da pasta local para o repositório, incrementando o número de revisão da entrada VCS e voltando a definir o estado do ficheiro para No Modification ().
  • When using Git:O processo de commit atualiza o repositório de trabalho local do VCS, ao mesmo tempo que incrementa o número de revisão da entrada e define o estado do ficheiro para Ahead of Server (). Pode continuar a editar, guardar e fazer commit de ficheiros no repositório de trabalho ou ratificar as novas alterações utilizando o comando Push para atualizar o repositório Git remoto – o estado do ficheiro voltará então a No Modification ().

Tenha em atenção que, para projetos Workspace baseados em Git, os comandos Commit e Commit Whole Project não estão disponíveis. Pode utilizar o comando Save to Server no menu de contexto do botão direito da entrada do projeto no painel Projects para fazer commit do projeto Workspace para o repositório local e fazer push para o repositório remoto numa só ação.

Se necessário, os comandos Commit e Commit Whole Project podem ser disponibilizados ativando a opção VCS.AllowGitCommit na caixa de diálogo Advanced Settings dialog.

Depois de um projeto ter sido adicionado ao controlo de versões, podem ser adicionados mais ficheiros e feito commit para o controlo de versões individualmente, utilizando os comandos singulares Add to Version Control e Commit. Da mesma forma, ficheiros específicos podem ser removidos individualmente do controlo de versões (mas mantidos no projeto de trabalho local) com o comando Remove from Version Control.

Veja o painel Storage Manager para consultar a sequência de ações na secção VCS Revisions, que incluirá a criação de uma nova revisão VCS (com um número de revisão incrementado) para esse ficheiro – neste caso, a Revisão 3 e o comentário adicionado. O ícone indica a revisão mais recente e a revisão atual do ficheiro selecionado, ou, em termos de controlo de versões, a revisão Head.

A secção VCS Revisions do painel Storage Manager A secção VCS Revisions do painel Storage Manager

Para uma vista combinada das entradas de revisão e do histórico de eventos, mude para a vista Timeline única selecionando Switch to Combined View no menu de contexto do botão direito.

Check out a partir do controlo de versões

Como descrito acima, um projeto local que tenha sido adicionado ao Controlo de Versões pode ser editado pelo Altium Designer a partir da pasta local do projeto, sendo depois as alterações atualizadas para o repositório VCS. A pasta local e a pasta do repositório estão ligadas e, em última análise, sincronizadas pelo VCS.

Outro utilizador, que não terá acesso ao projeto a partir da pasta de origem (que é local ao seu PC), pode utilizar o processo Clone (Git) ou Check Out (SVN) para obter a sua própria cópia dos ficheiros a partir do repositório VCS que aloja o projeto. Todos os utilizadores que pretendam colaborar no design do projeto terão de se ligar a esse repositório de design comum, que normalmente está configurado para estar acessível através da rede local ou de um servidor.

A pasta do projeto no repositório selecionado e os respetivos ficheiros serão obtidos por check out para a pasta local especificada e abertos no Altium Designer. Tenha em atenção que a pasta local é a definida como pasta de check out para o repositório selecionado, e que o projeto obtido por check out fica subsequentemente ligado ao seu equivalente no repositório VCS. A ligação VCS instrui o sistema de controlo de versões a monitorizar e detetar quaisquer diferenças entre os ficheiros na pasta local de check out e os seus equivalentes na pasta do repositório VCS.

Faça às alterações quando a edição dos ficheiros estiver concluída, o que sincronizará os ficheiros no repositório de design para corresponderem aos da pasta de check out, criando uma nova revisão VCS.

Check out vs Open Project

Quando um projeto local tiver sido adicionado ao controlo de versões, existem, na realidade, duas formas de o editar e atualizar no VCS:

  • Abrindo o projeto local (File » Open Project) no Altium Designer e, em seguida, fazendo commit das alterações guardadas para o repositório VCS. Neste caso, a pasta do projeto local e o seu equivalente no repositório estão ligados pelo VCS.

  • Fazendo check out do projeto (File » Check Out) a partir do repositório VCS e, em seguida, fazendo commit para o repositório das alterações guardadas efetuadas no Altium Designer. Neste caso, o projeto na pasta de check out indicada e o seu equivalente no repositório estão ligados pelo VCS.

O projeto local é a origem, ou fonte, do projeto VCS que está a ser partilhado com outros utilizadores. Dependendo da forma como pretender trabalhar, esta versão local de origem pode ser removida ou bloqueada como fonte de projeto arquivada, sendo depois utilizada a abordagem Check Out para efetuar edições adicionais. Ou então, pode continuar a abrir e a trabalhar nos ficheiros do projeto a partir da pasta local de 'origem' (Open Project).

A melhor abordagem é manter-se num único método (recomenda-se o check out), uma vez que as duas opções tratam de uma pasta de trabalho em localizações diferentes – a pasta local do projeto de origem ou a pasta de check out VCS indicada. Pelo contrário, se ambos os métodos forem utilizados, existirão várias cópias ativas do mesmo projeto no PC local. No entanto, se estas versões forem devidamente sujeitas a Commit no repositório VCS centralizado após cada edição, o repositório conterá sempre a revisão mais recente do projeto, como pretendido.

Quando o projeto não está disponível localmente, como acontece com outro utilizador, a única opção é fazer Check Out do projeto a partir do repositório VCS.

Tenha também em atenção que, depois de um projeto ter sido inicialmente obtido por check out a partir do repositório VCS, ele passa a existir localmente e pode ser reaberto diretamente a partir da pasta de check out (File » Open Project). Neste caso, volta a existir a opção entre fazer check out de um projeto a partir do VCS ou abrir a versão local; contudo, existe sempre apenas uma cópia local. Em termos práticos de VCS, os dois métodos são muito semelhantes, mas comportam-se de forma diferente em algumas circunstâncias – por exemplo, quando falta um ficheiro local, caso em que será restaurado pelo processo de check out, mas será removido do Projeto por um comando Open Project.

Revisões do controlo de versões

Ao trabalhar com documentos de design no Altium Designer que estejam sob Controlo de Versões, os ficheiros de design acedidos a partir do repositório VCS central (partilhado) representarão a revisão mais recente desses ficheiros. Quando as edições locais estiverem concluídas e tiver sido feito commit (ou, com Git, push) para o repositório VCS partilhado, essas versões dos ficheiros passam então a ser as revisões mais recentes.

Assim, a sequência normal de check out, editar, guardar e commit (e Push, com Git) acrescenta progressivamente novas revisões de ficheiros ao VCS central à medida que o design do projeto é desenvolvido. No entanto, quando um projeto está a ser desenvolvido colaborativamente por vários designers, novas revisões podem ser submetidas ao repositório central (partilhado) em qualquer momento, por qualquer designer.

Revisão desatualizada

A interação entre vários designers e o repositório central pode manifestar-se de várias formas; uma delas é quando um projeto aberto localmente deixa de estar na revisão mais recente – um projeto obtido por check out a partir do repositório ou aberto a partir da pasta de trabalho local tem um estado de Out of date () no painel Projects.

Ficheiro identificado como Out of fateFicheiro identificado como Out of fate

Neste caso, outro utilizador editou e fez commit do mesmo projeto para o repositório desde a última edição local. Por exemplo, um utilizador local Barry está a trabalhar no projeto e fez commit, por exemplo, de Revision 14, mas outro utilizador Harold fez commit de Revision 15 depois desse momento, como indicado no painel Storage Manager apresentado abaixo. Como o VCS deteta a diferença entre um ficheiro na pasta de trabalho local e o seu equivalente no repositório (que, neste caso, é mais recente), o sistema considera a revisão mais recente local (indicada pelo ícone ) como desatualizada.

Diferentes estados de revisão no Storage ManagerDiferentes estados de revisão no Storage Manager

Pode utilizar a função Compare function do Altium Designer para determinar as diferenças entre as revisões dos ficheiros.

Esta situação é corrigida atualizando os ficheiros locais para corresponderem aos do repositório VCS central utilizando o comando Update no menu de contexto do botão direito do painel Projects ou Storage Manager. As duas versões do ficheiro ficam então sincronizadas, sendo a versão local (para o utilizador Barry) atualizada para a versão da revisão mais recente – neste exemplo, Revision 15. Tenha em atenção que, se fizer Save de um ficheiro enquanto este estiver designado como Out of date, isso criará uma situação de VCS Conflict, em que o VCS deteta que uma revisão mais antiga de um ficheiro foi atualizada na pasta de trabalho.

O repositório central e a revisão local no Storage ManagerO repositório central e a revisão local no Storage Manager

Também pode selecionar o comando Update Whole Project para aceder à caixa de diálogo Update from Version Control , que lhe permite selecionar ficheiros para fazer check out a partir de um repositório partilhado. Todos os documentos do projeto que estejam desatualizados ou contenham conflitos são apresentados na caixa de diálogo. Pode selecionar documentos específicos para atualizar ou optar por atualizar todos de uma só vez. Os documentos selecionados são atualizados a partir do repositório e todos os documentos desatualizados são selecionados por predefinição. Todos os documentos selecionados serão atualizados para a versão mais recente existente no repositório.

A caixa de diálogo Update from Version Control
A caixa de diálogo Update from Version Control

A coluna Path apresenta o diretório do ficheiro. A coluna Status apresenta o estado atual do ficheiro. Se o estado de um ficheiro for apresentado como Conflict, ao clicar em OK para atualizar os ficheiros será apresentada uma caixa de diálogo de confirmação. Clique em OK para atualizar para a versão mais recente no repositório ou em Cancel para sair e guardar as alterações na versão atualmente existente no repositório.

Um ficheiro de design não apresentará um estado Out of date se o projeto tiver sido aberto a partir da pasta local de check out, em vez de ter sido obtido por check out a partir do repositório. O comando Refresh do painel Storage Manager (ou a tecla F5) pode corrigir esta situação ao acionar o VCS para comparar as pastas ligadas; no entanto, esta situação é mais uma indicação de que os projetos devem ser obtidos por check out a partir do repositório (e não abertos diretamente localmente) quando se trabalha de forma colaborativa com um repositório SVN central.

Conflito de revisão

A interação entre vários designers e o repositório central também pode criar uma situação em que o mesmo ficheiro foi editado localmente e guardado por dois utilizadores do Altium Designer, e um deles fez commit dessas alterações.

Isto significa que a sequência de passos de um designer (check out, editar, guardar, commit) se cruzou com a de outro designer, pelo que um ficheiro que um utilizador retirou do repositório para editar pode não remain corresponder à revisão mais recente enquanto está a ser trabalhado – outro utilizador atualizou a revisão entretanto. Quem fizer primeiro commit das edições para o repositório, neste caso, prevalecerá ao criar uma nova revisão, enquanto outro utilizador que tenha editado e guardado o mesmo ficheiro enfrentará uma situação de Conflict – indicada pelo ícone .

Exemplo de Conflito de RevisãoExemplo de Conflito de Revisão

Na perspetiva de um VCS, que compara os ficheiros da pasta de trabalho com os ficheiros do repositório, um Conflict representa a condição em que uma revisão desatualizada de um ficheiro na pasta de trabalho foi editada e guardada.

Ao utilizar controlo de versões Git, é criado um Conflict quando dois designers editaram, guardaram e fizeram commit do mesmo ficheiro para a respetiva pasta do repositório Git local, e depois um deles envia essas alterações para o repositório Git central (o Remote). Tenha em atenção que as Git VCS Revisions serão mostradas no painel Storage como cadeias GUID.

Git VCS Revisions no painel Storage ManagerGit VCS Revisions no painel Storage Manager

Existem várias opções de comando, acedidas a partir do menu de clique com o botão direito History & Version Control do painel Projects, do menu principal Project » History & Version Control e do painel Storage Manager, que podem ser utilizadas quando um ficheiro tem o estado Conflict:

  • Commit – esta opção irá desencadear um erro do Subversion, uma vez que fazer commit da revisão editada localmente (por exemplo, Revision 15) iria sobrescrever a revisão mais recente (Revision 16) já submetida por outro utilizador.
  • Update – esta opção irá atualizar a revisão do ficheiro local para a versão mais recente do repositório central (Revision 16), perdendo assim quaisquer alterações locais que tenha feito em Revision 15.
  • Resolve Conflict – esta opção irá descartar as alterações submetidas ao repositório desde a última atualização. Depois de iniciar o comando, surgirá uma caixa de diálogo de confirmação - clique em Yes para continuar. O ficheiro de projeto na sua pasta de trabalho será atualizado para a revisão mais recente registada no repositório pelo outro utilizador, mas o editor manterá as alterações que fez à revisão anterior. O ficheiro local adquire, por isso, um estado de Modified, permitindo-lhe fazer commit dessas alterações para uma nova revisão no repositório - utilizando o comando Commit ou o comando Commit Whole Project. Depois de fazer commit do ficheiro de projeto, o outro utilizador verá o(s) ficheiro(s) como Out of date, uma vez que criou uma revisão mais recente no repositório.

    Esta opção só é recomendada quando um ficheiro text está em conflito, uma vez que o sistema Subversion tentará fazer Merge das diferenças no ficheiro local. Esse processo poderá corromper outros tipos de ficheiro, como documentos de design, pelo que um Conflict é melhor resolvido atualizando para a revisão de origem mais recente ou revertendo as alterações locais.

    Ao utilizar Git, o comando Resolve Conflict irá sobrepor a condição de conflito ao fazer commit do ficheiro para a pasta do repositório local. Quando o ficheiro for depois enviado com Push para o repositório remoto, o ficheiro do outro designer será assinalado como Out of Date e terá de ser atualizado. No entanto, tal como no Subversion, o caminho mais seguro é Update o ficheiro em conflito para a revisão de origem mais recente (um Pull em termos de Git) ou Revert as alterações locais.
  • Revert – esta opção fará perder (anular) as alterações locais, revertendo o ficheiro local para a sua revisão base – aqui, Revision 15. O conflito de revisão fica assim resolvido, mas o ficheiro será então assinalado como Out of date, uma vez que existe uma revisão mais recente (Revision 16) no repositório.

Comparar Revisões

Uma vantagem importante de trabalhar com Controlo de Versões é a capacidade de comparar revisões históricas de ficheiros de design, funcionalidade essa fornecida pelo Difference Comparator incorporado no Altium Designer e acedida a partir do painel Storage Manager. Quando utilizado em conjunto com o painel Differences, pode ser efetuada uma comparação lógica ou gráfica entre revisões VCS enquanto explora interativamente os objetos afetados. Podem ser comparadas revisões de Schematic e PCB.

Para iniciar uma comparação entre duas revisões, selecione ambas as entradas (utilizando o método padrão Ctrl+click) na lista Storage Manager do painel VCS Revisions e, em seguida, selecione o comando Compare no menu de contexto do painel, acedido com o botão direito.

Também pode utilizar o comando History & Version Control » Compare with Head  no menu de clique com o botão direito do documento no painel Projects para comparar o documento em foco com a revisão head desse documento no repositório VCS.

O comando Compare  no painel Storage ManagerO comando Compare no painel Storage Manager

Ambas as revisões do ficheiro serão abertas em modo de ecrã dividido, onde podem ser comparadas visualmente. As diferenças apresentadas são determinadas pelas opções selecionadas para os tipos de comparação física no separador Comparator tab da caixa de diálogo Options for ProjectProject » Project Options.

A chave para localizar e visualizar as diferenças da comparação está no painel Differences, que fornece uma lista selecionável das diferenças lógicas ou gráficas entre os documentos. As entradas listadas no painel para cada revisão do documento interagem com o editor, permitindo que uma diferença detetada (como um objeto movido) seja destacada graficamente quando selecionada.

Localizar e visualizar as diferenças da comparação é feito no painel DifferencesLocalizar e visualizar as diferenças da comparação é feito no painel Differences

A funcionalidade Compare também se aplica a revisões de documentos PCB, juntamente com revisões de documentos Schematic e documentos baseados em texto.

  • Para documentos schematic ou PCB (de design ou de biblioteca), é efetuada uma comparação gráfica e as diferenças detetadas são listadas no painel Differences. Com as duas versões do documento abertas lado a lado na janela do editor de design, pode analisar graficamente as diferenças. Clicar numa pasta de nível superior correspondente a uma diferença detetada irá destacar essa diferença em ambos os documentos em simultâneo.
  • Para documentos ASCII baseados em texto, surgirá a caixa de diálogo CompareForm, mostrando um 'diff' gráfico das duas versões do documento. Os documentos escolhidos são apresentados lado a lado. A caixa de diálogo serve apenas para comparação - não podem ser feitas alterações a um documento carregado. Através de codificação por cores, a caixa de diálogo destaca as várias diferenças entre as duas versões do documento - linhas adicionadas (rosa), linhas modificadas (verde) e linhas eliminadas (azul). É apresentado no canto inferior esquerdo da caixa de diálogo um resumo das alterações e a legenda do código de cores.

A funcionalidade CompareA funcionalidade Compare

O comando Compare pode ser aplicado a qualquer par de revisões, incluindo entre a revisão local atual (na pasta de trabalho) e uma revisão mais recente no repositório. Nesta situação, a revisão local mais recente é indicada no painel Storage Manager como Out of date (), mas pode ainda assim ser comparada com uma revisão mais recente que tenha sido adicionada ao repositório por outro utilizador.

A revisão local é indicada no painel Storage Manager como Out of dateA revisão local é indicada no painel Storage Manager como Out of date

Esta abordagem permite-lhe pré-visualizar graficamente as alterações que serão impostas ao atualizar para a nova revisão. No exemplo da imagem acima, a revisão local atual (indicada pelo ícone ) é Revision 19, mas outro utilizador fez commit de uma nova revisão para o repositório (Revision 22). Iniciar uma comparação visual entre Revision 19 e Revision 22 permite-lhe tomar uma decisão informada sobre aceitar as novas alterações do repositório e, por implicação, sobre se irá aplicar o comando Update ou sobrepor essa ação induzindo uma condição de Conflict – através de voltar a guardar o ficheiro local e resolving the conflict a favor da sua versão local.

Terminologia de Controlo de Versões

Termo Significado
Base

A revisão no repositório que retirou para ser a sua Working Copy local. Também chamada de revisão retirada por check out.

Check-in

Guardar a sua cópia de trabalho do ficheiro no repositório. Referido como Commit no Altium Designer.

Check-out

Retirar uma cópia de um ficheiro do repositório VCS para uma pasta de trabalho. Trata-se geralmente da revisão mais recente do ficheiro, mas todas as revisões anteriores também podem ser retiradas por check out. Dependendo do VCS, o ficheiro pode ser assinalado como simplesmente checked-out ou checked-out em exclusivo (bloqueado).

Clone

Um comando Git que copia (clona) um repositório Git remoto para um repositório Git de trabalho numa pasta local, ao mesmo tempo que faz automaticamente check out da versão HEAD (mais recente) para a pasta. O repositório local inclui a referência de ligação ao repositório remoto (origin neste caso), pelo que os ficheiros atualizados no repositório de trabalho local podem ser carregados para o repositório remoto utilizando o comando Push.

Commit

Guardar a cópia de trabalho do ficheiro novamente no repositório. Referido como Check-in em alguns sistemas de controlo de versões. No software Altium Design, o comando normal Save guarda um ficheiro editado na pasta de trabalho, enquanto Commit guarda esse ficheiro da pasta no repositório como uma nova revisão (versão).

Conflict

A situação em que dois utilizadores do Altium Designer tentam fazer commit de alterações que afetam a mesma região do mesmo ficheiro. Estas têm de ser resolvidas, seja com uma ferramenta de Merge, manualmente, ou determinando qual das versões irá prevalecer (tornar-se a nova revisão).

Database

O armazenamento mestre de todos os ficheiros sob controlo de versões (ou de origem) - também conhecido na prática como Repository .

Git

Git é um sistema de controlo de versões open-source. O Altium Designer incorpora capacidades Git (através da extensão VCS Provider - Git), permitindo que as revisões sejam diretamente acompanhadas e acedidas a partir dos painéis Storage Manager e Projects.

Head

A revisão mais recente submetida ao sistema de controlo de versões.

Log message

Um comentário sobre as alterações efetuadas numa revisão quando esta é devolvida (submetida) ao repositório. As mensagens de registo podem ser usadas como um resumo do progresso das alterações num ficheiro.

Project

Muitos sistemas de controlo de versões suportam o conceito de projeto. Um projeto VCS é um conjunto de ficheiros relacionados que podem ser submetidos/extraídos como um conjunto. O VCS pode também suportar outras funcionalidades do tipo projeto, como definir um número de versão em todos os ficheiros de um projeto. Isto é distinto do conceito de projeto no Altium Designer, que pode ser adicionado ao Controlo de Versões usando o comando Add Project Folder to Version Control command.

Push

Atualizar um repositório Git remoto com o(s) ficheiro(s) no seu repositório de trabalho local – para sincronizar os repositórios local e remoto. Este comando está disponível quando um ficheiro no repositório Git local é mais recente do que o seu equivalente no repositório Git remoto. Conceptualmente, é o complemento de um comando Git Pull.

Repository

O armazenamento principal de todos os ficheiros sob controlo de versões (ou de código-fonte) - também pode ser conhecido como o Database.

Revision

Uma alteração submetida no histórico de um ficheiro ou conjunto de ficheiros. Esta é a referência alfanumérica fornecida pelo VCS para acompanhar as diferentes edições (versões) que mantém do ficheiro.

Sandbox

A pasta para onde os ficheiros são extraídos do repositório, para que se possa trabalhar neles - também designada por Working Folder. Os ficheiros extraídos do Software de Design Altium são carregados automaticamente.

SVN

Subversion é um sistema de controlo de versões open source. O Altium Designer incorpora capacidades de SVN (através da extensão VCS Provider - SVN), permitindo que as revisões sejam diretamente acompanhadas e acedidas a partir dos painéis Storage Manager e Projects.

Update

O ato de verificar e “obter” alterações da versão do repositório de um ficheiro para uma cópia de trabalho (o complemento de Commit, ou Check-in). O processo de integração de quaisquer diferenças requer uma ferramenta de Merge, ou atualização manual.

VCS

Version Control System: Um termo genérico aplicado a qualquer ferramenta capaz de gerir o histórico de versões de ficheiros e a recuperação de ficheiros.

Version

O termo versão é normalmente usado para se referir ao número de referência externo atribuído por uma pessoa aos ficheiros controlados, ou à sua saída (como no caso do código-fonte). Na maioria das vezes, isto é considerado uma revisão.

Working Copy

A cópia “local” de um ficheiro na qual são feitas alterações - normalmente reside em Working Folder.

Working Folder

A pasta para a qual os ficheiros são extraídos do repositório para que se possa trabalhar neles – com o Git, este é um repositório de trabalho local. Os ficheiros extraídos do Altium Designer são carregados automaticamente.

Referências

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.

Conteúdo