Sistemas de controle de versão para projetos de hardware?


59

Quais são alguns dos bons sistemas de versão para projetos de hardware? Existem equivalentes do Google Code, CVS e SVN? Esses sistemas de controle de versão são adequados para projetos de hardware que envolvem arquivos PCB, esquemas .. (até mesmo código de firmware)?


5
Ótima pergunta! Gostaria de ver alguns exemplos de repositórios incluídos nas respostas.
tyblu

+1 por reconhecer que os projetos de HW poderiam se beneficiar do controle de origem. Os caras com quem trabalho parecem ter dificuldade em perceber isso.
Nate

1
Estou usando o Mercurial para versão de placas de circuito há um tempo, e isso me salvou algumas vezes. Definitivamente uma boa ideia.
Stephen Collings

1
Eu uso o conjunto de ferramentas gEDA para EDA e acompanho as coisas no git. Recentemente, escrevi alguns ganchos do Git que geram automaticamente imagens .png de qualquer esquema ou PCB modificado e os adiciona ao commit. Isso me permite tirar proveito do diff de imagem do GitHub. O PCB e o gschem também possuem ferramentas nativas de diferenças que funcionam com o git que fazem algo semelhante localmente. Meus ganchos estão aqui: github.com/BenBergman/.git_hooks Exemplo de projeto que os utiliza: github.com/BenBergman/uJoypad
ben

Respostas:


27

Basicamente, todos os sistemas VCS podem lidar com arquivos de texto e binários normalmente. Claro que você não pode mesclar os binários.

Portanto, desde que você não esteja usando coisas obsoletas como o CVS, você será bom em QUALQUER sistema.


3
Uso CVS para todos os meus projetos (software e hardware, com PCB, firmware, ferramentas etc.) e não tenho nenhum problema. Claro, o CVS é ​​obsoleto, mas eu tenho 20 anos de histórico de projetos e nenhum conversor trabalhou para migrar meus repositórios para o Mercurial, ou SVN.
Axeman

12
Em seguida, de forma pragmática é simplesmente demasiado deixar o velho material no CVS, e depois colocar novidades no novo sistema ...
Johan

O CVS é ​​um sistema bonito quando comparado ao horror que é o Microsoft Visual Source Safe, no qual estou preso em um projeto no qual estou trabalhando no momento. Blech.
Kevin Vermeer

@ Kevin Vermeer Você sabe que está no lado negativo na escala quando você está comparando dois "não que nice" coisas uns com os outros;)
Johan

@ KevinVermeer, eu tive que usar o sourcesafe, a desgraça do mundo do controle de versão. Meu último chefe permitiu a completa negligência do controle de versão por causa disso.
Kortuk 26/05

17

Eu usei o Subversion com Altium antes. Funcionou com sucesso, mas na época a falta de uma ferramenta diff a tornou menos útil do que o controle de versão com o código. Eu ainda acho que valeu a pena, mesmo sem a capacidade diff.

Para firmware, Subversion ou Git são ótimos. Se você nunca usou o Git antes, tente o Subversion primeiro (mesmo que isso dificulte o aprendizado do Git posteriormente).

A Altium introduziu recentemente uma ferramenta de difusão para esquemas e PCBs, então espero que o Subversion seja ótimo, modulo a insanidade usual que os fornecedores de EDA conseguem incorporar em seus produtos.

Eu pretendo experimentar isso com a nova ferramenta diff; se o fizer, tentarei lembrar de postar um link para o repositório aqui como exemplo.

Atualizar

Eu tentei isso e tenho que dizer que estou um pouco desapontado com a ferramenta diff Altium. É funcional, mas as mudanças entre as rotações do quadro são substanciais o suficiente para que não sejam tão úteis, pelo menos para mim. Tendo visto isso, decidi esquecer a ferramenta diff e usar o Github. Aqui está o repo, se você estiver interessado: https://github.com/rascalmicro/pcb


Você usou a GUI SVN integrada (com Altium) ou algo externo?
Nick T

O Altium mais novo com SVN é ótimo, embora eu acrescente que as revisões esquemáticas / de PCB não são tão críticas quanto no código. Se você estiver lidando com mais de 3-4 revisões máximas da versão esquemática / PCB, provavelmente algo muito errado nas fases de design ou requisitos.
Mark

@ Mark: Você está falando da versão 10 beta ou do verão 09?
Nick T

2
Se as mudanças entre as rotações do quadro forem substanciais o suficiente para que não sejam úteis, você não estará cometendo o suficiente. Comprometa cedo, comprometa-se frequentemente! Use tags para rastrear as rotações do quadro.
precisa saber é o seguinte

3
Estou usando SVN, e definitivamente vale a pena. Meu sistema é o seguinte: eu clico no botão Salvar, devo provavelmente fazer um commit. Eu sigo as alterações lendo as mensagens de confirmação como "Adicionada parte X à biblioteca" ou "Adicionadas placas de teste aos ônibus I2C e SPI". As liberações enviadas para fabricação são totalmente diferentes, use svn cp trunk/ tags/releaseX/para tirar uma captura instantânea da liberação. Em seguida, é possível diferenciar releaseX / file e releaseY / file se desejar ver as mudanças entre as liberações ou navegar pelos logs de confirmação e ver alterações individuais. As ramificações ajudam a modularizar o fluxo de confirmações.
Kevin Vermeer

