Versionskontrollsysteme für Hardware-Projekte?

59

Was sind einige der guten Versionssysteme für Hardwareprojekte? Gibt es Entsprechungen zu Google Code, CVS und SVN? Sind solche Versionskontrollsysteme für Hardwareprojekte mit PCB-Dateien, Schaltplänen (auch Firmware-Code) geeignet?

cksa361
quelle
5
Gute Frage! Würde gerne einige Repository-Beispiele in den Antworten sehen.
Tyblu
+1 Um zu erkennen, dass die HW-Projekte von der Quellcodeverwaltung profitieren könnten. Die Leute, mit denen ich zusammenarbeite, scheinen es schwer zu haben, das zu realisieren.
Nate
1
Ich verwende Mercurial seit einiger Zeit, um Leiterplatten zu versionieren, und es hat meinen Hintern ein paar Mal gerettet. Auf jeden Fall eine gute Idee.
Stephen Collings
1
Ich benutze die gEDA-Tool-Suite für EDA und verfolge Dinge in Git. Ich habe kürzlich einige Git-Hooks geschrieben, die automatisch PNG-Bilder von Schaltplänen oder Leiterplatten generieren, die geändert wurden, und diese dem Commit hinzufügen. Auf diese Weise kann ich den Bildunterschied von GitHub nutzen. PCB und gschem haben auch native Diff-Tools, die mit git zusammenarbeiten und lokal etwas Ähnliches tun. Meine Hooks sind hier: github.com/BenBergman/.git_hooks Beispielprojekt, das sie verwendet: github.com/BenBergman/uJoypad
ben

Antworten:

27

Grundsätzlich können alle VCS-Systeme problemlos mit Text- und Binärdateien umgehen. Natürlich können Sie keine binären zusammenführen.

Solange Sie keine veralteten Dinge wie CVS verwenden, sind Sie mit JEDEM System gut vertraut.

BarsMonster
quelle
3
Ich benutze CVS für alle meine Projekte (Software und Hardware, mit PCB, Firmware, Tools usw.) und habe kein Problem. Sicher, CVS ist veraltet, aber ich verfüge über eine 20-jährige Projektgeschichte und kein Konverter hat daran gearbeitet, meine Repositorys auf Mercurial oder SVN zu migrieren.
Axeman
12
Dann ist ein pragmatischer Weg einfach zu, die alten Sachen in CVS zu belassen und dann neue Sachen in das neue System zu setzen ...
Johan
CVS ist ein schönes System im Vergleich zu Microsoft Visual Source Safe, an dem ich für ein Projekt, an dem ich gerade arbeite, gebunden bin. Blech.
Kevin Vermeer
@ Kevin Vermeer Sie wissen, Sie sind auf der Skala auf der negativen Seite, wenn Sie zwei "nicht so schöne" Dinge miteinander vergleichen;)
Johan
@ KevinVermeer, ich musste sourcesafe verwenden, den Fluch der Welt der Versionskontrolle. Mein letzter Chef hat die Versionskontrolle deswegen völlig vernachlässigt.
Kortuk
17

Ich habe Subversion schon einmal mit Altium verwendet. Es hat erfolgreich funktioniert, aber zu der Zeit war es aufgrund des Fehlens eines Diff-Tools weniger nützlich als die Versionskontrolle mit Code. Ich denke immer noch, es hat sich gelohnt, auch ohne Diff-Fähigkeit.

Für Firmware sind Subversion oder Git beide großartig. Wenn Sie Git noch nicht benutzt haben, probieren Sie zuerst Subversion aus (auch wenn es später schwieriger wird, Git zu lernen).

Altium hat kürzlich ein Diff-Tool für Schaltpläne und Leiterplatten eingeführt. Daher erwarte ich, dass Subversion jetzt großartig ist und den üblichen Wahnsinn moduliert, den EDA-Anbieter in ihre Produkte einbauen können.

Ich wollte das mit dem neuen Diff-Tool ausprobieren. Wenn ich das tue, werde ich versuchen, mich daran zu erinnern, hier als Beispiel einen Link zum Repo zu posten.

Aktualisieren

Ich habe es ausprobiert und muss sagen, dass ich mit dem Altium Diff-Tool ein wenig unterfordert bin. Es funktioniert, aber die Änderungen zwischen den Board-Umdrehungen sind so umfangreich, dass es zumindest für mich nicht so nützlich ist. Nachdem ich das gesehen habe, habe ich beschlossen, das Diff-Tool zu vergessen und nur Github zu verwenden. Hier ist das Repo, wenn Sie interessiert sind: https://github.com/rascalmicro/pcb

