portageのeselect-repo.confでgitのoverlayをshallow cloneしてほしくない時の設定
問題
Gentooで自前のportage overlayを作って利用する場合、以下のようなコマンドを実行すれば良いです。
sudo eselect repository add ncaq-overlay git https://github.com/ncaq/ncaq-overlay.git
そうすると、
/etc/portage/repos.conf/eselect-repo.conf
に以下のように書き込まれます。
[ncaq-overlay]
location = /var/db/repos/ncaq-overlay
sync-type = git
sync-uri = https://github.com/ncaq/ncaq-overlay.git
ここでsync-type = git
指定されたリポジトリはgit clone
する時やpullする時に--depth 1
でshallow cloneされるようになっています。普通は余計に容量を食わなくてありがたいのですが、自前のoverlayを作っている場合開発もそこで行ってテストしながらpushしたりpullしたいです。
もちろんshallow cloneはgit fetch --unshallow
で解除可能ですが、いつからかpullするたびにshallow状態になってしまうようになりました。これは面倒くさい。
これを回避するための設定を調べました。
調査
普通に調べてもよく分からなかったので、ソースコード読んだほうが速いなと思って読みました。
shallow = False
を維持するために、
if sync_depth > 0:
を満たさないようにする必要があるようです。
じゃあ、
sync-depth = 0
と書くしか無さそうですね…?
解決
どうやらとりあえず、
[ncaq-overlay]
location = /var/db/repos/ncaq-overlay
sync-type = git
sync-uri = https://github.com/ncaq/ncaq-overlay.git
sync-depth = 0
で解決可能なようです。
depth
の値として0
は不正なので乱暴な気はしますが。