10

Eu uso o cliente VisualSVN Server + TortoiseSVN e funciona muito bem


7

Eu uso o Google Code para hospedar o Super OSD , um projeto eletrônico meu.

Uso exclusivamente o conjunto gEDA para gerenciar meus esquemas e PCBs. De maneira útil, o gEDA produz arquivos de texto (que são principalmente legíveis por humanos, embora seja difícil interpretá-los) para os esquemas, em vez de blobs binários, como o Eagle. Por exemplo, essa é uma diferença entre dois esquemas , um com cerca de 5 dias e outro que acabei de enviar. Não é particularmente útil, pois na verdade você não pode ver muitas alterações nos arquivos de texto, mas pode mostrar alterações relativas - ou seja, retrabalho maciço, versus alteração de componente único - e permite que você volte às versões anteriores.


3
+1 para o uso de formatos baseados em texto para arquivos. O espaço em disco é barato e a compactação de texto é fácil. Eu gostaria que as bolhas binárias fossem menos comuns.
Kevin Vermeer

4

O truque é usar algo que funcione bem com binários. Se você estiver usando muito binários e compartilhando com outras pessoas, pode ser benéfico implementar um mecanismo de bloqueio nesses arquivos binários. Nós encontramos muitos problemas ao usar o Subversion com arquivos binários e compartilhar com outros que surgiram devido à falta de semântica de bloqueio e sobrescrever / mesclar arquivos binários. Adicionar um mecanismo de bloqueio a esses arquivos remove erros humanos na comunicação sobre quem editou / alterou o arquivo binário.

Se você não usou o controle de versão antes, recomendo ler sobre as diferentes maneiras em que eles funcionam e selecione um para atender às suas necessidades com as quais você e / ou sua equipe possam se sentir confortáveis. Os sistemas de controle de versão distribuídos oferecem muitos benefícios sobre os sistemas cliente-servidor, mas tendem a ser mais complicados de se trabalhar.


3

Por que não usar apenas o Google Code ou um repositório SVN? Como este é um sistema de controle de revisão. Não há uso definido para isso. É incrivelmente útil para vários desenvolvedores e monitorando alterações no código fonte.


1
Você já fez isso? Colocar binários no SVN ou no Mercurial resultou terrivelmente para mim.
tyblu

2
Não, eu não tenho, mas usei o SVN não apenas para o código-fonte. Coisas como PDFs e arquivos .txt.
Dean

2
@ Tyblu, o que você quer dizer com terrível? Eu fiz isso com arquivos de esquema e layout e funcionou muito bem para mim com o subversion.
Kellenjb

Não consigo acompanhar as alterações nos arquivos EAGLE com o Mercurial. Parece que o arquivo inteiro é diferente. Você tem um repositório que eu possa espiar?
tyblu

5
@tyblu é por isso que você adicionar comentários quando você verificar em arquivos :)
vicatcu

3

Eu usei o Subversion com Altium antes.

Eu uso o SVN com integração Altium para captura esquemática: funciona bem. Devo dizer que o visualizador diff é melhor do que não ter nada, porque meus arquivos SchDoc são binários, ou seja, impossíveis de comparar de outra forma! Eu uso o cliente SVN integrado no Altium Designer em paralelo com o TortoiseSVN sem nenhum problema. O cliente da Altium é um pouco limitado em termos de recursos SVN. Eu faço minhas "tags" com o Tortoise.

Minha opinião é baseada no Altium Designer 10 build 27009 e na versão 13.1 build 27559.



1

Não é um sistema de controle de versão real, mas o Dropbox também lida com a revisão de arquivos e os disponibiliza para diferentes pessoas em diferentes sistemas operacionais. - sistema de controle de versão do homem pobre;)


2
como alguém que já trabalhou com equipes antes: por favor , não faça isso. O Dropbox não é um sistema de controle de versão de pobre . É um sistema de compartilhamento / arquivamento de arquivos. Você não precisa usar o git em sua extensão máxima para que seja mais útil, realmente! O Dropbox faz todas as coisas erradas que o CVS fez corretamente (como lidar com revisões mais recentes, como trocar alterações, como marcar revisões específicas), na verdade não é um sistema de controle de versão .
Marcus Müller

1

Eu estava no Maker Faire em San Mateo no fim de semana passado e conheci alguns representantes de uma nova empresa (para mim) chamada Up-Verter . Eles estão basicamente construindo uma ferramenta CAD elétrica que é executada na "nuvem" (ou seja, no seu navegador) e é conceitualmente construída em torno da colaboração, portanto, deve lidar com a mesclagem / diff e o material de versão usual.

Eu ainda não tentei e ainda parece um pouco verde (não pense que você ainda possa fazer o layout de placas de circuito impresso, apenas esquemas), mas é meio intrigante. Eles alegaram que podiam importar arquivos Eagle, o que é uma vantagem.