pingswept
quelle
Haben Sie die integrierte SVN-GUI (mit Altium) oder etwas Externes verwendet?
Nick T
Das neueste Altium mit SVN ist großartig, obwohl ich hinzufügen werde, dass PCB / Schaltplan-Revisionen nicht annähernd so kritisch sind wie sie im Code sind. Wenn Sie mit mehr als 3-4 maximalen Revisionen von Schaltplänen / Leiterplatten-Releases zu tun haben, ist dies wahrscheinlich der Fall, wenn in der Entwurfs- oder Anforderungsphase ein großer Fehler aufgetreten ist.
Mark
@Mark: Sprechen Sie über die Beta von Release 10 oder Summer 09?
Nick T
2
Wenn die Änderungen zwischen den Board-Umdrehungen so umfangreich sind, dass sie nicht sinnvoll sind, legen Sie nicht oft genug fest. Früh begehen, oft begehen! Verwenden Sie Tags, um die Drehzahl des Boards zu verfolgen.
Kevin Vermeer
3
Ich benutze SVN und es lohnt sich auf jeden Fall. Mein System ist folgendes: Ich drücke den Speichern-Knopf, ich sollte wahrscheinlich einen Commit machen. Ich verfolge die Änderungen, indem ich die Commit-Meldungen wie "Teil X zur Bibliothek hinzugefügt" oder "Test-Pads zu I2C- und SPI-Bussen hinzugefügt" lese. Versionen, die zur Herstellung gesendet werden, sind völlig anders. Verwenden svn cp trunk/ tags/releaseX/Sie diese Option, um eine Momentaufnahme der Version zu erstellen. Sie können dann releaseX / file und releaseY / file unterscheiden, wenn Sie Änderungen zwischen Releases anzeigen möchten, oder Sie können die Festschreibungsprotokolle durchsuchen und einzelne Änderungen anzeigen. Niederlassungen tragen zur Modularisierung der Commit-Flut bei.
Kevin Vermeer
10

Ich benutze VisualSVN Server + TortoiseSVN Client, und es funktioniert einwandfrei

vicatcu
quelle
7

Ich verwende Google Code, um Super OSD zu hosten , ein Elektronikprojekt von mir.

Ich verwende ausschließlich die gEDA-Suite, um meine Schaltpläne und Leiterplatten zu verwalten. Nützlicherweise erzeugt gEDA Textdateien (die meistens von Menschen gelesen werden können, obwohl es schwierig ist, sie zu interpretieren) für die Schaltpläne anstelle von binären Blobs wie Eagle. Zum Beispiel ist dies ein Unterschied zwischen zwei Schaltplänen , einem ungefähr 5 Tage alten und einem, den ich gerade gepusht habe. Dies ist nicht besonders nützlich, da in Textdateien nicht viele Änderungen sichtbar sind. Es kann jedoch relative Änderungen anzeigen, dh massive Überarbeitungen im Vergleich zu Änderungen einzelner Komponenten, und Sie können auf frühere Versionen zurückgreifen.

Thomas O.
quelle
3
+1 für die Verwendung von textbasierten Formaten für Dateien. Speicherplatz ist billig und die Komprimierung von Text ist einfach. Ich wünschte, dass binäre Blobs weniger verbreitet wären.
Kevin Vermeer
4

Der Trick besteht darin, etwas zu verwenden, das mit Binärdateien gut funktioniert. Wenn Sie Binärdateien häufig verwenden und sie mit anderen teilen, kann es hilfreich sein, einen Sperrmechanismus für diese Binärdateien zu implementieren. Wir haben viele Probleme mit der Verwendung von Subversion für Binärdateien und dem Teilen mit anderen, die aufgrund fehlender Sperrsemantik und des Überschreibens / Zusammenführens von Binärdateien entstanden sind. Das Hinzufügen eines Sperrmechanismus für diese Dateien beseitigt menschliche Kommunikationsfehler bei der Bearbeitung / Änderung der Binärdatei.

Wenn Sie die Versionskontrolle noch nicht verwendet haben, empfehle ich, sich über die verschiedenen Funktionsweisen zu informieren und eine auszuwählen, die Ihren Anforderungen entspricht und mit denen Sie und / oder Ihr Team vertraut sind. Verteilte Versionskontrollsysteme bieten viele Vorteile gegenüber Client-Server-Systemen, sind jedoch in der Regel komplizierter zu handhaben.

J. Polfer
quelle
3

Warum nicht einfach Google Code oder ein SVN-Repo verwenden? Da dies ein Revisionskontrollsystem ist. Es gibt keine definierte Verwendung dafür. Es ist einfach unglaublich nützlich für mehrere Entwickler und das Überwachen von Änderungen im Quellcode.

