前回質問した時、Subversionを使ってファイル管理をする事を教えていただきました。
http://q.hatena.ne.jp/1248516554
基本的な使い方はわかるものの、私が目的とした設定にする方法がわかりません。
以下に詳しく記載しますので、設定方法や考え方を教えて下さい。
※画像のようなディレクトリ構成だとします。
・「admin」は管理画面用のファイルで、案件毎に内容が少し異なります。
・「plugin」はシステムに追加機能を与えるファイルが入っており、案件毎に利用させるものが異なります。
・「include」はシステム全体で利用する関数、クラスファイルです。
・「config.php」にDBの接続情報や設置先URLの情報があります。案件毎に異なる内容です。
環境はWindowsXPでTortoiseSVNを使っています。
情報が足りない場合は、コメント欄よりご指摘下さい。
案件ごとに異なる部分はそのまま対応するしかないとして、includeをいかに共有させるかというスタンスで回答します。
結論から言うと、subversionの外部参照を使います。
まず、共有するincludeを管理するリポジトリを作成します。
Common/include
その上で、案件ごとにリポジトリを作成します。
たとえば、次のような感じ。
ProjectA/admin /plugin /config.php /include
このときのProjectA/includeを外部参照にします。
こんな感じで指定します。
svn propset svn:externals 'include <Commonリポジトリのincludeを指定するURL>' ProjectA
参考:
http://d.hatena.ne.jp/tomodrop/20080404/1207293345
これれで、共有部分のリポジトリは1か所で管理できます。
pluginも一元管理をしたいのであれば、各プラグインがディレクトリで区切られている前提であれば、同様に外部参照で管理することも可能です。
Common/Plugins/pluginA /pluginB /pluginC
などと共有のリポジトリに作成し、
ProjectA/plugins/pluginA /pluginB
などを用意しておいて、
svn propset svn:externals 'pluginA <CommonリポジトリのpluingAを指定するURL>' plugins svn propset svn:externals 'pluginB <CommonリポジトリのpluingBを指定するURL>' plugins
pluginCしかいらない別のプロジェクトでは、
svn propset svn:externals 'pluginC <CommonリポジトリのpluingCを指定するURL>' plugins
とすればOKです。
include、および、pluignsの中に修正があった場合は、各プロジェクトで、updateをかければ、更新されます。
また、特定のリビジョン指定でとめることもできるので、特定のプロジェクトは、pluginのアップデートをしないというような設定も可能です。
何かの参考になれば。
のコマンドがうまく通りませんね・・。アクセスが拒否されます。(私のPCの問題でしょうが・・・)
参考URL先でTortoiseSVNで実行する方法(記事2番目の手順)も書いてあるのですが、右クリックをした後のメニューに [TortoiseSVN]-[Properties]-[Add]という項目もないし、手詰まりな状態です。
もう少し自身のPC環境を見直してみます。回答ありがとうございました。