Systèmes de contrôle de version pour les projets de matériel?


59

Quels sont certains des bons systèmes de gestion de versions pour les projets matériels? Existe-t-il des équivalents de Google Code, CVS et SVN? Ces systèmes de contrôle de version sont-ils adaptés aux projets matériels impliquant des fichiers, des schémas, des cartes à circuits imprimés .. (même le code du microprogramme)?


5
Bonne question! J'aimerais voir des exemples de référentiels inclus dans les réponses.
Tyblu

+1 Pour reconnaître que les projets matériels peuvent tirer parti du contrôle de source. Les gars avec qui je travaille semblent avoir du mal à réaliser cela.
Nate

1
Cela fait un moment que j'utilise Mercurial pour la version de circuits imprimés, et cela m'a sauvé la peau plusieurs fois. C'est vraiment une bonne idée.
Stephen Collings

1
J'utilise la suite d'outils gEDA pour EDA et je fais le suivi des choses dans git. J'ai récemment écrit quelques crochets git qui génèrent automatiquement des images .png de tous les schémas ou PCB modifiés et les ajoute au commit. Cela me permet de tirer parti des différences d’image de GitHub. PCB et gschem ont aussi des outils de diff natifs qui fonctionnent avec git et qui font quelque chose de similaire au niveau local. Mes crochets sont ici: github.com/BenBergman/.git_hooks Exemple de projet les utilisant: github.com/BenBergman/uJoypad
ben

Réponses:


27

Fondamentalement, tous les systèmes VCS peuvent gérer les fichiers texte et binaires avec élégance. Bien sûr, vous ne pouvez pas fusionner des binaires.

Donc, tant que vous n'utilisez pas d'éléments obsolètes comme CVS, vous serez bon avec TOUS les systèmes.


3
J'utilise CVS pour tous mes projets (logiciel et matériel, avec PCB, micrologiciels, outils, etc.) et je n'ai pas de problème. Certes, CVS est obsolète, mais j’ai 20 ans d’historique de projet et aucun convertisseur n’a travaillé pour faire migrer mes référentiels vers Mercurial, ou SVN.
Axeman

12
Ensuite, une façon pragmatique est simplement de laisser les anciens éléments dans CVS, puis de mettre de nouveaux éléments dans le nouveau système ...
Johan

CVS est un système magnifique comparé à l'horreur Microsoft Visual Source Safe, dans laquelle je suis bloqué pour un projet sur lequel je travaille en ce moment. Blech.
Kevin Vermeer

@ Kevin Vermeer Vous savez que vous êtes du côté négatif lorsque vous comparez deux choses "pas très belles" l'une avec l'autre;)
Johan

@ KevinVermeer, je devais utiliser Sourcesafe, le fléau du monde du contrôle de version. Mon dernier patron a permis une complète négligence du contrôle de version à cause de cela.
Kortuk

17

J'ai déjà utilisé Subversion avec Altium. Cela a fonctionné avec succès, mais à l’époque, l’absence d’un outil de diff le rendait moins utile que le contrôle de version ne l’est avec du code. Je pense toujours que cela en valait la peine, même sans capacité de diff.