Dean
quelle
1
Hast du das gemacht? Das Einfügen von Binärdateien in SVN oder Mercurial hat sich für mich als schrecklich herausgestellt.
Tyblu
2
Nein, habe ich nicht, aber ich habe SVN nicht nur für den Quellcode verwendet. Dinge wie PDFs und .txt-Dateien.
Dean
2
@ Tyblu was meinst du mit schrecklich? Ich habe es mit Schaltplan- und Layoutdateien gemacht und es hat mit Subversion großartig funktioniert.
Kellenjb
Ich kann mit Mercurial keine Änderungen an EAGLE-Dateien verfolgen. Es sieht so aus, als wäre die gesamte Datei anders. Haben Sie ein Repository, in das ich einen Blick werfen kann?
Tyblu
5
@tyblu das ist, warum Sie Kommentare hinzufügen, wenn Sie Dateien einchecken :)
vicatcu
3

Ich habe Subversion schon einmal mit Altium verwendet.

Ich verwende SVN mit Altium-Integration für die schematische Erfassung: Es funktioniert gut. Ich muss sagen, dass der Diff-Viewer besser ist als nichts zu haben, weil meine SchDoc-Dateien binär sind, dh anders nicht zu vergleichen! Ich verwende den in Altium Designer integrierten SVN-Client problemlos parallel zu TortoiseSVN. Der Client von Altium ist in Bezug auf die SVN-Funktionen etwas eingeschränkt. Ich mache meine "Tags" mit Tortoise.

Meine Meinung basiert auf Altium Designer 10 Build 27009 und Version 13.1 Build 27559.

Nur 1
quelle
2

svn, hg und git funktionieren alle einwandfrei.

Oldtimer
quelle
1

Kein echtes Versionskontrollsystem, aber Dropbox verwaltet auch die Überarbeitung von Dateien und macht sie für verschiedene Benutzer auf verschiedenen Betriebssystemen verfügbar. - Versionskontrollsystem für arme Männer;)

powtac
quelle
2
Als jemand, der schon einmal mit Teams gearbeitet hat: Bitte mach das nicht. Dropbox ist kein Versionskontrollsystem für Arme . Es ist ein Dateifreigabe- / Archivierungssystem. Sie müssen git nicht in vollem Umfang nutzen, damit es wirklich nützlicher ist! Dropbox macht all die Dinge falsch, die sogar CVS richtig gemacht hat (wie man mit neueren Revisionen umgeht, wie man Änderungen austauscht, wie man bestimmte Revisionen markiert), es ist wirklich kein Versionskontrollsystem .
Marcus Müller
1

Ich war am vergangenen Wochenende auf der Maker Faire in San Mateo und habe ein paar Vertreter einer neuen (für mich) Firma namens Up-Verter getroffen . Sie erstellen im Grunde genommen ein elektrisches CAD-Tool, das in der "Cloud" (dh in Ihrem Browser) ausgeführt wird und konzeptionell auf der Zusammenarbeit basiert. Daher sollten sie sich mit Merge / Diff und den üblichen Versionssachen befassen.

Ich habe es noch nicht ausprobiert und es sieht immer noch ein bisschen grün aus (glaube nicht, dass man das PCB-Layout tatsächlich noch machen kann, nur Schaltpläne), aber es ist irgendwie faszinierend. Sie behaupteten, sie könnten Eagle-Dateien importieren, was ein Plus ist.

Ich habe auch mit den Eagle-Vertretern im Element 14-Zelt gesprochen, und sie gaben an, dass sie auf ein XML-Format umsteigen, was ein großer Schritt ist, um die Versionierung von Schaltplänen und Layouts plausibler zu machen ... alles interessante Fortschritte auf diesem Gebiet !

vicatcu
quelle
0

Das ist in der Tat eine sehr gute Frage. Da FPGAs in die Kategorie "Hardware" fallen, könnte Sie eine versionskontrollfreundliche Projektstruktur interessieren, die ich für FPGA-Projekte vorschlage:

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

Ich denke, die Ideen und Konzepte könnten leicht auf andere Hardwareprojekte und allgemein angewendet werden. (Kommentare zu diesem Vorschlag sind übrigens sehr willkommen.)

Saar Drimer
quelle
2
Der Link funktioniert nicht mehr.
Tyblu
0

Vermeiden Sie Schwachsinn. Große Repositories werden nicht gut verarbeitet. Und Ihre Repositories werden groß, es sei denn, Sie

  1. Habe binäre Schaltplandateien, die sich nur etwas ändern, wenn sie sich ändern
  2. Aktivieren Sie Binärdateien als Text behandeln.
