使用git切换分支
大约在NetBSD 9版本结束时,我fork了一个HEAD(trunk)并进行了我的开发提交,偶尔也会从官方库中pull一些更新。但是在10.99.6版本后,出现了大量冲突导致无法继续pull。
我认为可能是在安装gcc12(之前是gcc10)时出现了问题。由于NetBSD最初是通过Git进行镜像和通过CVS管理源代码,所以偶尔会出现异常。
由于没有办法,我决定先回归到netbsd-10基础上。这是因为HEAD已经使用gcc12,可能还存在问题。没有必要冒着风险去获取锅中的栗子。
由于现有文件没有做过修改,几乎都是新文件,所以可以通过复制文件进行重建。但是为了难得的机会,我们打算保留迁移的记录提交。
准备NetBSD-10分支。
git remote add upstream https://github.com/NetBSD/src.git
git fetch upstream
git checkout -b netbsd-10 upstream/netbsd-10
在原分支上创建自己提交的清单。由于旧的在下面,所以进行反向排列。
git log --author="Hiroki Mori" --pretty=format:%H > /tmp/id
tail -r /tmp/id > /tmp/id.rev
由于最后一行没有换行,导致第一行和最后一行连在一起,我手动修复了它。
将其应用于NetBSD-10分支。
cat /tmp/id.rev | git cherry-pick --stdin
由于错误发生在正在pull的commit上,而不是在自己的修正上,所以我们需要回退并再次尝试直到成功。
git cherry-pick --abort
vi /tmp/id.rev
还有更聪明的方法。虽然我在使用Git时尽量避免复杂操作,但我进行了各种研究。
由于构建后obj目录仍然存在并引发错误,因此我果断删除了它。
find . -type d -name obj -prune -exec rm -rf {} \;
因为看起来没有问题,所以我已经上传到GitHub了。
git push origin netbsd-10
因为上升带宽很窄,所以花了相当长时间。
我在当天的交通状况下准备了早晨9点左右的分支,并在12点后进行了推送。

古老的架构开发,由于相关部分几乎没有改动,所以在开发过程中很少会引发冲突,这是它的优点。
在此找到有关10的发行的页面。
将本家的更新合并进来的方法如下所示。
git merge upstream/netbsd-10