ここでは,gitのリポジトリにある,一部のディレクトリ(プロジェクト)のみを取り出して編集をしたいときの方法について説明します.これまでずっとSVNをもちいてバージョン管理をしてきました.SVNの場合,リポジトリはサーバにあり,そのサーバから一部のディレクトリのみをチェックアウトしてくることができました.ソフトウェアとハードウェアが密接に関係する組込みシステムにおいて,ハードとソフトを同じリポジトリにして管理することが分かりやすいと考えるため,これまではそのような管理をしてきました.しかし,gitの場合にはリポジトリはサーバだけでなくローカルにも存在するため,基本的にはリポジトリの一部のみをチェックアウト(gitではクローン)することはできません.その一方で,TWE-LiteのSDKのような,あるきまったディレクトリにプロジェクトを置かざるを得ないようなシステムの場合には困ったことになります.すぐできる解決法は2つあり,1つはそのプロジェクト単体でリポジトリに置くこと,もう1つはSDKごとリポジトリに置くこととなります.前者の場合,ハードウェアと一緒にリポジトリを形成できない,もしくはソフトウェアのフォルダ内にハードウェアのためのファイルを入れ込むというような,ちょっとイレギュラーな扱いになってしまいます.後者の場合には,新しいプロジェクトを作成するごとに膨大なSDKごとリポジトリに置かざるを得なくなり,大変非効率です.

そこで今回提案する方はジャンクションを用いた解決法です.ここではTWE-LiteのSDKに即した方法について説明します.まずは手順の要点を示します.

  1. gitのリモートリポジトリからすべてのプロジェクトをクローンし,ローカルにリポジトリを設置する.
  2. プロジェクトとなるディレクトリのジャンクションをMWSDK\Wks_TWELITEの下に設置する.

ジャンクションとは,Linuxにおけるシンボリックリンクと同じような役割を果たす機能です.ややこしいのですが,ジャンクションとは別に,Windowsにもシンボリックリンクの機能があります.なお,シンボリックリンクとジャンクションとの違いについてはこちらを参照してください.ここで大事なこととしては,シンボリックリンクで作ったディレクトリでは,TWE-LiteのSDKだとうまくビルドできず,必ずジャンクションでフォルダを作る必要があります

ジャンクションは,コマンドプロンプトでも作れますが,いちいちそうするのは面倒,という場合にはGUIでジャンクションを作るツールがあります.それがLink Shell Extensionです.こちらのページからダウンロードできます.インストールは別段難しいことはありません.インストーラに従ってインストールしてください.

使い方ですがこれも簡単です.まず,参照元となるディレクトリを右クリックすると下のようなポップアップが現れますので,「リンク元として選択」を選びます.

01

 

そして,ジャンクションを作りたいフォルダに対して右クリックをします.下の図はTWE-Liteのワークスペースを置くWks_TWELITEフォルダです.これを右クリックし,現れるポップアップメニューから「リンクを作成」→「ジャンクション」を選択します.

02

 

ジャンクションがうまく作られると,下の図のようになります.アイコンを一見すると,ショートカットのように見えますがファイルの種類はファイルフォルダーになっています.

 

03

 

こうすることで,ビルドが通るようになります.その一方で,編集をすれば,ローカルリポジトリにも反映されますので,あとはコミットとプッシュをすればリモートリポジトリへも反映させることができます.このようにプロジェクトを特定のディレクトリへ置かざるを得ないようなものをgitで管理する場合には,このジャンクションがかなり有効であると思われます.どうよな場合として,eagleにも使えると思われます.ぜひ試してみてください.