Brian Carlton
quelle
3
Nun ... Sie sollten viele kleine Repos haben, ein Repo pro Projekt.
Johan
1
@Johan - ...... Ja .... Viel Glück mit diesem Wartungsalptraum. Jedenfalls habe ich 1 Repo pro Client (ungefähr 4 Repositories, jetzt) ​​mit vielen Unterprojekten, und es funktioniert ziemlich gut. Zumindest SVN scheint in der Lage zu sein, mehr als 5 GB Binärdaten problemlos zu verarbeiten.
Connor Wolf
1
@ConnorWolf Mich würde interessieren, wie du das machst. Wir machen ein Git-Repository pro Projekt und hatten keine Probleme. Kein einziges Repository pro Projekt zu haben, klingt für mich nach einem Wartungs-Albtraum.
Matt Young
1
Zumindest SVN (wahrscheinlich auch Git) scheint Binär-Diffs zu speichern, statt vollständige Kopien einer Datei zu erstellen, sodass es beeindruckend platzsparend ist.
Connor Wolf
1
@ConnorWolf re: Wartung Alptraum: 8 Jahre später: Git-Submodule sind wahrscheinlich das, was Sie hier wollen. Dies ist besonders dann sinnvoll, wenn Sie z. B. Standardwerkzeuge für mehrere Projekte oder Kunden verwenden.
Marcus Müller
0

Ich habe mehrere Mercurial (HG) -Repos verwendet (eines pro Projekt), aber wie die meisten Versionskontrollsysteme feststellen werden, werden die Repos immer größer.

Nate
quelle
0

Du solltest es mit Boar versuchen . Es wurde von Grund auf für die Verarbeitung großer Dateien und Repositorys entwickelt. 100 GB oder mehr Binärdaten sind kein Problem.

Mats Ekberg
quelle
0

Ich möchte nur einen Link zu HgInit hinzufügen, einer hervorragenden Einführung in Mercurial, wenn Sie sich für diesen Weg entscheiden. Persönlich benutze ich Git, aber sie sind sehr ähnlich in Bezug auf die Architektur (beide sind verteilte Versionskontrollsysteme). Aufgrund ihrer Verteilung eignen sie sich hervorragend für die Arbeit in gut verteilten Teams. :)

http://hginit.com/

Bernhard Hofmann
quelle
Während Mercurial ein gutes Quellcodeverwaltungssystem für "reine" Softwareprojekte ist, gehen viele seiner Vorteile bei Projekten verloren, die sich mit im Wesentlichen rein binären Dateien befassen, da es nicht in der Lage ist, Dinge sinnvoll zusammenzuführen. Die Lektionen von HgInit machen keinen Sinn, es sei denn, Sie machen nur Software.
Whatsisname
0

Dies lohnt sich für alle ASCII-Beschreibungen von Hardware zu überlegen. Sobald eine vom Menschen lesbare Beschreibung für die Hardware übernommen wurde, funktioniert jedes moderne Versionskontrollsystem (RCS) ziemlich gut. Schaltungslayouts werden in der Regel vollständig von Gerber-Dateien beschrieben, UML beschreibt andere Teile, bei denen es sich um vollständige ASCII-Beschreibungen handelt. Für Schaltpläne, mechanisches Layout usw. gibt es weniger Standard-ASCII-Formate (z. B. KiCAD).

Adoption ist eher ein praktisches Problem, es erfordert eine anerkannte Anforderung für eine gute Revisionskontrolle, einschließlich eines aussagekräftigen Unterschieds. Was auch oft bedeutet, auf Word, Excel, PowerPoint usw. zu verzichten. Ein sehr schwieriges Argument gegen Manager und MBAs, aber wohl regulierte Branchen wie Medizinprodukte, Luftfahrt und Militär erfordern bereits eine gute Revisionskontrolle.

Wie bereits erwähnt, können die meisten modernen RCS-Versionen Binärdateien überarbeiten, was für die Archivierung und Identifizierung von Versionen sehr nützlich ist. Jedes elektronische Dokumentenverwaltungssystem (EDMS), z. B. Agile, kann jedoch einer beliebigen Binärdatei eine Überarbeitungsnummer zuweisen. Langweilig.

Sasguy
quelle
0

Obwohl es nicht kostenlos und kaum fehlerfrei ist, leistet Altium Vault hervorragende Arbeit. Ich kann sehr einfach zu jedem Festschreibungspunkt zurückkehren (so wie es jedes VCS tun sollte).

In diesem Bereich ist Altium den Premium-Tools (Mentor und Cadence) weit voraus.

Ich arbeite nicht für Altium, aber dieses Tool macht die vollständige Hardwareversionierung trotz der aktuellen Probleme sehr einfach.

Peter Smith
quelle
Und das ist wahrscheinlich das Einzige, wofür der Tresor gut ist ...
Matt Young
Der UNIX-Weg; mache eine Sache und mache es sehr gut.
Peter Smith