Системы контроля версий для аппаратных проектов?

59

Каковы некоторые из хороших систем управления версиями для аппаратных проектов? Есть ли эквиваленты Google Code, CVS и SVN? Подходят ли такие системы контроля версий для аппаратных проектов, включающих файлы печатных плат, схемы ... (даже код прошивки)?

cksa361
источник
5
Отличный вопрос! Хотелось бы увидеть примеры репозитория, включенные в ответы.
Тыблу
+1 За признание того, что проекты HW могут извлечь выгоду из контроля источников. Похоже, парням, с которыми я работаю, трудно это понять.
Nate
1
Я уже некоторое время использую Mercurial для создания печатных плат, и это несколько раз спасло мою задницу. Определенно хорошая идея.
Стивен Коллингс
1
Я использую набор инструментов gEDA для EDA и отслеживаю вещи в git. Недавно я написал несколько хитов git, которые автоматически генерируют .png изображения любых схем или печатных плат, которые были изменены, и добавляют их в коммит. Это позволяет мне использовать различие в изображениях GitHub. PCB и gschem также имеют встроенные инструменты сравнения, которые работают с git, которые делают нечто подобное локально. Мои хуки здесь: github.com/BenBergman/.git_hooks Пример проекта, который их использует: github.com/BenBergman/uJoypad
бен,

Ответы:

27

По сути, все системы VCS могут корректно обрабатывать текстовые и двоичные файлы. Конечно, вы не можете объединить двоичные.

Так что, пока вы не используете устаревшие вещи, такие как CVS, вы будете хорошо работать с ЛЮБОЙ системой.

BarsMonster
источник
3
Я использую CVS для всех своих проектов (программных и аппаратных, с печатной платой, прошивкой, инструментами и т. Д.), И у меня нет проблем. Конечно, CVS устарел, но у меня 20 лет истории проекта, и ни один конвертер не работал для переноса моих репозиториев в Mercurial или SVN.
Axeman
12
Тогда прагматичным способом будет просто оставить старый материал в CVS, а затем добавить новый материал в новую систему ...
Йохан
CVS - прекрасная система по сравнению с ужасом Microsoft Visual Source Safe, который я использую для проекта, над которым я сейчас работаю. Blech.
Кевин Вермеер
@Kevin Vermeer Вы знаете, что находитесь на отрицательной стороне шкалы, когда вы сравниваете две «не очень хорошие» вещи друг с другом;)
Йохан,
@KevinVermeer, мне пришлось использовать sourcesafe, проклятие мира контроля версий. Мой последний босс допустил полное игнорирование контроля версий из-за этого.
Кортук
17

Я использовал Subversion с Altium раньше. Он работал успешно, но в то время отсутствие инструмента сравнения сделало его менее полезным, чем контроль версий с кодом. Я все еще думаю, что это стоило сделать, даже без возможности сравнения.

Для прошивки отлично подходят и Subversion, или Git. Если вы раньше не использовали Git, попробуйте сначала Subversion (хотя это усложнит изучение Git позже).

Altium недавно представил инструмент diff для схем и печатных плат, поэтому я ожидаю, что Subversion теперь будет великолепна по модулю обычного безумия, которое поставщики EDA могут встроить в свои продукты.

Я хотел попробовать это с новым инструментом сравнения; если я это сделаю, я постараюсь опубликовать ссылку на репо здесь в качестве примера.

Обновить

Я попробовал это, и я должен сказать, что я немного не в восторге от инструмента сравнения Altium. Это функционально, но изменения между оборотами доски настолько существенны, что это не так полезно, по крайней мере, для меня. Увидев это, я решил забыть об инструменте сравнения и просто использовать Github. Вот репо, если вы заинтересованы: https://github.com/rascalmicro/pcb

pingswept
источник
Вы использовали встроенный SVN GUI (с Altium) или что-то внешнее?
Ник Т
Новейший Altium с SVN великолепен, хотя я добавлю, что PCB / ревизии схемы не так критичны, как в коде. Если вы имеете дело с более чем 3-4 максимальными версиями схемы / версии печатной платы, возможно, что-то очень неправильное на этапах проектирования или требований.
Марк
@Mark: Вы говорите о бета-версии Release 10 или Summer 09?
Ник Т
2
Если изменения между оборотами доски настолько существенны, что это бесполезно, вы не совершаете достаточно часто. Фиксируйте рано, совершайте часто! Используйте теги для отслеживания оборотов доски.
Кевин Вермеер
3
Я использую SVN, и это определенно стоит. Моя система такова: я нажимаю кнопку «Сохранить», я должен сделать коммит. Я следую за изменениями, читая сообщения фиксации, такие как «Добавлена ​​часть X в библиотеку» или «Добавлены тестовые площадки для шин I2C и SPI». Релизы, отправленные на изготовление, совершенно разные, используйте их svn cp trunk/ tags/releaseX/для создания снимка релиза. Затем вы можете изменить diff releaseX / file и releaseY / file, если вы хотите увидеть изменения между выпусками, или вы можете просмотреть журналы фиксации и увидеть отдельные изменения. Филиалы помогают модулировать поток коммитов.
Кевин Вермеер
10

