¿Sistemas de control de versiones para proyectos de hardware?

59

¿Cuáles son algunos de los buenos sistemas de versiones para proyectos de hardware? ¿Hay equivalentes de Google Code, CVS y SVN? ¿Son adecuados estos sistemas de control de versiones para proyectos de hardware que involucran archivos PCB, esquemas ... (incluso código de firmware)?

cksa361
fuente
55
Gran pregunta! Me encantaría ver algunos ejemplos de repositorio incluidos en las respuestas.
tyblu
+1 Por reconocer que los proyectos HW podrían beneficiarse del control de fuente. Los chicos con los que trabajo parecen tener dificultades para darse cuenta de esto.
Nate
1
He estado usando Mercurial para versionar placas de circuito por un tiempo, y me ha salvado el trasero un par de veces. Definitivamente una buena idea.
Stephen Collings
1
Uso el conjunto de herramientas gEDA para EDA y hago un seguimiento de las cosas en git. Recientemente escribí algunos ganchos de git que generan automáticamente imágenes .png de cualquier esquema o PCB que se hayan modificado y los agregue al commit. Esto me permite aprovechar la diferencia de imagen de GitHub. PCB y gschem también tienen herramientas diff nativas que funcionan con git que hacen algo similar a nivel local. Mis ganchos están aquí: github.com/BenBergman/.git_hooks Ejemplo de proyecto que los usa: github.com/BenBergman/uJoypad
ben

Respuestas:

27

Básicamente, todos los sistemas VCS pueden manejar archivos de texto y binarios con gracia. Por supuesto, no puedes fusionar los binarios.

Por lo tanto, siempre que no esté usando cosas obsoletas como CVS, será bueno con CUALQUIER sistema.

BarsMonster
fuente
3
Utilizo CVS para todos mis proyectos (software y hardware, con PCB, firmware, herramientas, etc.) y no tengo ningún problema. Claro, CVS está obsoleto, pero tengo 20 años de historia del proyecto y ningún convertidor funcionó para migrar mis repositorios a Mercurial o SVN.
Axeman
12
Entonces, una forma pragmática es simplemente dejar las cosas viejas en CVS, y luego poner cosas nuevas en el nuevo sistema ...
Johan
CVS es un sistema hermoso en comparación con el horror que es Microsoft Visual Source Safe, en el que estoy bloqueado para un proyecto en el que estoy trabajando en este momento. Blech
Kevin Vermeer
@Kevin Vermeer Sabes que estás en el lado negativo de la escala cuando estás comparando dos cosas "no tan buenas" entre sí;)
Johan
@KevinVermeer, tuve que usar sourcesafe, la ruina del mundo del control de versiones. Mi último jefe permitió el descuido total del control de versiones por eso.
Kortuk
17

He usado Subversion con Altium antes. Funcionó con éxito, pero en ese momento la falta de una herramienta diff lo hacía menos útil que el control de versiones con código. Todavía creo que valió la pena hacerlo, incluso sin capacidad de diferenciación.

Para firmware, Subversion o Git son geniales. Si no ha usado Git antes, intente Subversion primero (aunque hará que aprender Git más tarde sea más difícil).

Altium ha presentado recientemente una herramienta diff para esquemas y PCB, por lo que espero que Subversion ahora sea genial, modulando la locura habitual que los vendedores de EDA logran incorporar a sus productos.

He tenido la intención de probar esto con la nueva herramienta diff; si lo hago, intentaré recordar publicar un enlace al repositorio aquí como ejemplo.

Actualizar

Probé esto, y tengo que decir que estoy un poco decepcionado con la herramienta Altium diff. Es funcional, pero los cambios entre las revoluciones de la placa son lo suficientemente importantes como para que no sea tan útil, al menos para mí. Después de ver esto, decidí olvidarme de la herramienta diff y simplemente usar Github. Aquí está el repositorio si está interesado: https://github.com/rascalmicro/pcb

