電子製品の構築や編集環境の一番の利点は、簡単にファイルを作成し編集できることです。この特徴はアイデアをすぐに作画、調査、完成させることができることを意味しますが、同時にソースコードや電子設計データなど貴重なファイルに加えられた変更の履歴の追跡が困難になることを意味します。
ファイルに加えられた変更の履歴を追跡したいという要求、および電子的な形式で捕らえられたソースを体系的に管理したいという要求に応えるため、バージョンコントロール システム (VCS) が生まれました。バージョンコントロール システムは、ファイルのさまざまなバージョンの履歴を保存できるだけでなく、該当ファイルのあらゆるレビジョンを開けるよう対応し、いずれか2つのバージョンのファイルに加えられた変更を比較するソフトウェア ツールです。VCSは、付加的なバージョン管理機能、およびフォルダとファイルのオペレーション機能の提供により、一般的にローカルのオペレーティング・システム (OS) と統合できます。
バージョンコントロール システムは、ファイルを作成するために使用する編集環境と独立して操作することができます。このシステムは、主要なストレージ領域であるリポジトリへのファイルの追加とコミット、リポジトリから作業フォルダへファイルをコピーするためのチェックアウト機能、リポジトリに加えられたあらゆる変更をチェックバックするコミット機能、変更に関する情報を記録する方法、その他の様々な機能を可能にするインターフェースを標準で備えています。
上記の機能は、TortoiseクライアントなどのWindowsシェル拡張機能にもありますが、Altium Designer自体にも含まれています。VCSオペレーションは、OSファイルシステムにアクセスしないで、Altium Designer環境内で実行することができます。
一般的にバージョンコントロール システムは、複数の人によってファイルがチェックアウト、および改訂され、その後に変更を相互にチェックすることができるために、設計者の作業が最新のレビジョンにおいて失われる恐れのある状況をも取り扱います。このような要求に対処するためには、差分を発見するためにバージョンを比較するツール、およびファイルの1つのバージョンへ戻って差分を統合するインタラクティブツールが求められますが、Altium DesignerではこのようなPCB共同作業機能を利用できます。
バージョンコントロール システムで使用する専門用語を理解することは役立ちます。膨大な数のシステムが利用可能ですが、一般的にどのシステムも機能性を記述するために類似した用語を用いています。
バージョンコントロールの要点
バージョンコントロール システム (VCS) を用いて作業する基本的な方法は、作業したいと思うプロジェクトファイルのコピーにリポジトリからアクセスし、Altium Designer内でファイルを編集し、その後、改訂されたファイルをリポジトリ内にバックして”コミット”することです。リポジトリとのやりとりは、バージョンコントロール システムのインターフェース (Altium Designerに内蔵されたStorage Managerパネル、およびProjectsパネル) を通して実行します。
バージョンコントロール システムの動作する方法の鍵は、リポジトリからアクセスするファイルの状態を作業フォルダを通して監視することにより、どのレビジョン上で作業が進んでいて、改訂がなされているかどうかを追跡することにかかっています。結果は同一であっても、リポジトリ、および作業ファイルの取り決めはバージョンコントロール システムのタイプによって異なります – Altium Designerでは、Subversion (SVN)、あるいはGitの場合があります。
-
Subversion VCS
下図は、一連の設計ファイルのレビジョン (最大でレビジョン5まで) を、作業フォルダ内の最新のコピーチェックアウト (File » Check Out) と共に維持する、Subversionリポジトリの概念を表します。作業フォルダ内のファイルをAltium Designer環境内で開いたとき、Alium DesignerはプロジェクトファイルがSVNバージョンコントロール下にあると認識し、現在のバージョンコントロールの状態はStorage Manager、およびProjectsパネルの両方に表示されます。
-
Git VCS
下図は、そのコンテンツをローカルの作業Gitリポジトリにコピーされる‐一般的にはリモートリポジトリのコピー、または作業リポジトリにデータを取り出すことにより、一連の設計ファイルのレビジョン (最大でレビジョン5まで) を、作業フォルダ内の最新のコピーチェックアウト (File » Check Out) と共に維持する、リモートGitリポジトリの概念を表します。作業リポジトリ内のファイルがAltium Designer環境で開かれるとき、Altium DesignerはプロジェクトファイルがGitバージョンコントロール下にあると認識し、現在のバージョンコントロールの状態はStorage Manager、およびProjectsパネルの両方に表示されます。
► 詳しい情報は、Add To Git Version Control and Clone a Git repositoryをご覧ください。
上記の両方のVCSシステムでは、ソースリポジトリと作業場所間のリンクは、後者のVCSデータベース (.svn
、または.git
システム フォルダ) で参照されます。
► Altium Designer内でのSVN、およびGitバージョンコントロール システムの使用に関するさらに詳しい情報は、Using Version Controlをご覧ください。
VCS作業ファイルをAltium Designerで開いたとき、Storage Managerパネル (および、Projectsパネル) 内で右クリックして表示されたメニューで、変更されたファイルの主要リポジトリ (SVN)、あるいは作業リポジトリ (Git) へのコミットなど、標準のVCSの動作を実行することができます。
Commitコマンドは更新されたファイルをリポジトリに登録し、レビジョン番号 (VCS内部に保管される) を増やし、ファイルに加えられた変更を記述するために入力されるメッセージのログを取り、Subversionの場合、主要リポジトリ内にファイルのコピーを保管します。Gitの取り決めにおいて、更新されたファイルは、Pushコマンドを用いていつでも作業リポジトリからリモートリポジトリにコピーすることができます。
Altium Designerバージョンコントロールのインターフェースは、より多くのオプションが利用可能な、Projectsパネル、あるいはStorage Managerパネルから直接、アクセスすることができます。
Altium Designer内で利用可能なSVN、およびGitバージョンコントロール両方の機能は、それぞれの
拡張機能 ‐
VCSプロバイダ - SVN、および
VCSプロバイダ - Gitにより有効化されます。これらの機能はデフォルトでインストールされ、ソフトウェアの
Extension & Updates画面を通してアクセスすることができます。
複数ユーザーのアクセス
大部分の企業向けバージョンコントロールのインフラストラクチャは、主要サーバベースのSVN、あるいはGitリポジトリをベースとしており、利用可能なプロトコルメソッド– svn
、svn+ssh
、https
などの一つを使用するネットワーク上で動作します。これにより全ユーザーにネットワークへのアクセス、サーバベースの許可を条件として、単一管理ソースからの共同プロジェクト開発用の伝達手段を提供します。
次に、複数のアクセス機能は異なるチームメンバーに一つのプロジェクトでの独立した作業の継続を可能にし、当該ファイル上での作業が可能になる前に他の誰かがファイルをチェックして戻すのを待つ必要がありません。集中管理型Gitバージョンコントロール システムは、作業中にファイルをローカル作業リポジトリへコミットし、これらのコミットされた変更を後で主要Gitリポジトリに戻す ’Push’ することで (そのため、それ以降、ネットワークに接続する必要はありません)、この利点を更に活用できます。
しかしながらチームとしてVCSを使用するためには、2人のユーザーが同一ファイルを改訂するという避けがたい状況を解決するツールとテクニックを必要とします。このようなツールとテクニックが利用できれば、この基盤において、複数ユーザーによる設計共同作業、および関連した利点を本当の意味で活用できるようになります。
この状況を対応するため、Altium Designerには、Storage Manager、およびCollaborate, Compare and Mergeパネルを通して利用できる、回路図とPCBを比較する (あるいは、'差') 機能が含まれています。Altium Designerは、エディタ内でファイルの統合差分を見て解決し、最終的にVCS内で新たなHeadリビジョンを作成するための、洗練されたPCB設計共同作業機能を提供しています。最新のPCB共同作業機能により、複数ユーザー間でのライブの設計共同作業が可能になり、ユーザーの設計作業領域を定義、および割当も行えます。
► バージョンコントロールをAltium Designer内でプロジェクト設計に適用するためのガイドは、Using Version Controlをご覧ください。
VCSリポジトリ
バージョンコントロールを使用する前に、プロジェクトファイルはVCS、およびAltium Designerの両方によって認識されなければなりません。このプロセスは様々なVCSメソッドやアプリケーションによって異なる可能性がありますが、必然的にデザインリポジトリの作成、および/またはそこへの接続、および該当リポジトリへのデザインプロジェクトファイルの追加を必要とします。
デザインリポジトリはデータベース構造を基礎としており、ファイルとフォルダの階層構造の情報を内部的に保管し、ファイルツリーとして参照します。実際に接続するリポジトリは主要SVNリポジトリ、(リモートGitリポジトリと関連付けられる) Git作業リポジトリ、あるいはローカルPCや共有ネットワークの場所などアクセス可能な場所に作成したリポジトリになります。
リポジトリのタイプによって、以下のものを含む各種プロトコルを通してアクセスが可能です:
- 通常は、ローカル、あるいはネットワークベースのリポジトリに用いる、伝統的ファイルアクセス。
- プレーンテキスト、TCP/IP – あるいはセキュア
svn+ssh
と同等のものを使用する、サーバベースのリポジトリへのsvn
プロトコル。
- 一般的に、WebDAV over http – あるいはセキュア
https
と同等のものを使用する、サーバベースのリポジトリへのhttpメソッド。
Subversion (SVN) リポジトリは、PreferencesダイアログのData Management – Design Repositoriesページで、必要な場合に接続、作成できます。
- GitタイプのリポジトリはAltium Designerの外部に作成され、ローカル作業Gitリポジトリの内容は、開いているファイルによってそのホストフォルダからアクセスします。
- リモート、およびローカル両方の作業Gitリポジトリの管理は、標準で企業システム、および外部Gitツールを通して行われ、その際にファイルレベルの操作 (Commit、Push、Update等) はAltium Designerの編集環境内で扱われます。
- Altiumの管理されたコンテンツサーバ内の管理されたプロジェクトを使用すると、リポジトリ管理は自動的に取り扱われます。
SVNリポジトリへの接続
既存のSVNデザインリポジトリに接続するには、PreferencesダイアログのData Management – Design Repositoriesページにある ボタンを使用して、SVN Design Repositoryダイアログを開きます。ここで、デザインリポジトリのプロパティを設定でき、リポジトリ接続、およびデザインファイルのチェックアウト用ターゲットフォルダパスのローカル名を定義することが可能になります。
既存のSVNリポジトリがAltium Designerに登録されているとき、デザインファイルをSubversionのバージョンコントロール下に置くことが可能になります。
ダイアログのRepositoryオプションは、利用できるリポジトリの場所、オプションのサブフォルダ、および接続用の互換性プロトコルメソッドに適合するように構成する必要があります。svn、およびhttpアクセスメソッドは、ホストサーバ、およびそのアクセス資格証明書に関連した付加的情報が必要なことに注意してください。
さらに詳しい情報は、以下をご覧ください:
► PreferencesダイアログのData Management – Design Repositoriesページ。
► SVN Design Repositoryダイアログページ。
SVNリポジトリの作成
ローカルSVNデザインリポジトリを作成するには、PreferencesダイアログのData Management – Design Repositoriesページに行き、 ボタンを使用してCreate SVN Design Repositoryダイアログを開きます。
ダイアログには、様々な構成オプションがあり、リポジトリのフォルダの場所とメソッド (接続プロトコル)、およびデザインファイルのチェックアウト用のローカル接続名とターゲットフォルダパスを定義できます。svn
、およびhttp
へアクセスするには、ホストサーバ、およびそのアクセスに関連するその他の情報が必要なことに注意してください。詳細については、上記リンクをご覧ください。
命名されたVCSリポジトリとして構成されるローカルフォルダの指定、または作成。
インストールされたVCSシステムは、正確なバージョンコントロール ファイル階層、およびデータベースを、指定したリポジトリフォルダ内に作成します。一旦、作成、および登録すると、新たなリポジトリが接続され、PreferencesダイアログのData Management – Design Repositoriesページにリスト表示されます。、またはをクリックして変更を確定します。
VCSリポジトリを作成するプロセス (従来の外部の (独立した) VCSクライアントを使用) は、Preferencesダイアログで直接、行うことができます。
SVNリポジトリの使用
Altium Designerで利用できる新しい、あるいは既存のデザインリポジトリにより、Storage ManagerやProjectsパネル、およびメインメニューのコマンドを使用して、リポジトリからプロジェクトデザインファイルを追加、および取得 (チェックアウト) することができます。リポジトリファイルはバージョンコントロール下にあるため、すべてのデザイン改訂は追跡され、Altium Designerからアクセスすることができます。
Storage Manager、またはProjectsパネル内で、プロジェクト名を右クリックして表示されるメニューを使用して、プロジェクトフォルダ (および、その構成要素であるデザインファイル) をバージョンコントロールへ追加して、コミットすることができます – Version Control » Add Project Folder to Version Control。
その他にも、新規プロジェクトは、Create Projectダイアログ (File » New » Project) を作成している時、バージョンコントロールに追加することができます。ダイアログの左にあるLocationsリスト内のVersion Control
を選択し、Repositoryのドロップダウンメニューの登録オプションからターゲットリポジトリを選んでください。
Create ProjectダイアログのLocal Storageオプションでは、プロジェクトの作業コピーを保存する場所を定義します。これらのファイルは、Altium Designerで開いて編集され、編集が完了すると新しいレビジョンとしてリポジトリへコミット (チェックイン) されます。プロジェクトの作業コピーは、File » Open Projectコマンド、またはFile » Recent Projectsリストを使用して再度、開いて編集できます。
下図のように、必要に応じて、プロジェクトの新しいインスタンスを新しい作業フォルダへチェックアウトし、File » Check Outコマンドを使用してAltium Designerに読み込むことができます。
互換性のあるVCSリポジトリがAltium Designerでアクセス可能になると、デザインファイルは、リポジトリへの追加やリポジトリからのチェックアウトが可能になります。
Altiumの管理されたコンテンツサーバ VCS
バージョンコントロール下のプロジェクト作業の非常に高度な形態は、Altiumの管理されたコンテンツサーバの機能を利用することです。管理されたコンテンツサーバは、管理されたプロジェクトの高度な構成を提供します (簡素化されたワークフロー、ライフサイクル管理、拡張された共同作業機能等を提供します)。
管理されたコンテンツサーバ内のVCSリポジトリは、サーバ、およびAltium Designer (サインイン時) の両方と緊密に統合され、独立したVCSリポジトリを設定、および構成する必要がなくなります。ユーザー/グループのアクセス、リポジトリ内容、およびプロジェクトの状態は、サーバのブラウザ インターフェースを通して管理することが可能です。
管理されたプロジェクトの詳細については、以下をご覧ください:
► Managed Projects and Releasing a Design
► Working with a Managed Content Server
その他の情報
Version Control Terminology
バージョンコントロール用語集
VCS
|
バージョンコントロール システム: ファイルのバージョン履歴、およびファイルの回復を管理することができるあらゆるツールを表す一般的な用語です。
|
Repository
|
バージョン (あるいはソース) コントロール下のすべてのファイルのマスターのストレージです – データベースとしても知られています。
|
Database
|
バージョン (あるいはソース) コントロール下にあるすべてのファイルのマスターのレコードです – 練習用リポジトリとしても知られています。
|
Check-in
|
ファイルの作業コピーをリポジトリに保存することです。Altium Designerではコミットと呼ばれます。
|
Check-out
|
VCSリポジトリから作業フォルダにファイルのコピーを受け渡すことです。一般的にはファイルの最新レビジョンをチェックアウトしますが、これより前のどのバージョンにもチェックアウトできます。VCSに依存するファイルを、単にチェックアウト、あるいは排他的チェックアウト (ロック状態) としてフラグを付けることができます。
|
Commit
|
ファイルの作業コピーをリポジトリに保存することです。幾つかのバージョンコントロール システムではチェックインと呼ばれます。Altium Designerの場合、通常のSaveコマンドでは編集されたファイルを作業フォルダに保存するのに対し、Commitはフォルダファイルをリポジトリに新規レビジョン (バージョン) として保存します。
|
Push |
リモートGitリポジトリをそのローカル作業リポジトリ内のファイルと共に更新し – ローカル、およびリモートのリポジトリと同期します。このコマンドは、ローカルGitリポジトリのファイルがリモートGitリポジトリ内の対応するファイルより新しい時に利用できます。理論上はGit Pullコマンドの補助となります。
|
Conflict
|
2人のAltium Designerユーザーが同一ファイルの同一箇所で変更しようとしている状況を指します。このような状況は、Mergeツールを使用する、手動、あるいは優先すべき (新しいレビジョンとなる) バージョンを決める、いずれかの手段で解決する必要があります。
|
Update
|
リポジトリ バージョンのファイルから作業しているファイルのコピーへ変更を'引き抜く'ための確認の動作です (Commit、またはCheck-inの補足)。差分を統合する過程は、Mergeツール、または手動更新が必要です。
|
SVN |
Subversionは、オープンソースのバージョンコントロール システムです。Altium DesignerにはSVN機能が導入されており (VCSプロバイダ - SVN拡張を通して)、Storage Manager、およびProjectsパネルから直接、レビジョンを追跡、利用できます。
|
Git
|
Gitは、オープンソースのバージョンコントロール システムです。Altium DesignerにはGit機能が導入されており (VCSプロバイダ - Git拡張を通して)、Storage Manager、およびProjectsパネルから直接、レビジョンを追跡、利用できます。
|
Clone |
リモートのGitリポジトリをローカルフォルダの作業GitリポジトリにコピーするGitコマンドで、自動的にHEAD (最新) バージョンをフォルダにチェックアウトします。ローカルリポジトリには、リモートリポジトリ (この場合は、origin) へのリンク参照が含まれているため、ローカル作業リポジトリに更新されたファイルはPushコマンドでリモートリポジトリにアップロードすることができます。 |
Working folder
|
ファイルがリポジトリからチェックアウトされるフォルダで、Gitで作業を行うことが可能な、ローカルの作業リポジトリです。Altium Designerからチェックアウトされるファイルは自動的に読み込まれます。
|
Log message
|
リポジトリにチェックバック (コミット) されたとき、レビジョンに加えられた変更についての記述です。ログメッセージはファイル変更の進行状況を要約するものとして用いることができます。
|
Working copy
|
変更したファイルの ’ローカル’ コピーです – 通常は作業フォルダに常駐します。
|
Revision
|
ファイル、あるいはファイルセットの履歴にコミットされた変更です。これは、異なるエディション (バージョン) を追跡するためにVCSから提供されるファイルが保持する英数字の参照番号です。
|
Head
|
バージョンコントロール システムにコミットされた最新のレビジョンです。
|
Base |
ローカルの作業コピーになるチェックアウトしたリポジトリ内のレビジョンです。checked outレビジョンとも呼ばれます。
|
Project |
多くのバージョンコントロール システムでは、プロジェクトの概念を対応しています。VCSプロジェクトは関係するファイルのセットで、セットとしてチェックイン/アウトすることができます。VCSは、プロジェクト内のファイル全てへのバージョン番号設定など、その他のプロジェクト タイプ機能も対応しています。これは、'Add Project Folder to Version Control' コマンドを使用してバージョンコントロールに追加することができるAltium Designerプロジェクトの概念とは異なります。 |
References
参照