Subversion(TortoiseSVN)でファイルやフォルダのリンクを作成する方法(手順)
リンクといっても、コンパイルしたあとのリンクではありません(汗)。
いわゆるショートカットのようなものです(ちょっと違いますが)。
あるファイルまたはフォルダ(ディレクトリ)を、
別の場所や、または、同じ場所でも別の名前で、
全く同じものを置きたいときに使用します。
フォルダ単位のリンクは、以前のSubversionでも可能ですが、
ファイル単位でのリンクができるのは、バージョン1.6以降です。
特に、バイナリファイルの個別のリンクは
バージョン1.6.6以降でないとできません。
クライアントはすぐに自分でバージョンアップできるわけですが、
サーバを管理されている方がその気になってくれないことには
すぐに使うのは難しいかもしれませんね‥‥。
(ご注意)
このページをご利用になった結果の影響については、
一切責任を負いませんので、あらかじめご了承願います。
[フォルダのリンク]
- TortoiseSVNを使って、フォルダのリンクを作ってみます。
ここではtrunk以下のdir1フォルダのリンクを、
同じ階層にdir1-linkの名称で作成してみましょう。
- まずdir1の親フォルダ(すなわちtrunk)で、
コンテキストメニュー(右クリックメニュー)を出して[属性]を選択します。
dir1が見えている状態で(つまり、trunkフォルダに入って)
ファイル以外の空白部分で右ボタンを押しても同じです。
- 属性のダイアログが出てきますので、[New]のボタンを押します。
- 属性名は、「svn:externals」を選択します。
- 属性を記述します。書き方は、リンク元、リンク先、の順です。
dir1と同じ階層にlink-dir1を作成するので、
「dir1 link-dir1」と書きたいところなのですが、
相対パスで「./」から始まる書き方はなぜかありません。
今回は「../」から始まる書き方に従って、
いったん1階層戻って、「../trunk/dir1 link-dir1」と書きましょう。
絶対パスで書いたほうが便利なのであれば、もちろんそれでも結構です。
「再帰的に設定する」はチェックをつけないでください。
- [OK]を押して終了です。このあと
更新して、リンクができているかどうかを確認してください。
- 確認できたら、忘れずにコミットしてください。
[ファイルのリンク]
- 同じように、ファイルのリンクを作ってみます。
dir1/Book1.xlsを、dir2/Book1.xlsへリンクしてみましょう。
dir2は、あらかじめ作成済みのフォルダです。
フォルダの追加の手順はこちらです。
- 今回はdir2へリンクを作成しますので、dir2で属性を設定します。
この例ではdir2は新規作成したものですが、
もちろん既存のフォルダでもよいです。
- ファイルの場合でも、フォルダの場合と書き方は同じです。
dir2から見た相対パスで、「../dir1/Book1.xls Bool1.xls」と
書けばよいです。
- これで[OK]を押せば終了です。ただ、この例ではdir2が
新規作成したフォルダであるため、このまま更新してもリンクをたどりません。
いったんコミットしてから更新すれば、
リンクをたどってファイルを取ってくることができるようになります。
[注意]
- 設定するパスは、サーバでの絶対パスまたは相対パスです。
まだコミットしていないパスへは先に属性のみを設定しても動作しません。
- 属性で設定する性格上、
リポジトリブラウザ(サーバ側)で見えるのは、リンク元のみです。
- 一方を変更したあとは、コミット→更新しないと他方へ反映されません。
- いったん設定したリンクは、
あとから解除してもローカルコピーはそのまま残ります。
その場合は、それぞれのローカルコピーを明示的に削除するか、
最初から新規にチェックアウトをやり直すしかありません。
- この例では同じリポジトリの中でリンクを作成しましたが、
実際にリンクを作るのは、外部のライブラリを持ってくるときなど、
別のリポジトリを参照することのほうが多いのではないかと思います。
- ブランチを作るとき、あくまでもリンクのコピーしかできません。
実際のファイルがコピーされるわけではありませんので、気をつけてください。
- 紹介だけしておいてこんなことを申し上げるのもなんですが、
よっぽど必要に迫られたとき以外は使用しないほうがよいと思います。
多用すると経験上、管理が手に負えなくなります。
shacho@critical.ne.jp
Last modified: Wed Jan 06 19:30:00 JST 2010