はじめに
普段Unityを使っているのですが、Unityに依存したくないツール(C#)を作りたいときは、Assetsディレクトリの外にプロジェクトを作る必要があります。(同じリポジトリの管理下)
そのツールの中で、Unity側のコードを参照したいケースが出ました。
もちろん、UnityEngineに依存しているコードは使えないので、Util系などUnityに依存していないコードになります。
ファイルをそのままコピーしてもできますが、同じ内容の2重管理は良くないのでリンクさせたいと思いました。
そこで調べてみるとシンボリックリンクが使えそうでした。
環境はMacで書いています。
gitのシンボリックリンクの設定
はじめに、gitのシンボリックリンクの設定をOnにする必要があります。
git config --global core.symlinks true
確認
git config --get core.symlinks
ローカルで設定されてしまっている場合は、オフ
git config --unset core.symlinks
シンボリックリンクの手順
環境はMacで手順を書いていきます。
新しくリポジトリを作成したことを前提に記述します。
リンク用するファイルの作成
touch file1.txt
file1.txt
hello
シンボリックリンク作成
mkdir sub
ln -s ../file1.txt sub/link.txt
元になるファイルは、作成するシンボリックリンクファイルから見た相対パスにする必要があります。
中身を確認
cat sub/link.txt
結果
hello
新しくリポジトリをクローンしても、同様の結果が得られました。
また、ファイルだけではなく、ディレクトリを指定するとその中身がすべてリンクされます。
GitHub側では
ファイルのアイコンが変化し、中身はリンク先の相対パスになります。