ハードウェアプロジェクトのバージョン管理システムですか?


59

ハードウェアプロジェクトに適したバージョン管理システムにはどのようなものがありますか?Google Code、CVS、SVNに相当するものはありますか?このようなバージョン管理システムは、PCBファイル、回路図などのハードウェアプロジェクトに適していますか?(ファームウェアコードも)?


5
いい質問です!回答に含まれるリポジトリの例をいくつか見たいです。
-tyblu

+1 HWプロジェクトがソース管理の恩恵を受ける可能性があることを認識するため。私が一緒に働いている人たちは、これを実現するのに苦労しているようです。
ネイト

1
しばらくの間、Mercurialを使用して回路基板のバージョン管理を行ってきました。間違いなく良い考えです。
スティーブンコリングズ

1
私はEDA用のgEDAツールスイートを使用し、gitで物事を追跡します。最近、変更された回路図またはPCBの.png画像を自動的に生成し、コミットに追加するgitフックをいくつか書きました。これにより、GitHubのイメージ差分を利用できます。PCBとgschemには、gitと連携してローカルで同様のことを行うネイティブdiffツールもあります。私のフックはここにあります:github.com/BenBergman/.git_hooksそれらを使用するプロジェクトの例:github.com/BenBergman/uJoypad
ベン

回答:


27

基本的に、すべてのVCSシステムはテキストおよびバイナリファイルを適切に処理できます。もちろん、バイナリをマージすることはできません。

したがって、CVSのような古いものを使用していない限り、どのシステムでも十分です。


3
私はすべてのプロジェクト(ソフトウェアとハ​​ードウェア、PCB、ファームウェア、ツールなど)でCVSを使用していますが、問題はありません。確かに、CVSは時代遅れですが、私には20年のプロジェクトの歴史があり、リポジトリをMercurialまたはSVNに移行するためのコンバーターは動作していません。
アックスマン

12
それから実用的な方法は、単に古いものをCVSに残し、新しいシステムに新しいものを入れるだけです
ヨハン

CVSは、私が現在取り組んでいるプロジェクトのためにロックされているMicrosoft Visual Source Safeである恐怖と比較すると、美しいシステムです。Blech。
ケビンフェルメール

@Kevin Vermeer 2つの「それほど良くない」ものを互いに比較しているとき、あなたはスケールのマイナス側にいることを知っています;)
ヨハン

@KevinVermeer、バージョン管理の世界の悩みの種であるsourcesafeを使用しなければなりませんでした。私の最後の上司は、バージョン管理の完全な無視を許可しました。
-Kortuk

17

以前、AltiumでSubversionを使用しました。正常に機能しましたが、当時はdiffツールがなかったため、コードを使用したバージョン管理よりも有用性が低くなりました。diff機能がなくても、まだやりがいがあると思います。

ファームウェアについては、SubversionまたはGitの両方が優れています。Gitを使用したことがない場合は、最初にSubversionを試してください(後でGitの学習が難しくなりますが)。

Altiumは最近、回路図とPCBのdiffツールを導入しました。そのため、EDAベンダーが製品に組み込むことを管理している通常の狂気を除けば、Subversionは素晴らしいものになると思います。

新しいdiffツールでこれを試してみるつもりでした。その場合は、例としてレポへのリンクを忘れずに投稿してください。

更新

私はこれを試してみましたが、Altium diffツールには少し困惑していると言わざるを得ません。機能的ですが、ボードのリビジョン間の変更は十分に大きいため、少なくとも私にとってはそれほど有用ではありません。これを見て、diffツールを忘れてGithubを使用することにしました。興味のある方はこちらをご覧くださいhttps : //github.com/rascalmicro/pcb


統合されたSVN GUI(Altiumを使用)または外部の何かを使用しましたか?
ニックT

SVNを備えた最新のAltiumは素晴らしいですが、PCB /回路図の修正はコードの場合ほど重要ではないことを付け加えます。最大3〜4個の回路図/ PCBリリースリビジョンを処理している場合は、おそらく設計段階または要件段階で非常に間違っていると思われます。
マーク

@マーク:リリース10ベータ版、またはSummer 09について話しているのですか?
ニックT

2
ボードのリビジョン間の変更が十分に大きく、役に立たない場合は、十分な頻度でコミットしていません。早くコミットし、頻繁にコミットしてください!タグを使用してボードの回転数を追跡します。
ケビンフェルメール

3
私はSVNを使用していますが、間違いなく価値があります。私のシステムはこれです:保存ボタンを押して、おそらくコミットする必要があります。「パーツXをライブラリに追加しました」または「テストパッドをI2CおよびSPIバスに追加しました」などのコミットメッセージを読んで、変更を追跡します。製造のために送信されるリリースは完全に異なり、svn cp trunk/ tags/releaseX/リリースのスナップショットを取るために使用されます。リリース間の変更を確認する場合は、releaseX / fileとreleaseY / fileを比較するか、コミットログを参照して個々の変更を確認できます。ブランチは、コミットのフラッドをモジュール化するのに役立ちます。
ケビンフェルメール