pingswept
fuente
¿Utilizaste la GUI SVN integrada (con Altium) o algo externo?
Nick T
El Altium más nuevo con SVN es excelente, aunque agregaré que las revisiones de PCB / esquemáticas no son tan críticas como en el código. Si está lidiando con más de 3-4 revisiones esquemáticas máximas de versión de PCB / PCB, probablemente sea algo muy incorrecto en las fases de diseño o requisitos.
Marque el
@ Mark: ¿Estás hablando de la versión beta 10 o del verano 09?
Nick T
2
Si los cambios entre las revoluciones del tablero son lo suficientemente importantes como para que no sea útil, no se compromete con la frecuencia suficiente. ¡Comprométase temprano, comprométase a menudo! Use etiquetas para rastrear las revoluciones del tablero.
Kevin Vermeer
3
Estoy usando SVN, y definitivamente vale la pena. Mi sistema es este: presioné el botón Guardar, probablemente debería hacer una confirmación. Sigo los cambios leyendo los mensajes de confirmación como "Se agregó la parte X a la biblioteca" o "Se agregaron almohadillas de prueba a los buses I2C y SPI". Los lanzamientos enviados para la fabricación son completamente diferentes, utilícelos svn cp trunk/ tags/releaseX/para tomar una instantánea del lanzamiento. Luego puede diferenciar releaseX / file y releaseY / file si desea ver los cambios entre lanzamientos, o puede examinar los registros de confirmación y ver los cambios individuales. Las ramas ayudan a modularizar la avalancha de commits.
Kevin Vermeer
10

Uso el cliente VisualSVN Server + TortoiseSVN, y funciona bien

vicatcu
fuente
7

Utilizo Google Code para alojar Super OSD , un proyecto electrónico mío.

Utilizo exclusivamente la suite gEDA para administrar mis esquemas y PCB. De manera útil, gEDA produce archivos de texto (que en su mayoría son legibles por humanos, aunque es difícil de interpretar) para los esquemas, en lugar de blobs binarios, como Eagle. Por ejemplo, esta es una diferencia entre dos esquemas , uno de aproximadamente 5 días y uno que acabo de presionar. No es particularmente útil ya que en realidad no puede ver muchos cambios en los archivos de texto, pero puede mostrar un cambio relativo, es decir, un trabajo masivo versus un cambio de un solo componente, y le permite volver a versiones anteriores.

Thomas O
fuente
3
+1 para el uso de formatos basados ​​en texto para archivos. El espacio en disco es económico y la compresión de texto es fácil. Desearía que las gotas binarias fueran menos comunes.
Kevin Vermeer
4

El truco es usar algo que funcione bien con los binarios. Si usa mucho los archivos binarios y comparte con otros, podría ser beneficioso implementar un mecanismo de bloqueo en esos archivos binarios. Nos hemos encontrado con muchos problemas al usar Subversion con archivos binarios y compartirlos con otros que surgieron debido a la falta de semántica de bloqueo y sobreescritura / fusión de archivos binarios juntos. Agregar un mecanismo de bloqueo en esos archivos elimina el error humano en la comunicación sobre quién editó / cambió el archivo binario.

Si no ha usado el control de versiones antes, le recomiendo leer sobre las diferentes formas en que funcionan y seleccionar uno para satisfacer sus necesidades con las que usted y / o su equipo puedan sentirse cómodos. Los sistemas de control de versiones distribuidos proporcionan muchos beneficios sobre los sistemas cliente-servidor, pero tienden a ser más complicados de trabajar.

J. Polfer
fuente
3

¿Por qué no usar solo Google Code o un repositorio SVN? Como este es un sistema de control de revisión. No hay un uso definido para ello. Es increíblemente útil para múltiples desarrolladores y para monitorear cambios en el código fuente.

