取得(clone/pull)に特化した軽量バージョンマネージャー gitup
Advent Calendar 2023 二日目
と
で portsnap が無くなったよ!ネタがありました。今まで ports ツリーの管理に portsnap を使っていて、開発マシンでもないのにいろいろ依存pkgが同時に入ってしまう git は入れたくないなぁという人は結構多いかもしれません。
2023/12/01 に行われたFreeBSD ワークショップでも話題になり、その時 ワークショップ主催 の佐藤先生が紹介したのが gitup (ports:net/gitup)というコマンドです。
ファイルの取得(clone/pull)専用のコマンドで、/usr/src や /usr/ports を最新に同期することに特化したコマンドです。git より依存するライブラリが少なくサイズも小さいので、git よりも気楽に入れられるでしょう。
使い方
pkg が用意されているので pkg install でインストールできます。
# pkg install gitup
ports は net/gitup
です。
ports ツリーを取得するには gitup ports
とします。/usr/src は current のソースツリーならば gitup current
、リリースならば gitup release
です。単純ですね。
ですが、インストール直後にいきなり実行すると設定ファイルが無いよと怒られてしまいます。
# gitup ports
gitup: load_config: cannot load /usr/local/etc/gitup.conf: Inappropriate file type or format
設定ファイルは /usr/local/etc/gitup.conf
です。gitup の pkg/ports をインストールすると /usr/local/etc/gitup.conf.sample
もインストールされているので、それをコピーします。デフォルトのサーバーで、ローカルパスとして /usr/ports や /usr/src を使用するならば特に変更しなくても使えます。
設定ファイルが用意できたら実行可能です。
再度 git ports
を実行してみましょう。
# gitup ports
# Host: git.freebsd.org
# Port: 443
# Repository Path: /ports.git
# Target Directory: /usr/ports
# Want: 375ae40f4dff2904b15d9a55fb3241f683dede7c
# Branch: main
# Action: clone
+ /usr/ports/.arcconfig
+ /usr/ports/.gitignore
+ /usr/ports/.hooks/pre-commit
+ /usr/ports/.hooks/pre-commit.d/check_category_makefile
+ /usr/ports/.hooks/pre-commit.d/check_created_by
〜(中略)〜
+ /usr/ports/x11/zenity/distinfo
+ /usr/ports/x11/zenity/pkg-descr
+ /usr/ports/x11/zenity/pkg-plist
#
# Please review the following file(s) for important changes.
# /usr/ports/UPDATING
# /usr/ports/mail/dspam/files/UPDATING
#
# Done.
これで ports の取得ができました。差分取得も同じコマンド gitup ports
で OK です。
同様に /usr/src の取得/更新も、current ならば gitup current
で行えます。
gitup は FreeBSD のベースに入れるという話もあるようです。portsnap や svnlite の代替を探している方は試してみてはいかがでしょうか。