Também conversei com os representantes da Eagle na barraca do Element 14, e eles indicaram que estão mudando para um formato XML, que é um grande passo para tornar mais plausível o versionamento de esquemas e layout ... todos os avanços interessantes nessa frente !



0

Esta é realmente uma pergunta muito boa. Como os FPGAs se enquadram na categoria "hardware", você pode estar interessado em uma estrutura de projeto amigável ao controle de versão que proponho para projetos de FPGA:

http://www.saardrimer.com/fpgaproj/

Penso que as ideias e conceitos podem ser facilmente aplicáveis ​​a outros projetos de hardware e em geral. (Comentários sobre esta proposta são bem-vindos, aliás.)


2
O link não está mais funcionando.
tyblu

0

Evite git. Ele não lida bem com grandes repositórios. E seus repositórios ficarão grandes, a menos que você

  1. Possuem arquivos esquemáticos binários que só mudam um pouco quando mudam
  2. Ative tratar os binários como texto.

3
Bem ... Você deve ter vários repositórios pequenos, um repositório por projeto.
26411 Johan

1
@ Johan - ...... Sim .... Boa sorte com esse pesadelo de manutenção. De qualquer forma, tenho 1 repo por cliente (cerca de 4, repositórios, agora), com muitos subprojetos, e funciona muito bem. O SVN, pelo menos, parece capaz de lidar com mais de 5 GB de dados binários sem muitos problemas.
Connor Wolf

1
@ConnorWolf Gostaria de saber como você está fazendo isso. Fazemos um repositório Git por projeto e não tivemos problemas. Não ter um único repositório por projeto me parece um pesadelo de manutenção.
Matt Young

1
SVN, pelo menos (provavelmente também o git) parece armazenar diferenças binárias, em vez de completar cópias de um arquivo, por isso é impressionante em termos de espaço.
Connor Lobo

1
@ConnorWolf re: pesadelo de manutenção: 8 anos depois: os sub-módulos git são provavelmente o que você deseja aqui. Faz sentido, especialmente se você compartilhar, por exemplo, itens de ferramentas padrão entre vários projetos ou clientes.
Marcus Müller

0

Eu tenho usado vários repositórios Mercurial (HG) (um por projeto) para isso, mas como a maioria dos sistemas de controle de versão experimentará, os repositórios estão ficando cada vez maiores.


0

Você deveria tentar o Javali . Ele foi desenvolvido desde o início para lidar com grandes arquivos e repositórios. 100 GB ou mais de dados binários não são problema.


0

Gostaria apenas de adicionar um link ao HgInit, uma excelente introdução ao Mercurial, se você decidir seguir esse caminho. Pessoalmente, uso o Git, mas eles são muito semelhantes em termos de arquitetura (ambos são sistemas de controle de versão distribuídos). A natureza distribuída deles os torna ótimos para trabalhar em equipes bem "distribuídas". :)

http://hginit.com/


Embora o Mercurial seja um bom sistema de controle de fonte para projetos de software 'puros', muitas de suas vantagens são perdidas em projetos que lidam com arquivos essencialmente puramente binários, pois é incapaz de mesclar sensatamente as coisas. As lições do HgInit não farão sentido, a menos que você esteja apenas fazendo software.
Whatsisname


0

Vale a pena pensar em qualquer descrição ascii de hardware. Uma vez que uma descrição legível por humanos para o hardware é adotada, qualquer sistema moderno de controle de revisão (RCS) funciona muito bem. Os layouts de circuito geralmente são totalmente descritos pelos arquivos Gerber; a UML descreve outras partes, que são descrições totalmente ascii. Existem formatos ASCII menos padrão para esquemas, layout mecânico e assim por diante (KiCAD, por exemplo).

A adoção é mais uma questão prática, requer um requisito reconhecido para um bom controle de revisão, incluindo uma diferença significativa. O que também significa muitas vezes abrir mão do Word, Excel, PowerPoint, etc. Um argumento muito difícil contra gerentes e MBAs, mas indiscutivelmente regulamentados setores como Dispositivos Médicos, Aviação e Militar, já exigem um bom controle de revisão.

Como outros já apontaram, o RCS mais moderno revisará os arquivos binários de controle, o que é muito útil para arquivar e identificar versões - mas qualquer sistema de gerenciamento eletrônico de documentos (EDMS), o Agile, por exemplo, pode atribuir um número de revisão a um binário arbitrário. Entediante.


0

Embora não seja gratuito e dificilmente livre de bugs, o Altium vault faz um excelente trabalho; Posso reverter facilmente para qualquer ponto de confirmação (como qualquer VCS deve fazer) com muita facilidade.

Nesta área, a Altium está muito à frente das ferramentas premium (Mentor e Cadence).

Eu não trabalho para Altium mas esta ferramenta, apesar dos problemas atuais, fazer hardware completa de versões muito simples.


E isso é provavelmente a única coisa que o Vault é bom para ...
Matt Young

A maneira UNIX; faça uma coisa e faça muito bem.
Peter Smith
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.