FreeBSD 12.0のリリースが近づいているので、いろいろ確認してみています。FreeBSDのメインのソース管理はSVNですがgithubにもコピーがあるので私はgitで操作しています。
プランチの流れはこのようになっていたようです。
FreeBSDでは修正はheadに入れてそれをMarge From Current(MFC)してそれぞれのブランチに反映します。
12-CURRENTの頃にレビューしてhead(master)に入れてもらった物はstable/12ブランチそのままでいけますが、まだレビュー中の物やレビューに出してない独自のソースも含めてビルドしたい場合以下のようにします。
レビュー中の物を反映
% arc export --revision D13583 --git | patch -V none
他のブランチから反映
% git checkout zrouter -- sys/geom/geom_flashmap.c
上の操作で以下のような状態になります。
% git status
On branch stable/12
Your branch is up to date with 'upstream/stable/12'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
modified: sys/geom/geom_flashmap.c
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: sys/conf/options
modified: sys/fs/tmpfs/tmpfs.h
modified: sys/fs/tmpfs/tmpfs_vfsops.c
このツリーをビルドすると、起動時にdirtyと表示されます。
FreeBSD 12.0-BETA4 #0 e78279655eb(stable/12)-dirty
元に戻す方法は以下になります。checkout .だと他のブランチから持って来た物が戻らないようです。
% git reset --hard HEAD
上の二つのパッチはリモートアップデートをおこなうための物です。一つはtmpfsのサイズのチェックのworkaroundでもう一つはdtsのパーティションマップのfirmwareからrootfsを探し出すパッチです。これらで問題なくリモートアップデートが出来るので、確認が簡単にできます。