Я использую VisualSVN Server + TortoiseSVN клиент, и он работает просто отлично

vicatcu
источник
7

Я использую Google Code для размещения Super OSD , моего электронного проекта.

Я исключительно использую пакет gEDA для управления своими схемами и печатными платами. Полезно, что gEDA создает текстовые файлы (которые в основном читаются человеком, хотя их трудно интерпретировать) для схем вместо двоичных объектов типа Eagle. Например, это разница между двумя схемами , одна из которых около 5 дней, а другая только что нажата. Это не особенно полезно, поскольку вы не можете увидеть значительных изменений в текстовых файлах, но оно может показать относительные изменения - то есть значительные изменения, по сравнению с изменениями отдельных компонентов - и это позволяет вам вернуться к предыдущим версиям.

Томас О
источник
3
+1 за использование текстовых форматов для файлов. Дисковое пространство дешево, а сжатие текста легко. Я хотел бы, чтобы двоичные двоичные объекты были менее распространенными.
Кевин Вермеер
4

Хитрость заключается в том, чтобы использовать то, что хорошо работает с двоичными файлами. Если вы часто используете двоичные файлы и делитесь ими с другими, может быть полезно реализовать механизм блокировки этих двоичных файлов. Мы столкнулись с множеством проблем, связанных с использованием Subversion с двоичными файлами и совместным использованием с другими, возникшими из-за отсутствия семантики блокировки и перезаписи / объединения двоичных файлов. Добавление механизма блокировки для этих файлов устраняет человеческую ошибку при общении с тем, кто редактировал / изменял двоичный файл.

Если вы ранее не использовали контроль версий, я рекомендую прочитать о том, как они работают, и выбрать тот, который соответствует вашим потребностям, который вам и / или вашей команде может понравиться. Распределенные системы контроля версий предоставляют много преимуществ по сравнению с системами клиент-сервер, но, как правило, с ними сложнее работать.

Дж. Полфер
источник
3

Почему бы просто не использовать Google Code или репозиторий SVN? Так как это система контроля версий. Там нет определенного использования для этого. Это просто невероятно полезно для нескольких разработчиков и отслеживания изменений в исходном коде.

декан
источник
1
Вы сделали это? Ввод двоичных файлов в SVN или Mercurial оказался для меня ужасным.
Тыблу
2
Нет, но я использовал SVN не только для исходного кода. Такие вещи, как PDF-файлы и TXT-файлы.
Дин
2
@ Тыблу, что ты имеешь в виду под ужасным? Я сделал это с помощью файлов схем и макетов, и он отлично работал с Subversion.
Келленджб
Я не могу следить за изменениями в файлах EAGLE с Mercurial. Похоже, что весь файл отличается. У вас есть хранилище, на которое я могу заглянуть?
Tyblu
5
@tyblu, поэтому вы добавляете комментарии, когда проверяете файлы :)
vicatcu
3

Я использовал Subversion с Altium раньше.

Я использую SVN с интеграцией Altium для схематического захвата: он работает хорошо. Я должен сказать, что просмотрщик различий лучше, чем ничего не иметь, потому что мои файлы SchDoc являются двоичными, то есть невозможно сравнивать иначе! Я использую клиент SVN, интегрированный в Altium Designer, параллельно с TortoiseSVN без проблем. Клиент Altium немного ограничен с точки зрения возможностей SVN. Я делаю свои "метки" с черепахой.

Мое мнение основано на Altium Designer 10 build 27009 и версии 13.1 build 27559.

Только 1
источник
2

SVN, HG, и Git все работает просто отлично.

Старожил
источник
1

Не настоящая система контроля версий, но Dropbox также обрабатывает файлы и делает их доступными для разных людей в разных ОС. - плохая система контроля версий;)

powtac
источник
2
как кто-то, кто работал с командами раньше: пожалуйста , не делайте этого. Dropbox - не система контроля версий для бедных . Это файловая система / архивная система. Вам не нужно использовать git в полной мере, чтобы он был более полезным, на самом деле! Dropbox делает все неправильно, что даже CVS делал правильно (как работать с более новыми ревизиями, как обмениваться изменениями, как отмечать конкретные ревизии), это действительно не система контроля версий .
Маркус Мюллер
1

В прошлые выходные я был на Maker Faire в Сан-Матео и встретил несколько представителей новой (для меня) компании под названием Up-Verter . Они в основном строят электрический CAD-инструмент, который работает в «облаке» (то есть в вашем браузере) и концептуально построен на совместной работе, поэтому должен иметь дело со слиянием / различием и обычными версиями.

Я еще не пробовал, и он выглядит немного зеленоватым (не думаю, что вы пока можете сделать макет печатной платы, только схемы), но это довольно интригующе. Они утверждали, что могут импортировать файлы Eagle, что является плюсом.

Я также поговорил с представителями Eagle в палатке Element 14, и они указали, что они переходят на формат XML, что является своего рода большим шагом к тому, чтобы сделать версионность схем и макетов более правдоподобной ... все интересные достижения в этой области !

vicatcu
источник
0

