Sistemi di controllo versione per progetti hardware?


59

Quali sono alcuni dei buoni sistemi di versioning per progetti hardware? Esistono equivalenti di codice Google, CVS e SVN? Tali sistemi di controllo della versione sono adatti a progetti hardware che coinvolgono file PCB, schemi ... (anche codice firmware)?


5
Ottima domanda! Mi piacerebbe vedere alcuni esempi di repository inclusi nelle risposte.
Tyblu,

+1 Per riconoscere che i progetti HW potrebbero beneficiare del controllo del codice sorgente. I ragazzi con cui lavoro sembrano avere difficoltà a realizzarlo.
Nate,

1
Uso Mercurial per la versione dei circuiti da un po 'di tempo, e mi ha salvato il culo un paio di volte. Sicuramente una buona idea.
Stephen Collings,

1
Uso la suite di strumenti gEDA per EDA e tengo traccia delle cose in git. Di recente ho scritto alcuni hook git che generano automaticamente immagini .png di eventuali schemi o PCB che sono stati modificati e li aggiungono al commit. Questo mi permette di sfruttare la diff dell'immagine di GitHub. PCB e gschem hanno anche strumenti diff nativi che funzionano con git che fanno qualcosa di simile localmente. I miei hook sono qui: github.com/BenBergman/.git_hooks Progetto di esempio che li utilizza: github.com/BenBergman/uJoypad
ben

Risposte:


27

Fondamentalmente, tutti i sistemi VCS possono gestire file di testo e binari con garbo. Ovviamente non puoi unire quelli binari.

Quindi finché non stai usando cose obsolete come CVS sarai bravo con QUALSIASI sistema.


3
Uso CVS per tutti i miei progetti (software e hardware, con PCB, firmware, strumenti, ecc.) E non ho problemi. Certo, CVS è obsoleto, ma ho 20 anni di storia del progetto e nessun convertitore ha lavorato per migrare i miei repository su Mercurial o SVN.
Axeman,

12
Quindi un modo pragmatico è semplicemente quello di lasciare le vecchie cose nel CVS, e quindi inserire nuove cose nel nuovo sistema ...
Johan

CVS è un bellissimo sistema se paragonato all'orrore di Microsoft Visual Source Safe, a cui sono legato per un progetto a cui sto lavorando in questo momento. Blech.
Kevin Vermeer,

@Kevin Vermeer Sai che sei sul lato negativo della scala quando stai confrontando due cose "non così belle" tra loro;)
Johan

@KevinVermeer, ho dovuto usare sourcesafe, la rovina del mondo del controllo delle versioni. Il mio ultimo capo ha permesso la completa negligenza del controllo della versione a causa di ciò.
Kortuk,

17

Ho usato Subversion con Altium prima. Funzionava correttamente, ma al momento la mancanza di uno strumento diff lo rendeva meno utile del controllo della versione rispetto al codice. Penso ancora che valesse la pena farlo, anche senza capacità di diff.