Pour les microprogrammes, Subversion ou Git sont excellents. Si vous n'avez jamais utilisé Git auparavant, essayez d'abord Subversion (même si cela rendra plus difficile l'apprentissage de Git plus tard).

Altium a récemment introduit un outil de diff pour les schémas et les circuits imprimés. Je m'attends donc à ce que Subversion soit maintenant formidable, modulo la folie habituelle que les fournisseurs d'EDA parviennent à intégrer à leurs produits.

J'ai eu l'intention d'essayer cela avec le nouvel outil de diff; Si je le fais, je vais essayer de ne pas oublier de poster un lien vers le dépôt ici à titre d'exemple.

Mise à jour

J'ai essayé cela, et je dois dire que je suis un peu dépassé par l'outil de différenciation Altium. C'est fonctionnel, mais les changements entre les tours du conseil sont suffisamment importants pour que ce ne soit pas très utile, du moins pour moi. Ayant vu cela, j'ai décidé d'oublier l'outil diff et d'utiliser simplement Github. Voici le rapport si vous êtes intéressé: https://github.com/rascalmicro/pcb


Avez-vous utilisé l'interface graphique SVN intégrée (avec Altium) ou quelque chose d'extérieur?
Nick T

Le plus récent Altium avec SVN est excellent, bien que j'ajoute que les révisions de PCB / schématiques ne sont pas aussi critiques que dans le code. Si vous avez affaire à plus de 3 à 4 révisions maxi de versions schématiques / PCB, il est probable que vous rencontrez des problèmes de conception ou de configuration.
Marc

@Mark: Parlez-vous de la version bêta de la version 10 ou de l'été 09?
Nick T

2
Si les changements entre les tours du conseil sont suffisamment importants pour que ce ne soit pas utile, vous ne vous engagez pas assez souvent. Engagez-vous tôt, engagez-vous souvent! Utilisez des balises pour suivre les tours du conseil.
Kevin Vermeer

3
J'utilise SVN, et cela en vaut vraiment la peine. Mon système est le suivant: je clique sur le bouton de sauvegarde, je devrais probablement effectuer un commit. Je suis les modifications en lisant les messages de validation tels que "Ajout de la partie X à la bibliothèque" ou "Ajout de pads de test aux bus I2C et SPI". Les versions envoyées pour la fabrication sont totalement différentes, elles permettent svn cp trunk/ tags/releaseX/de prendre un instantané de la version. Vous pouvez ensuite différencier releaseX / file et releaseY / file si vous souhaitez voir les modifications entre les éditions, ou parcourir les journaux de validation et visualiser les modifications individuelles. Les branches aident à modulariser le flot de commits.
Kevin Vermeer

10

J'utilise le client VisualSVN Server + TortoiseSVN, et cela fonctionne très bien


7

J'utilise Google Code pour héberger Super OSD , l'un de mes projets électroniques.

J'utilise exclusivement la suite gEDA pour gérer mes schémas et mes PCB. Utilement, gEDA produit des fichiers texte (pour la plupart lisibles par l'homme, bien qu'il soit difficile de les interpréter) pour les schémas, au lieu de blobs binaires, comme Eagle. Par exemple, il s’agit d’une différence entre deux schémas , l’un vieux de 5 jours environ et l’autre que je viens de pousser. Ce n'est pas particulièrement utile car vous ne pouvez pas voir beaucoup de changements dans les fichiers texte, mais cela peut montrer un changement relatif - c'est-à-dire une retouche importante, par rapport à un changement de composant unique - et vous permet de revenir aux versions précédentes.


3
+1 pour l'utilisation de formats texte pour les fichiers. L'espace disque est bon marché et la compression du texte est facile. Je souhaite que les blobs binaires étaient moins communs.
Kevin Vermeer

4

L'astuce consiste à utiliser quelque chose qui fonctionne bien avec les fichiers binaires. Si vous utilisez beaucoup les fichiers binaires et que vous les partagez avec d'autres personnes, il peut être intéressant de mettre en œuvre un mécanisme de verrouillage sur ces fichiers binaires. Nous avons rencontré de nombreux problèmes liés à l'utilisation de Subversion avec des fichiers binaires et au partage avec d'autres fichiers en raison d'un manque de sémantique de verrouillage et de l'écriture / fusion simultanée de fichiers binaires. L'ajout d'un mécanisme de verrouillage sur ces fichiers supprime les erreurs humaines dans la communication sur les personnes qui ont édité / modifié le fichier binaire.

Si vous n'avez jamais utilisé le contrôle de version, je vous recommande de lire plus en détail leur mode de fonctionnement et de choisir celui qui répond le mieux à vos besoins et à celui de votre équipe. Les systèmes de contrôle de version distribués offrent de nombreux avantages par rapport aux systèmes client-serveur, mais ont tendance à être plus compliqués à utiliser.


3

Pourquoi ne pas utiliser simplement Google Code ou un dépôt SVN? Comme il s’agit d’un système de contrôle de révision. Il n'y a pas d'utilisation définie pour cela. Il est simplement incroyablement utile pour plusieurs développeurs et pour surveiller les modifications du code source.


1
Avez-vous fait ça? L'installation de fichiers binaires dans SVN ou Mercurial s'est révélée extrêmement difficile pour moi.
Tyblu

2
Non, je n'ai pas mais j'ai utilisé SVN pour non seulement le code source. Des choses comme les fichiers PDF et .txt.
Dean le

2
@Tyblu Qu'entendez-vous par terrible? Je l'ai fait avec des fichiers schématiques et de mise en page et cela a très bien fonctionné pour moi avec Subversion.
Kellenjb

Je ne peux pas suivre les modifications apportées aux fichiers EAGLE avec Mercurial. Il semble que le fichier entier est différent. Avez-vous un référentiel, je peux jeter un coup d'oeil?
Tyblu

5
@tyblu c'est pourquoi vous ajoutez des commentaires lorsque vous
archivez des

3

J'ai déjà utilisé Subversion avec Altium.

J'utilise SVN avec l'intégration Altium pour la capture schématique: cela fonctionne bien. Je dois dire que le visionneur de diff est préférable à ne rien avoir, car mes fichiers SchDoc sont binaires, c'est-à-dire impossible de comparer autrement! J'utilise le client SVN intégré à Altium Designer en parallèle de TortoiseSVN sans aucun problème. Le client d'Altium est un peu limité en termes de fonctionnalités SVN. Je fais mes "tags" avec Tortoise.

Mon avis est basé sur Altium Designer 10 build 27009 et la version 13.1 build 27559.



1

Pas un vrai système de contrôle de version, mais Dropbox gère également la révision des fichiers et les rend disponibles pour différentes personnes sur différents systèmes d'exploitation. - système de contrôle de version de l’homme pauvre;)


2
comme quelqu'un qui ont travaillé avec des équipes avant: S'il vous plaît ne le faites pas. Dropbox n'est pas le système de contrôle de version d' un homme pauvre . C'est un système de partage de fichiers / archivage. Vous n'avez pas besoin d'utiliser git au maximum pour qu'il soit plus utile, vraiment! Dropbox fait tout ce qui est mal que même CVS a bien fait (comment traiter les nouvelles révisions, comment échanger des modifications, comment marquer des révisions spécifiques), ce n'est vraiment pas un système de contrôle de version .
Marcus Müller

1

J'étais au Maker Faire à San Mateo le week-end dernier et j'ai rencontré des représentants d'une nouvelle société (pour moi) appelée Up-Verter . Ils construisent essentiellement un outil de CAO électrique qui s'exécute dans "le nuage" (c'est-à-dire dans votre navigateur) et qui repose sur une conception conceptuelle basée sur la collaboration.

Je ne l'ai pas encore essayée, et ça a toujours l'air un peu vert (je ne pense pas que vous puissiez réellement faire la mise en page de circuits imprimés, juste des schémas), mais c'est un peu intriguant. Ils ont affirmé qu'ils pourraient importer des fichiers Eagle, ce qui est un avantage.

J'ai également parlé aux représentants Eagle de la tente Element 14, qui ont indiqué qu'ils passaient au format XML, ce qui représente un grand pas en avant pour rendre la version des schémas et de la mise en page plus plausibles ... toutes les avancées intéressantes à cet égard. !



0

C'est en effet une très bonne question. Étant donné que les FPGA entrent dans la catégorie du "matériel", une structure de projet adaptée au contrôle de version que je propose pour les projets FPGA pourrait vous intéresser:

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

Je pense que les idées et les concepts pourraient facilement s’appliquer à d’autres projets matériels, et en général. (Les commentaires sur cette proposition sont les bienvenus, au fait.)


2
Le lien ne fonctionne plus.
Tyblu

0

Évite les git. Il ne gère pas bien les grands référentiels. Et vos dépôts deviendront grands à moins que vous

  1. Avoir des fichiers schématiques binaires qui changent un peu quand ils changent
  2. Activer traiter les fichiers binaires en tant que texte.

3
Eh bien ... Vous devriez avoir beaucoup de petites pensions, une pension par projet.
Johan

1
@Johan - ...... Ouais .... Bonne chance pour ce cauchemar de maintenance. Quoi qu'il en soit, j'ai 1 dépôt par client (environ 4, référentiels, maintenant), avec de nombreux sous-projets, et cela fonctionne plutôt bien. SVN, au moins, semble être capable de gérer plus de 5 Go de données binaires sans trop de problèmes.
Connor Wolf

1
@ConnorWolf Je serais intéressé de savoir comment vous faites cela. Nous faisons un dépôt Git par projet et nous n’avons rencontré aucun problème. Ne pas avoir un seul référentiel par projet ressemble à un cauchemar de maintenance.
Matt Young

1
SVN, du moins (probablement aussi avec Git) semble stocker des diffs binaires, plutôt que des copies complètes d'un fichier, ce qui en fait un espace impressionnant.
Connor Wolf

1
@ConnorWolf re: cauchemar de maintenance: 8 ans plus tard: les sous-modules git sont probablement ce que vous voulez ici. Cela a du sens, surtout si vous partagez, par exemple, des outils standard entre plusieurs projets ou clients.
Marcus Müller

0

J'ai utilisé plusieurs dépôts Mercurial (HG) (un par projet) pour cela, mais comme la plupart des systèmes de contrôle de version le constateront, les dépôts deviennent de plus en plus grands.


0

Tu devrais essayer Boar . Il a été conçu pour gérer des fichiers et des référentiels énormes. 100 Go ou plus de données binaires ne posent aucun problème.


0

J'aimerais simplement ajouter un lien vers HgInit, une excellente introduction à Mercurial si vous décidez de suivre cette voie. Personnellement, j'utilise Git, mais leur architecture est très similaire (les deux sont des systèmes de contrôle de version distribués). Leur nature distribuée les rend parfaits pour bien travailler dans des équipes "distribuées". :)

http://hginit.com/


Bien que Mercurial soit un bon système de contrôle des sources pour les projets logiciels «purs», de nombreux avantages sont perdus pour les projets qui traitent essentiellement de fichiers binaires, car ils ne parviennent pas à fusionner les éléments de manière sensée. Les leçons de HgInit n'auront aucun sens si vous ne faites que du logiciel.
Whatsisname


0

Cela vaut la peine d’être pris en compte pour toute description matérielle ascii. Une fois qu'une description lisible par un humain du matériel est adoptée, tout système de contrôle de révision (RCS) moderne fonctionne plutôt bien. Les fichiers Gerber décrivent en détail les schémas de circuits, UML décrit d’autres parties, qui sont des descriptions entièrement ascii. Il existe moins de formats ascii standard pour les schémas, la présentation mécanique, etc. (KiCAD par exemple).

L’adoption est plus une question pratique, elle nécessite une exigence reconnue pour un bon contrôle de la révision, y compris une différence significative. Ce qui signifie également souvent renoncer à Word, Excel, PowerPoint, etc. Un argument très difficile contre les gestionnaires et les MBA, mais des industries réglementées telles que les dispositifs médicaux, l'aviation et l'armée nécessitent déjà un bon contrôle de la révision.

Comme d'autres l'ont souligné, la plupart des RCS modernes contrôlent les fichiers binaires de contrôle de révision, ce qui est très utile pour l'archivage et l'identification des versions - mais tout système de gestion de documents électroniques (EDMS), Agile par exemple, peut affecter un numéro de révision à un fichier binaire arbitraire. Ennuyeuse.


0

Même s’il n’est pas gratuit et qu’il n’est pas exempt de bogues, Altium vault fait un travail remarquable. Je peux facilement revenir à n'importe quel point de validation (comme tout VCS devrait le faire).

Dans ce domaine, Altium est bien en avance sur les outils premium (Mentor et Cadence).

Je ne travaille pas pour Altium mais cet outil, malgré les problèmes actuels, simplifie énormément la gestion des versions de matériel.


Et c'est probablement la seule chose pour laquelle le coffre-fort est bon ...
Matt Young

La manière UNIX; faites une chose et faites-le très bien.
Peter Smith
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.