@kyanny's blog

My life. Opinions are my own.

svn:externals の設定方法

/Users/foo/workdir/bar をカレントディレクトリとする。

http://example.com/repos/baz/blah を外部参照したいとする。

$ svn propset svn:externals 'blah http://example.com/repos/baz/blah' .

svn:externals は二つの引数をとり、第一引数はクォートで囲まれた二つの要素からなる。

一つ目の要素は、外部参照されたソースツリーが何というディレクトリ配下に展開されるか、を指定するもの。このケースだと ./blah というディレクトリ以下にソースツリーが展開される。

二つ目の要素は、外部参照するソースツリーの URL を指定するもの。レポジトリの root の URL ではなくて、深い階層のディレクトリツリーを参照したいならそこまでちゃんと指定すること。このケースだと http://example.com/repos/baz/blah という URL (みたまんま)。そういう理由なので 'blah http://~~~~/baz/blah' と blah が二回でてくるがこれで合っている。

二つ目の引数は、外部参照しているディレクトリをどのディレクトリの下に置くか、を指定するもの。あくまで svn propset なので、ディレクトリのプロパティとして指定するわけで、このケースだとカレントディレクトリを指定しているので ./blah 以下に co されてくる。つまり最終的には /Users/foo/workdir/bar/blah みたいなパスになる。