Decano
fuente
1
¿Has hecho esto? Poner binarios en SVN o Mercurial ha resultado terriblemente para mí.
tyblu
2
No, no lo he hecho, pero he usado SVN no solo para el código fuente. Cosas como archivos PDF y archivos .txt.
Dean
2
@Tyblu, ¿qué quieres decir con terrible? Lo hice con archivos esquemáticos y de diseño y me funcionó muy bien con subversion.
Kellenjb
No puedo seguir los cambios en los archivos EAGLE con Mercurial. Parece que todo el archivo es diferente. ¿Tienes un repositorio al que pueda echar un vistazo?
tyblu
55
@tyblu por eso agrega comentarios cuando registra los archivos :)
vicatcu
3

He usado Subversion con Altium antes.

Utilizo SVN con la integración de Altium para la captura esquemática: funciona bien. Debo decir que el visor de diferencias es mejor que no tener nada, porque mis archivos SchDoc son binarios, es decir, imposible de comparar. Utilizo el cliente SVN integrado en Altium Designer en paralelo con TortoiseSVN sin ningún problema. El cliente de Altium es un poco limitado en términos de características SVN. Hago mis "etiquetas" con Tortoise.

Mi opinión se basa en Altium Designer 10, compilación 27009, y en la versión 13.1, compilación 27559.

Solo 1
fuente
2

svn, hg y git funcionan bien.

viejo contador de tiempo
fuente
1

No es un sistema de control de versiones real, pero Dropbox maneja también la revisión de archivos y los pone a disposición de diferentes personas en diferentes sistemas operativos. - sistema de control de versión pobre del hombre;)

Powtac
fuente
2
como alguien que ha trabajado con equipos antes: por favor no hagas esto. Dropbox no es el sistema de control de versiones de un hombre pobre . Es un archivo compartido / sistema de archivo. ¡No tienes que usar git en toda su extensión para que sea más útil, de verdad! Dropbox hace todas las cosas mal que incluso CVS hizo bien (cómo lidiar con las revisiones más nuevas, cómo intercambiar cambios, cómo marcar revisiones específicas), realmente no es un sistema de control de versiones .
Marcus Müller
1

Estuve en el Maker Faire en San Mateo el pasado fin de semana y conocí a algunos representantes de una nueva (para mí) compañía llamada Up-Verter . Básicamente, están construyendo una herramienta CAD eléctrica que se ejecuta en "la nube" (es decir, en su navegador) y se construye conceptualmente en torno a la colaboración, por lo que debe tratar con merge / diff y las cosas habituales de versiones.

Todavía no lo he probado, y todavía se ve un poco verde (no creo que puedas hacer un diseño de pcb todavía, solo esquemas), pero es algo intrigante. Afirmaron que podían importar archivos Eagle, lo cual es una ventaja.

También hablé con los representantes de Eagle en la carpa Element 14, e indicaron que se están moviendo a un formato XML, lo que es un gran paso para hacer que las versiones de esquemas y diseños sean más plausibles ... todos los avances interesantes en este frente !

vicatcu
fuente
0

Esta es de hecho una muy buena pregunta. Dado que los FPGA entran en la categoría de "hardware", es posible que le interese una estructura de proyecto amigable con el control de versiones que propongo para proyectos FPGA:

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

Creo que las ideas y conceptos podrían aplicarse fácilmente a otros proyectos de hardware, y en general. (Los comentarios sobre esta propuesta son bienvenidos, por cierto).

Saar Drimer
fuente
2
El enlace ya no funciona.
tyblu
0

Evita git. No maneja bien los repositorios grandes. Y sus repositorios crecerán a menos que usted

  1. Tener archivos esquemáticos binarios que solo cambian un poco cuando cambian
  2. Active tratar binarios como texto.