10

VisualSVNサーバー+ TortoiseSVNクライアントを使用しますが、正常に動作します


7

Google Codeを使用して、私の電子プロジェクトであるSuper OSDをホストしています。

回路図とPCBの管理には、gEDAスイートのみを使用しています。便利なことに、gEDAは、EagleのようなバイナリBLOBの代わりに、回路図用のテキストファイル(ほとんどは人間が読める形式ですが、解釈が難しい)を生成します。たとえば、これは2つの回路図の差分で、1つは約5日前のもの、もう1つは私がプッシュしたものです。テキストファイルの実際の変更をあまり見ることができないため、特に有用ではありませんが、相対的な変更(つまり、大幅な手直しと単一コンポーネントの変更)を示すことができ、以前のバージョンに戻ることができます。


3
ファイルにテキストベースの形式を使用する場合は、+ 1。ディスク容量は安く、テキストの圧縮は簡単です。バイナリblobがあまり一般的でないことを望みます。
ケビンフェルメール

4

トリックは、バイナリでうまく機能するものを使用することです。バイナリを頻繁に使用して他の人と共有している場合は、それらのバイナリファイルにロックメカニズムを実装すると有益な場合があります。バイナリファイルでSubversionを使用し、セマンティクスのロックとバイナリファイルの上書き/マージの不足のために発生した他のユーザーとの共有に関する多くの問題に遭遇しました。これらのファイルにロックメカニズムを追加すると、バイナリファイルを編集/変更したユーザーに関するコミュニケーションのヒューマンエラーがなくなります。

以前にバージョン管理を使用したことがない場合は、それらがどのように機能するかを読んで、自分やチームが満足できるニーズを満たすものを選択することをお勧めします。分散バージョン管理システムは、クライアント/サーバーシステムよりも多くの利点を提供しますが、操作がより複雑になる傾向があります。


3

Google CodeまたはSVNリポジトリを使用しないのはなぜですか?これはリビジョン管理システムです。定義された使用法はありません。複数の開発者やソースコードの変更を監視するのに非常に便利です。


1
あなたはこれをしましたか?バイナリをSVNまたはMercurialに入れることは、私にとってはひどく判明しました。
-tyblu

2
いいえ、ソースコードだけでなくSVNを使用しました。PDFや.txtファイルなど。
ディーン

2
@Tybluひどい意味は?回路図ファイルとレイアウトファイルを使用してこれを実行しましたが、Subversionを使用するとうまく機能しました。
ケレンブ

MercurialでEAGLEファイルの変更を追跡できません。ファイル全体が異なっているようです。覗くことができるリポジトリはありますか?
-tyblu

5
@tybluファイルをチェックインするときにコメントを追加する理由:)
vicatcu

3

以前にAltiumでSubversionを使用したことがあります。

スケマティックキャプチャにAltium統合でSVNを使用しています。それはうまく機能します。私のSchDocファイルはバイナリであるため、diffビューアは何もないよりも優れていると言わなければなりません。Altium Designerに統合されたSVNクライアントをTortoiseSVNと並行して問題なく使用しています。Altiumのクライアントは、SVN機能に関して少し制限されています。Tortoiseで「タグ」を実行します。

私の意見は、Altium Designer 10ビルド27009およびバージョン13.1ビルド27559に基づいています。



1

実際のバージョン管理システムではありませんが、Dropboxはファイルのリビジョンも処理し、異なるOSの異なる人々が利用できるようにします。-貧乏人バージョン管理システム;)


2
以前にチームで働いたことがある人として:これをしないでください。Dropboxは貧乏人のバージョン管理システムではありません。ファイル共有/アーカイブシステムです。本当に便利に使用するためにgitを最大限に使用する必要はありません。Dropboxは、CVSでさえ正しくないことすべてを行います(新しいリビジョンの処理方法、変更の交換方法、特定のリビジョンのマーク方法)。これは実際にはバージョン管理システムではありません
マーカスミュラー

1

先週末、サンマテオのMaker Faireにいましたが、Up-Verterという新しい(私にとって)会社の担当者に会いました。。彼らは基本的に「クラウド」(つまりブラウザ)で実行され、概念的にコラボレーションを中心に構築される電気CADツールを構築しているので、マージ/差分や通常のバージョン管理に対処する必要があります。

私はまだ試していませんが、まだ少し緑色に見えます(実際にはPCBレイアウトができるとは思わないで、回路図だけです)が、ちょっとおもしろいです。Eagleファイルをインポートできると主張しましたが、これはプラスです。

