第 22.3 节 如何参与 FreeBSD 开发

翻译文档,提交 port 都是不错的方法,提交个 bug 也是好主意。

首先需要阅读一下:https://wiki.freebsd.org/Phabricator

里面说得很清楚了。需要先注册一个账号……关联 github 也是可以的。但是你的用户名会变得比较奇怪就是说……

代码的问题比较简单的解决方案就是用 github fork 原来的代码为主分支 main,保持不变,再创建一个新分支 B,用来开发修改之类的。

这样修改或者开发完成以后,将 main 分支 B 分支都同步到最新状态(网页上就有更新的按钮按一下即可),然后在分支 B 下执行命令:

$ git pull # 在任意分支下执行
$ git checkout B # 切换到分支 B 
$ git diff -U999999 origin/main > 2023-1-24.diff # 在分支 B 下执行
  • 示例:

root@generic:~ # git clone https://github.com/ykla/freebsd-ports
you have mail
Cloning into 'freebsd-ports'...
remote: Enumerating objects: 6264931, done.
remote: Counting objects: 100% (15563/15563), done.
remote: Compressing objects: 100% (9249/9249), done.
remote: Total 6264931 (delta 6507), reused 14986 (delta 6260), pack-reused 6249368 (from 1)
Receiving objects: 100% (6264931/6264931), 2.12 GiB | 10.73 MiB/s, done.
Resolving deltas: 100% (3615966/3615966), done.
Checking objects: 100% (16777216/16777216), done.
Updating files: 100% (161546/161546), done.
root@generic:~ # cd freebsd-ports/
root@generic:~/freebsd-ports # git branch -a
* main
  remotes/origin/HEAD -> origin/main
  remotes/origin/main
  remotes/origin/rpi-firmware
root@generic:~/freebsd-ports # git checkout rpi-firmware
branch 'rpi-firmware' set up to track 'origin/rpi-firmware'.
Switched to a new branch 'rpi-firmware'
root@generic:~/freebsd-ports # git diff -U999999 origin/main > 2024.diff
root@generic:~/freebsd-ports # ls -l 2024.diff
-rw-r--r--  1 root wheel 18021 Oct  6 03:59 2024.diff

这样把在分支 B 的根目录下生成的 .diff 文件上传到上面那个链接中 (字很小,仔细在右上角看一下),点右上角的 create 并填写完相关信息,进行审阅即可。

这个方法是我认为最简单的方法了。需要注意的是一次不要改太多……

提交完毕后,新建一个 https://bugs.freebsd.org/bugzilla 说明自己的修改地方,附上 https://reviews.freebsd.org 的链接,完成后,返回来在 https://reviews.freebsd.org 附上刚才的 bug 页面的链接。(不这样做的话可能很长时间没有人搭理你)

diff 是不会被认为是修改所产生文件的,下次 diff 时也不需要提前删除上一次留下的 diff 文件。

以上适用于 FreeBSD doc src 与 ports,还有少部分是在 github 上操作的,比如季刊报告。

这与封闭的 Linux 内核开发不同,任何人都可以参与修改 FreeBSD 的源代码。Linux 内核开发是需要发邮件给 Linux 内核中一个脚本执行的结果产生的邮件名单的,需要有人接受才可以。

一些可能用得到的命令:

  • 设置代理:

$ git config --global http.proxy http://192.168.1.169:7890
  • 查看所有分支

$ git branch -a
  • 切换到 A 分支

$ git checkout A

最后更新于

FreeBSD 中文社区 2024