「ワークスペースはどう作ればいいの?:前提編」の続きです。
どの単位でワークスペースを作成するかは、「どの単位でソースコードの管理をしたいか?」に依存しますが、以下のような条件により、管理単位が変わると思います。
・端末を共有するか?
複数の開発者で端末を共有するのであれば、最低限開発者単位でワークスペースは作成しないといけません。そうしないと、別の開発者が変更していたソースファイルをチェックインすることになります。
・複数のプロジェクトを兼任するか?
変更中のプロジェクトとは別のプロジェクトで変更していたソースコードを間違ってチェックインさせないためには、ワークスペースを分離して作成しないといけません。
・分岐(ブランチ)を使うか?
変更中の分岐を使用しているときに作業中ではない分岐で変更したソースコードをチェックインさせないためには、ワークスペースを分離する必要があります。
具体例だと、こんな感じになるかと。※あくまで例です。
1.1人の開発者が端末を独占し、関わるプロジェクトは1つだけ。ブランチも切らない。
デフォルトで作成されるワークスペース(ローカルワークスペース/プライベートワークスペース、ワークスペース名がコンピュータ名)を使用。
2.1人の開発者が端末を独占し、関わるプロジェクトは複数あるけど。ブランチは切らない。
チームプロジェクト毎にワークスペースを作成。(ローカルワークスペース/プライベートワークスペース、ワークスペース名はチームプロジェクト名か、それに関連する名称)
3.1人の開発者が端末を独占し、関わるプロジェクトは複数あり、分岐を使う。
チームプロジェクト+分岐毎にワークスペースを作成。(ローカルワークスペース/プライベートワークスペース、ワークスペース名はチームプロジェクト名か、それに関連する名称+分岐名)
4.複数の開発者が端末を独占し、関わるプロジェクトは複数あり、分岐を使う。
チームプロジェクト+分岐毎にワークスペースを作成。(ローカルワークスペース/プライベートワークスペース、ワークスペース名はチームプロジェクト名か、それに関連する名称+分岐名)
これだと、3.と同じなので「複数の開発者が同じワークスペース名を使えないんじゃ?」という疑問が湧きますが、「ワークスペースは所有者(OSログインユーザ)毎に管理される」ので、同じワークスペース名でも問題ありません。
但し、マッピングするローカルフォルダは開発者ごとに分けないといけません。
通常はこんな感じでいいのですが、これで対処できなかったパターンがあります。
それは、「Visual StudioとEclise(+Team Explorer Everywhere)を両方使用する」場合です。
実際にやってみると、
VS上でチームプロジェクトを作成する
↓
VS上でチームプロジェクトのルートフォルダを対象にしてワークスペースを作成する
↓
Eclipse上でチームプロジェクトに接続する
↓
Eclipse上でチームプロジェクトのルートフォルダを対象にしてワークスペースを作成しようとする
↓
「(ローカルフォルダは)別のワークスペースで既に使用されている」と怒られる( ;∀;)
という状態です。
ちょっと悩みましたが、どうもIDEが違うと別のワークスペースとしての管理になるっぽいです。
対処としては2パターンあるかと思います。
1.ワークスペースのアクセス許可をパブリックワークスペースに変更
同じフォルダを使用することができますが、VSで変更中のソースがEclipse側でも検知されてしまいます。
JNI作成のような、C++とJavaの変更を同期を取って作業する場合にはこれでもいいかもしれません。
ただ、
・非同期の変更(変更内容が別々)
・TFS上の作業項目に対するチェックイン時関連付けが必須なプロジェクトで、Java側とC++側の作業項目が別々に作成されている
ような場合は使いづらいと思います。
→VS側でチェックインするときは、Java側の変更対象を除外しないといけない。(逆もそうです)
2.IDEごとに別々のワークスペースを割り当てる
通常はこちらが使いやすい気がします。
※C++/.NET側とJava側で使用するフォルダをきれいに分ける必要がありますが、普通ごちゃまぜにはしないと思いますので...。
ちなみに、「ワークスペース」はTFVC(元々TFSで使用するバージョン管理システム)のみで使用するもので、Gitでは使用しません。
一人で調べものする際はあまり気にしないので、ちょうどいい整理になりました。
(そろそろ仕事場でも分岐は使いたいけど、VB6/VC++6がメインじゃ・・・orz)