Это действительно очень хороший вопрос. Поскольку ПЛИС попадают в категорию «аппаратного обеспечения», вас может заинтересовать структура проекта с управлением версиями, которую я предлагаю для проектов ПЛИС:

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

Я думаю, что идеи и концепции могут быть легко применимы к другим аппаратным проектам и вообще. (Комментарии к этому предложению очень приветствуются, кстати.)

Саар Дример
источник
2
Ссылка больше не работает.
Tyblu
0

Избегайте мерзости Он плохо обрабатывает большие репозитории. И ваши репозитории станут большими, если вы

  1. Иметь бинарные файлы схемы, которые меняются лишь незначительно при изменении
  2. Включите обработку двоичных файлов как текста.
Брайан Карлтон
источник
3
Ну ... У вас должно быть много маленьких репо, по одному репо на проект.
Йохан
1
@Johan - ...... Да .... Удачи с этим кошмаром обслуживания. В любом случае, у меня есть 1 репо на клиента (около 4, репозитории, сейчас), со многими подпроектами, и это работает довольно хорошо. По крайней мере, SVN, кажется, может обрабатывать более 5 ГБ двоичных данных без особых проблем.
Коннор Вольф
1
@ConnorWolf Мне было бы интересно услышать, как ты это делаешь. Мы делаем один репозиторий Git на проект, и у нас не было проблем. Отсутствие единого репозитория на проект звучит для меня как кошмар обслуживания.
Мэтт Янг
1
SVN, по крайней мере (возможно, и git), похоже, хранит двоичные различия, а не полные копии файла, поэтому он впечатляюще экономит место.
Коннор Вольф
1
@ConnorWolf re: кошмар обслуживания: 8 лет спустя: git-submodules, вероятно, то, что вы хотите здесь. Это имеет смысл, особенно если вы делитесь, например, стандартными инструментами между несколькими проектами или клиентами.
Маркус Мюллер
0

Для этого я использовал несколько репозиториев Mercurial (HG) (по одному на проект), но, как и большинство систем контроля версий, репо становятся все больше и больше.

Nate
источник
0

Вы должны попробовать кабана . Он предназначен для обработки огромных файлов и хранилищ. 100 ГБ или более двоичных данных не проблема.

Матс Экберг
источник
0

Я просто хотел бы добавить ссылку на HgInit, отличное введение в Mercurial, если вы решите пойти по этому пути. Лично я использую Git, но они очень похожи с точки зрения архитектуры (обе являются распределенными системами контроля версий). Распределенная природа их делает их отличными для работы в хорошо распределенных командах. :)

http://hginit.com/

Бернхард Хофманн
источник
В то время как Mercurial является хорошей системой управления исходным кодом для «чистых» программных проектов, многие из ее преимуществ теряются в проектах, которые имеют дело с по существу чисто двоичными файлами, так как не способны разумно объединять объекты. Уроки HgInit не будут иметь никакого смысла, если вы не будете заниматься только программным обеспечением.
whatsisname
0

OpenPLM предлагает некоторые аспекты того, что вы ищете, хотя, похоже, он не находится в активной разработке ( http://www.openplm.org/trac/discussion/topic/93 ).

Может быть, посмотрите на https://discuss.erpnext.com/t/erpnext-git-github-for-open-source-hardware-call-for-beta-user-s/18006 («ERPNext: Git / Github для Оборудование с открытым исходным кодом - вызов для бета-пользователей

Стев дженсен
источник
0

Об этом стоит подумать для любого описания оборудования. Как только будет принято удобочитаемое описание аппаратного обеспечения, любая современная система контроля версий (RCS) будет работать довольно хорошо. Схемы схем обычно полностью описываются файлами Gerber, UML описывает другие части, которые являются полностью ascii описаниями. Существуют менее стандартные форматы ascii для схем, механической разметки и т. Д. (Например, KiCAD).

Принятие является более практическим вопросом, оно требует признанного требования для хорошего контроля версий, в том числе значимых различий. Что также часто означает отказ от Word, Excel, PowerPoint и т. Д. Очень сложный аргумент против менеджеров и MBA, но, возможно, регулируемые отрасли, такие как Медицинское оборудование, Авиация и Военные, уже требуют хорошего контроля версий.

Как уже отмечали другие, большинство современных RCS используют двоичные файлы контроля версий, что очень полезно для архивации и идентификации версий, но любая система электронного документооборота (EDMS), например, Agile, может назначать номер редакции произвольному двоичному файлу. Скучно.

sasguy
источник
0

Несмотря на то, что Altium Vault не бесплатна и не содержит ошибок, она отлично справляется со своей задачей; Я могу легко откатиться к любой точке фиксации (как это делает любая VCS) очень легко.

В этой области, Altium является путь впереди премии (Mentor и Cadence) инструментов.

Я не работаю на Altium, но этот инструмент, несмотря на текущие проблемы, делает полное аппаратное управление версиями очень простым.

Питер Смит
источник
И это, вероятно, единственное, для чего Убежище хорошо ...
Мэтт Янг
UNIX-путь; делай одну вещь и делай это очень хорошо.
Питер Смит