Per firmware, Subversion o Git sono entrambi fantastici. Se non hai mai usato Git prima, prova prima Subversion (anche se renderà più difficile l'apprendimento di Git in seguito).

Altium ha recentemente introdotto uno strumento diff per schemi e PCB, quindi mi aspetto che Subversion ora sia eccezionale, modulo la solita follia che i venditori di EDA riescono a integrare nei loro prodotti.

Volevo provare questo con il nuovo strumento diff; se lo faccio, proverò a ricordare di pubblicare un link al repository qui come esempio.

Aggiornare

Ho provato questo, e devo dire che sono un po 'deluso dallo strumento diff Altium. È funzionale, ma i cambiamenti tra i giri della scheda sono abbastanza sostanziali da non essere così utili, almeno per me. Visto questo, ho deciso di dimenticare lo strumento diff e di usare Github. Ecco il repository se sei interessato: https://github.com/rascalmicro/pcb


Hai usato la GUI SVN integrata (con Altium) o qualcosa di esterno?
Nick T,

Il più recente Altium con SVN è fantastico, anche se aggiungerò che le revisioni PCB / schematiche non sono così critiche come lo sono nel codice. Se hai a che fare con più di 3-4 revisioni massime di schemi / PCB, probabilmente qualcosa di molto sbagliato nelle fasi di progettazione o dei requisiti.
Segna il

@Mark: stai parlando della versione beta 10, o dell'estate 09?
Nick T,

2
Se i cambiamenti tra i giri della scheda sono abbastanza sostanziali da non essere utili, non ti impegni abbastanza spesso. Impegnarsi presto, impegnarsi spesso! Usa i tag per tenere traccia dei giri della scheda.
Kevin Vermeer,

3
Sto usando SVN ed è sicuramente utile. Il mio sistema è questo: ho premuto il pulsante Salva, dovrei probabilmente fare un commit. Seguo le modifiche leggendo i messaggi di commit come "Aggiunta parte X alla libreria" o "Aggiunti test pad ai bus I2C e SPI". Le versioni inviate per la fabbricazione sono completamente diverse, utilizzate svn cp trunk/ tags/releaseX/per scattare un'istantanea della versione. È quindi possibile diff releaseX / file e releaseY / file se si desidera visualizzare le modifiche tra le versioni oppure è possibile sfogliare i registri di commit e visualizzare le singole modifiche. Le filiali aiutano a modulare l'inondazione di impegni.
Kevin Vermeer,

10

Uso VisualSVN Server + client TortoiseSVN e funziona perfettamente


7

Uso Google Code per ospitare Super OSD , un mio progetto di elettronica.

Uso esclusivamente la suite gEDA per gestire i miei schemi e PCB. Utilmente, gEDA produce file di testo (che sono per lo più leggibili dall'uomo, anche se è difficile interpretarli) per gli schemi, invece di BLOB binari, come Eagle. Ad esempio, questa è una differenza tra due schemi , uno di circa 5 giorni e uno che ho appena spinto. Non è particolarmente utile poiché in realtà non è possibile vedere molte modifiche nei file di testo, ma può mostrare cambiamenti relativi, ad esempio rilavorazioni di massa, rispetto a modifiche di singoli componenti e consente di tornare alle versioni precedenti.


3
+1 per l'uso di formati basati su testo per i file. Lo spazio su disco è economico e la compressione del testo è semplice. Vorrei che i BLOB binari fossero meno comuni.
Kevin Vermeer,

4

Il trucco è usare qualcosa che funzioni bene con i binari. Se usi molto i binari e li condividi con altri, potrebbe essere utile implementare un meccanismo di blocco su quei file binari. Abbiamo riscontrato molti problemi con l'utilizzo di Subversion con i file binari e la condivisione con altri sorti a causa della mancanza di blocco della semantica e della sovrascrittura / fusione dei file binari insieme. L'aggiunta di un meccanismo di blocco su questi file rimuove l'errore umano nella comunicazione su chi ha modificato / modificato il file binario.

Se non hai mai usato il controllo della versione prima, ti consiglio di leggere i diversi modi in cui funzionano e selezionarne uno per soddisfare le tue esigenze con cui tu e / o il tuo team potete essere a vostro agio. I sistemi di controllo di versione distribuito offrono molti vantaggi rispetto ai sistemi client-server, ma tendono ad essere più complicati con cui lavorare.


3

Perché non usare semplicemente Google Code o un repository SVN? Poiché si tratta di un sistema di controllo di revisione. Non vi è alcun uso definito per questo. È incredibilmente utile per più sviluppatori e per monitorare le modifiche nel codice sorgente.


1
L'hai fatto? Mettere binari in SVN o Mercurial è diventato terribilmente per me.
Tyblu,

2
No, ma non ho usato SVN non solo per il codice sorgente. Cose come PDF e file .txt.
Decano

2
@Tyblu cosa intendi per terribile? L'ho fatto con file schematici e di layout e ha funzionato benissimo per me con sovversione.
Kellenjb,

Non riesco a seguire le modifiche ai file EAGLE con Mercurial. Sembra che l'intero file sia diverso. Hai un repository a cui posso dare un'occhiata?
Tyblu,

5
@tyblu ecco perché aggiungi commenti quando
esegui il

3

Ho usato Subversion con Altium prima.

Uso SVN con l'integrazione Altium per l'acquisizione schematica: funziona bene. Devo dire che il visualizzatore di differenze è meglio che non avere nulla, perché i miei file SchDoc sono binari, cioè impossibile confrontare diversamente! Uso il client SVN integrato in Altium Designer in parallelo con TortoiseSVN senza problemi. Il client Altium è un po 'limitato in termini di funzionalità SVN. Faccio i miei "tag" con Tortoise.

La mia opinione si basa su Altium Designer 10 build 27009 e versione 13.1 build 27559.



1

Non è un sistema di controllo della versione reale, ma Dropbox gestisce anche la revisione dei file e li rende disponibili per persone diverse su sistemi operativi diversi. - sistema di controllo versione mans scarsa;)


2
come qualcuno che ha già lavorato con team in precedenza: per favore non farlo. Dropbox non è un sistema di controllo della versione di un uomo povero . È il sistema di condivisione / archiviazione dei file. Non devi usare git nella sua massima misura per essere più utile, davvero! Dropbox fa tutte le cose sbagliate che anche CVS ha fatto bene (come gestire le revisioni più recenti, come scambiare le modifiche, come contrassegnare le revisioni specifiche), in realtà non è un sistema di controllo della versione .
Marcus Müller,

1

Sono stato alla Maker Faire di San Mateo lo scorso fine settimana e ho incontrato alcuni rappresentanti di una nuova società (per me) chiamata Up-Verter . Fondamentalmente stanno costruendo uno strumento CAD elettrico che gira nel "cloud" (cioè nel tuo browser) ed è concettualmente costruito attorno alla collaborazione, quindi dovrebbe occuparsi di merge / diff e delle solite cose di versioning.

Non l'ho ancora provato, e sembra ancora un po 'verde (non credo di poter ancora effettivamente fare il layout del pcb, solo schemi), ma è un po' intrigante. Hanno affermato di poter importare file Eagle, il che è un vantaggio.

Ho anche parlato con le rappresentanti Eagle nella tenda Element 14, e hanno indicato che si stanno spostando in un formato XML, il che è una specie di grande passo verso rendere più plausibile il controllo delle versioni di schemi e layout ... tutti gli avanzamenti interessanti su questo fronte !



0

Questa è davvero un'ottima domanda. Poiché gli FPGA rientrano nella categoria di "hardware", potresti essere interessato a una struttura di progetto intuitiva per il controllo della versione che propongo per progetti FPGA:

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

Penso che le idee e i concetti possano essere facilmente applicati ad altri progetti hardware e in generale. (I commenti su questa proposta sono molto graditi, tra l'altro.)


2
Il link non funziona più.
tyblu,

0

Evita git. Non gestisce bene i repository di grandi dimensioni. E i tuoi repository diventeranno grandi a meno che tu

  1. Hanno file schematici binari che cambiano in qualche modo solo quando cambiano
  2. Attiva tratta i file binari come testo.

3
Bene ... Dovresti avere molti piccoli repository, un repo per progetto.
Johan,

1
@Johan - ...... Sì .... Buona fortuna con quell'incubo di manutenzione. Ad ogni modo, ho 1 repository per client (circa 4, repository, ora), con molti sottoprogetti e funziona abbastanza bene. SVN, almeno, sembra essere in grado di gestire 5+ GB di dati binari senza troppi problemi.
Connor Wolf,

1
@ConnorWolf Sarei interessato a sapere come lo stai facendo. Facciamo un repository Git per progetto e non abbiamo avuto problemi. Non avere un singolo repository per progetto mi sembra un incubo per la manutenzione.
Matt Young,

1
SVN, almeno (probabilmente anche git) sembra memorizzare differenze binarie, piuttosto che completare copie di un file, quindi è incredibilmente efficiente in termini di spazio.
Connor Wolf,

1
@ConnorWolf re: incubo di manutenzione: 8 anni dopo: git-submodules sono probabilmente quello che vuoi qui. Ha senso soprattutto se condividi, ad esempio, elementi di attrezzamento standard tra più progetti o clienti.
Marcus Müller,

0

Ho usato più repository Mercurial (HG) (uno per progetto) per questo, ma come sperimenterà la maggior parte dei sistemi di controllo versione, i repository stanno diventando sempre più grandi.


0

Dovresti provare Cinghiale . È stato progettato per gestire file e repository di grandi dimensioni. 100 GB o più di dati binari non sono un problema.


0

Vorrei solo aggiungere un link a HgInit, un'eccellente introduzione a Mercurial se decidi di seguire questa strada. Personalmente uso Git, ma sono molto simili in termini di architettura (entrambi sono sistemi di controllo della versione distribuiti). La loro natura distribuita li rende ideali per lavorare bene in team "distribuiti". :)

http://hginit.com/


Sebbene Mercurial sia un buon sistema di controllo del codice sorgente per progetti software "puri", molti dei suoi vantaggi si perdono nei progetti che trattano file essenzialmente puramente binari in quanto non è in grado di unire sensatamente le cose. Le lezioni di HgInit non avranno alcun senso a meno che non si stia solo eseguendo un software.
whatsisname


0

Vale la pena pensare a tutte le descrizioni ascii dell'hardware. Una volta adottata una descrizione leggibile dall'uomo per l'hardware, qualsiasi moderno sistema di controllo di revisione (RCS) funziona abbastanza bene. I layout dei circuiti sono in genere completamente descritti dai file Gerber, UML descrive altre parti, che sono descrizioni completamente ascii. Esistono formati ASCII meno standard per schemi, layout meccanico e così via (KiCAD ad esempio).

L'adozione è più una questione pratica, richiede un requisito riconosciuto per un buon controllo di revisione, tra cui una differenza significativa. Il che spesso significa anche rinunciare a Word, Excel, PowerPoint, ecc. Un argomento molto difficile contro manager e MBA, ma probabilmente settori regolamentati come i dispositivi medici, l'aviazione e le forze armate richiedono già un buon controllo di revisione.

Come altri hanno sottolineato, la maggior parte dei RCS moderni controllerà i file binari di revisione, il che è molto utile per l'archiviazione e l'identificazione delle versioni, ma qualsiasi sistema di gestione elettronica dei documenti (EDMS), ad esempio Agile, può assegnare un numero di revisione a un binario arbitrario. Noioso.


0

Sebbene non sia gratuito e difficilmente esente da bug, Altium vault fa un ottimo lavoro; Posso tornare facilmente a qualsiasi punto di commit (proprio come dovrebbe fare qualsiasi VCS) molto facilmente.

In quest'area, Altium è molto più avanti degli strumenti premium (Mentor e Cadence).

Io non lavoro per Altium ma questo strumento, nonostante i problemi attuali, rendono l'hardware completo delle versioni molto semplice.


E questa è probabilmente l'unica cosa per cui Vault fa bene ...
Matt Young,

Il modo UNIX; fai una cosa e fallo molto bene.
Peter Smith,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.