2020年12月末にFreeBSDのソースコード管理がSubversionからGitへと移った。将来的に/usr/src
の更新にもgitを使うことになると思われる。現状、Handbookの解説はsvnを使った方法のままだが、そのうち更新されるだろう。一足先にreleng/13.0を使いたいのでgitに移行してみた。
参考資料は↓このへん:
リポジトリは↓ここ:
以下の方法はオレオレ式で、FreeBSDプロジェクトの公式方法ではないので注意。
何はともあれgitをインストール。
# pkg install git
/usr/src
の中身を消す。過去にmake worldしたことがある人は、オレオレカーネルコンフィグファイルとかがあると思うので間違って消さないよう気をつけて下さい。.svn
フォルダの削除も忘れずに。
# cd /usr/src # rm -rf * .*
Gitリポジトリからソースコードを取得する。
何もせずに取得(クローン)すると変更履歴をローカルに全て持つことになる。いち利用者としては過剰なので、–depth
で取得範囲を制限する。同オプションを使うと、mainブランチ―FreeBSDで言うところのCURRENTしか取得されないので、–no-single-branch
を加えて他のブランチ情報を取得するようにする。
# pwd /usr/src # git clone -o freebsd --depth 1 --no-single-branch https://git.freebsd.org/src.git .
なお、当方の環境では/usr/src
が独立したZFSデータセットとなっており、中身を空にしても.zfs
ディレクトリは常に存在する。Gitの「ディレクトリが空じゃないよ」エラーでクローンできなかったため、いったん/usr/src/gitsrc
にクローンし中身を/usr/src
に移す方法を採った。
# pwd /usr/src # git clone -o freebsd --depth 1 --no-single-branch https://git.freebsd.org/src.git gitsrc # mv gitsrc/* . # mv gitsrc/.* . # rmdir gitsrc
クローン完了後、git branch -r
でreleng/13.0などのブランチがだらら~と表示されればOK。
13.0-RELEASEブランチに切り替える。
# git checkout releng/13.0
実のところ特定ブランチだけなら、-b
オプションでgit clone -o freebsd -b releng/13.0 –depth 1 https://git.freebsd.org/src.git /usr/src
とすれば良い。こっちの方がディスクの消費量も少ないし。
ただまぁ、どうせgit使うならブランチ情報込みで持っといた方が、今後13.1-RELEASEなどが出てきた時もgit pull
してgit checkout
するだけで良くなるので、面倒がないかなーと。
(2021-02-18 追記)
他のライブラリなどに依存しない、軽量gitクライアントとしてnet/gitupが用意されている。名前のとおりnet/svnupのGit版の位置づけっぽので、ソースコードのクローンしかできなさそう。
ソースコードを取ってくるだけなら、gitupを使った方が依存関係ができなくていいかも?