svn の外部定義 externals を使ってみた
svn externals を使ったことがなかったので、使ってみました。
環境
OS | MacOS X 10.6.6 |
Subversion | 1.6.5 |
実験環境構築
ローカルにHogeとFugaという2つリポジトリを作って、HogeからFugaを外部定義してチェックアウト出来るようにします。
## リポジトリを作り、ファイルをコミットします ## Hogeリポジトリの作成 % svnadmin create ~/Hoge % mkdir ~/work % cd ~/work % echo "test externals" > README % svn import -m "test commit" file:///Users/japanrock/Hoge/ 追加しています README リビジョン 1 をコミットしました。 ## Fugaリポジトリの作成 % svnadmin create ~/Fuga % mkdir ~/work2 % cd ~/work2 % echo "test externals fugafuga" > README % svn import -m "test commit fuga" file:///Users/japanrock/Fuga/ 追加しています README リビジョン 1 をコミットしました。
Hogeをチェックアウトして、Fugaをexternalsする
## Hogeをチェックアウト % mkdir ~/work3 % cd ~/work3 % svn checkout file:///Users/japanrock/Hoge/ hoge A hoge/README リビジョン 1 をチェックアウトしました % cd hoge ## 外部定義 % svn propset svn:externals 'test_fuga file:///Users/japanrock/Fuga' . 属性 'svn:externals' を '.' に設定しました ## 設定の確認 % svn proplist -v '.' の属性: svn:externals test_fuga file:///Users/japanrock/Fuga ## Fugaを外部項目として取得する % svn up 外部項目を 'test_fuga' に取得しています A test_fuga/README 外部項目をリビジョン 1 に更新しました。 リビジョン 1 に更新しました。 ## Fugaリポジトリが test_fugaディレクトリにチェックアウトされたことを確認 % ls -la total 8 drwxr-xr-x 5 japanrock staff 170 2 8 22:22 . drwxr-xr-x 3 japanrock staff 102 2 8 22:21 .. drwxr-xr-x 8 japanrock staff 272 2 8 22:22 .svn -rw-r--r-- 1 japanrock staff 15 2 8 22:21 README drwxr-xr-x 4 japanrock staff 136 2 8 22:22 test_fuga % cat README test externals % cat test_fuga/README test externals fugafuga
Hoge から外部項目Fugaを削除する
% svn propdel svn:externals . 属性 'svn:externals' を '.' から削除しました ## 削除されたことを確認 % svn proplist -v % ## svn upで Fugaがチェックアウトされないことを確認 % svn up リビジョン 1 です % ## 外部項目は削除したけど、test_fugaディレクトリは削除されずに残る・・・ % ls README test_fuga ## しかたないので、rm -fr で削除 % rm -fr test_fuga % ls README
チェックアウトされないのは良いのだけど、一度チェックアウトされた Fuga はローカルに残っている。これは、rm で削除するしかないのか・・・。外部項目削除したら、一緒にローカルも消えてくれるといいのに・・・。