Brian Carlton
fuente
3
Bueno ... Deberías tener muchos repositorios pequeños, un repositorio por proyecto.
Johan
1
@Johan - ...... Sí .... Buena suerte con esa pesadilla de mantenimiento. De todos modos, tengo 1 repositorio por cliente (aproximadamente 4, repositorios, ahora), con muchos subproyectos, y funciona bastante bien. SVN, al menos, parece ser capaz de manejar más de 5 GB de datos binarios sin demasiados problemas.
Connor Wolf
1
@ConnorWolf Me interesaría saber cómo lo estás haciendo. Hacemos un repositorio de Git por proyecto y no hemos tenido problemas. No tener un solo repositorio por proyecto me parece una pesadilla de mantenimiento.
Matt Young
1
SVN, al menos (probablemente git también) parece almacenar diferencias binarias, en lugar de completar copias de un archivo, por lo que es impresionantemente eficiente en espacio.
Connor Wolf
1
@ConnorWolf re: pesadilla de mantenimiento: 8 años después: git-submodules son probablemente lo que quieres aquí. Tiene sentido especialmente si comparte, por ejemplo, herramientas estándar entre múltiples proyectos o clientes.
Marcus Müller
0

He estado utilizando múltiples repositorios Mercurial (HG) (uno por proyecto) para esto, pero como la mayoría de los sistemas de control de versiones experimentarán, los repositorios son cada vez más grandes.

Nate
fuente
0

Deberías probar Jabalí . Está diseñado desde cero para manejar grandes archivos y repositorios. 100 GB o más de datos binarios no son un problema.

Mats Ekberg
fuente
0

Solo me gustaría agregar un enlace a HgInit, una excelente introducción a Mercurial si decides seguir esa ruta. Personalmente uso Git, pero son muy similares en términos de arquitectura (ambos son sistemas de control de versiones distribuidos). La naturaleza distribuida de ellos los hace excelentes para trabajar en equipos bien "distribuidos". :)

http://hginit.com/

Bernhard Hofmann
fuente
Si bien Mercurial es un buen sistema de control de fuente para proyectos de software 'puro', muchas de sus ventajas se pierden en proyectos que tratan esencialmente con archivos puramente binarios, ya que es incapaz de fusionar las cosas con sensatez. Las lecciones de HgInit no tendrán ningún sentido a menos que solo esté haciendo software.
whatsisname
0

Vale la pena pensar en esto para cualquier descripción ascii de hardware. Una vez que se adopta una descripción legible por humanos para el hardware, cualquier sistema moderno de control de revisiones (RCS) funciona bastante bien. Los diseños de circuitos generalmente están completamente descritos por los archivos de Gerber, UML describe otras partes, que son descripciones completamente ascii. Existen formatos ascii menos estándar para esquemas, diseño mecánico, etc. (KiCAD por ejemplo).

La adopción es más una cuestión práctica, requiere un requisito reconocido para un buen control de revisión, incluida una diferencia significativa. Lo que a menudo también significa renunciar a Word, Excel, PowerPoint, etc. Un argumento muy difícil en contra de los gerentes y los MBA, pero las industrias reguladas como dispositivos médicos, aviación y militares ya requieren un buen control de revisión.

Como otros han señalado, la mayoría de los RCS modernos revisarán los archivos binarios de control, lo cual es muy útil para archivar e identificar versiones, pero cualquier sistema de gestión de documentos electrónicos (EDMS), Agile, por ejemplo, puede asignar un número de revisión a un binario arbitrario. Aburrido.

Sasguy
fuente
0

Aunque no es gratis, y apenas está libre de errores, Altium Vault hace un excelente trabajo; Puedo retroceder a cualquier punto de confirmación fácilmente (tal como debería hacer cualquier VCS) muy fácilmente.

En esta área, Altium está muy por delante de las herramientas premium (Mentor y Cadencia).

Yo no trabajo para Altium pero esta herramienta, a pesar de los problemas actuales, hago hardware completo de versiones muy simple.

Peter Smith
fuente
Y esa es probablemente la única cosa para la que la Bóveda es buena ...
Matt Young
El camino de UNIX; haz una cosa y hazlo muy bien.
Peter Smith