また、Element 14テントでEagleの担当者と話をしましたが、彼らはXML形式に移行していることを示しました。これは、回路図とレイアウトのバージョン管理をより妥当なものにするための大きな一歩です。 !



0

これは確かに非常に良い質問です。FPGAは「ハードウェア」のカテゴリに分類されるため、FPGAプロジェクトに提案するバージョン管理に適したプロジェクト構造に興味があるかもしれません。

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

アイデアやコンセプトは、他のハードウェアプロジェクトにも、一般的には簡単に適用できると思います。(この提案に関するコメントは大歓迎です。)


2
リンクはもう機能していません。
-tyblu

0

gitは避けてください。大規模なリポジトリをうまく処理できません。そして、あなたがいない限りリポジトリは大きくなります

  1. バイナリスケマティックファイルがあり、それらが変更された場合にわずかに変更される
  2. バイナリをテキストとして扱うをオンにします。

3
まあ...あなたは多くの小さなリポジトリ、プロジェクトごとに1つのリポジトリを持っている必要があります。
ヨハン

1
@Johan-......ええ....メンテナンスの悪夢で頑張ってください。とにかく、私はクライアントごとに1つのレポジトリ(現在、4つのレポジトリ)を持ち、多くのサブプロジェクトがあり、かなりうまく機能しています。少なくともSVNは、5 GB以上のバイナリデータをあまり問題なく処理できるようです。
コナーウルフ

1
@ConnorWolfあなたがそれをどのようにやっているか聞いてみたいです。プロジェクトごとに1つのGitリポジトリを作成しましたが、問題はありませんでした。プロジェクトごとに単一のリポジトリがないことは、メンテナンスの悪夢のように思えます。
マットヤング

1
SVNは、少なくとも(おそらくgitも)ファイルの完全なコピーではなく、バイナリdiffを格納するように見えるため、スペース効率が非常に優れています。
コナーウルフ

1
@ConnorWolf re:メンテナンスの悪夢:8年後:git-submodulesはおそらくここで欲しいものです。たとえば、複数のプロジェクトや顧客間で標準のツールを共有する場合などに特に意味があります。
マーカスミュラー

0

このために複数のMercurial(HG)リポジトリ(プロジェクトごとに1つ)を使用しましたが、ほとんどのバージョン管理システムが経験するように、リポジトリはどんどん大きくなっています。


0

Boarを試してみてください。巨大なファイルとリポジトリを処理するためにゼロから設計されています。100 GB以上のバイナリデータは問題ありません。


0

HgInitへのリンクを追加したいと思います。HgInitは、そのルートを選択する場合にMercurialの優れた紹介です。個人的にはGitを使用していますが、アーキテクチャの点では非常に似ています(どちらも分散バージョン管理システムです)。それらの分散された性質は、「分散された」チームでの作業に最適です。:)

http://hginit.com/


Mercurialは「純​​粋な」ソフトウェアプロジェクトの優れたソース管理システムですが、本質的に純粋にバイナリファイルを扱うプロジェクトでは、物事を適切にマージできないため、その利点の多くが失われます。HgInitのレッスンは、ソフトウェアのみを実行している場合を除き、意味がありません。
-whatsisname


0

これは、ハードウェアのアスキー記述について考える価値があります。ハードウェアの人間が読める記述が採用されると、最新のリビジョン管理システム(RCS)は非常にうまく機能します。通常、回路レイアウトはガーバーファイルによって完全に記述され、UMLは他の部分を記述します。これは完全にASCIIの記述です。回路図、メカニカルレイアウトなど(たとえば、KiCAD)には、あまり標準ではないASCIIフォーマットがあります。

採用はより実用的な問題であり、意味のある差分を含む、適切な改訂管理のための認識された要件が必要です。これは、多くの場合、Word、Excel、PowerPointなどを放棄することも意味します。管理者やMBAに対する非常に難しい議論ですが、医療機器、航空、軍などのほぼ間違いなく規制されている業界には、すでに適切な改訂管理が必要です。

他の人が指摘しているように、最新のRCSのほとんどは、バージョンのアーカイブと識別に非常に役立つバイナリファイルのリビジョン管理を行いますが、電子文書管理システム(EDMS)、たとえばアジャイルは、任意のバイナリにリビジョン番号を割り当てることができます。退屈な。


0

無料ではなく、バグもほとんどありませんが、Altium v​​aultは最高の仕事をしています。どんなコミットポイントにも簡単にロールバックできます(VCSがそうするように)。

この領域では、アルティウムは、先プレミアム(メンターとケイデンス)のツール。

私はAltiumで働いていませんが、このツールは現在の問題にもかかわらず、完全なハードウェアバージョン管理を非常に簡単にします。


そして、それはおそらく、Vaultは...のために良いです一つのことである
マット・ヤング

UNIXの方法。一つのことをして、それを非常にうまくやってください。
ピータースミス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.