User Tools

Site Tools


zh:submitting-patches

提交补丁

补丁可以通过推送向Github或邮件列表提交。

提交操作需遵循以下原则:

  • 请为每次推送使用不同的git分支,如果您是通过网页编辑文件,GitHub将自动完成该操作。
  • 使用祈使句描述提交主题和信息,如“增加对X的支持”,而不应是“增加了对X的支持”。
  • 格式化代码
    • 使用您正在修改文件中相同的缩进方式,使用Tabs还是空格取决于文件剩余部分所采用的方式。
    • 列表依字母顺序排序
  • 提交主题
    • 在提交时必须根据您所做的修改确定一个前缀
      • kernel: 适用于kernel和kmod(kernel module)的软件包
      • package name: 适用于软件包
      • device architecture: 适用设备。如, mvebu:ramips: add support to example_eval board
      • tool name: 适用于工具
      • build: 适用于无明确目的普通版本
    • 长度不能多于50个字符
    • 必须描述提交的变化内容及提交的必要性。
      尽管要简明扼要的描述并不容易,但描写得当的总结无疑应该做到。
    • 在前缀后请不要大写第一个单词
    • 主题末尾请不要使用句号
  • 提交描述
    • 每行长度不能多于75个字符
    • 内容将提交至资源修改日志中,因此您应该向读者解释您为什么提交
      包括您修复的错误症状(日志信息,错误信息等), 这对于那些想要通过查找提交日志来修复问题的人将至关重要
      如果是一个修复编译失败的补丁,请包含失败相关的部分日志。
    • 如果您添加了对新硬件的支持,提交描述中您应该对此硬件进行简短描述并说明如果将OpenWrt安装到硬件。可访问 recent additions 查看更多示例。
  • 所有提交应该包含 Signed-off-by: My Name <my@email.address> 在此写下您的真实姓名和真实的电子邮件地址,依照 第11章:Linux内核补丁指南
    • 在git命令行中使用以下代码,可自动完成该操作。
      git commit --signoff
  • 作者栏 必须 与“Signed-off-by:” 一致。
    • 如果您使用GitHub编辑文件并提交,您必须在GitHub设置中“Name”栏填写您的真实姓名,同时在“Signed-off-by:“中填写您Github帐户的首要邮件地址。
    • 如果您在PC本地编辑文件并提交,通过以下代码设置您的姓名和邮件地址
      git config --global user.name "my name"
      git config --global user.email "my@email.address"

使用Github

您可以在 这里 找到源代码库的Github镜像.
您可以在Github的网页上分支一个公共资源库,然后复制分支到您的电脑,用您所更改的内容创建分支并以Pull请求的方式推送给Github。

如果您不知如何完成以上操作,请继续阅读。

创建一个Github帐户,不仅可以让您可以从LEDE源码获得公众分支,而且还可以用于在Github上的互动交流。

在您的PC上安装git,使用以下代码确保本地git置中配置了正确的姓名和电子邮件地址。

git config --global user.name "my name"
git config --global user.email "my@email.address"

您或许想要将您喜欢的文本编辑器设为Github默认程序,如果您正使用拥有图形界面的Linux系统,您可以选择geanykwritepluma 或者 gedit
如果您正在使用命令行, nano 将是合适的选择.

git config --global core.editor "editor-name-here"

然后,follow高质量的关于 创建分支库在本地创建您的分支副本 的Github帮助文档。

当您完成发相应设备后,您可以使用以下命令来为您的PR创建一个分支:

git checkout -b my-new-branch-name

命令中”my-new-branch-name” 仅用于示例, 请为您分支使用一个更直观的名称 在此命令后您所有提交将以此分支分组。多个不同PR的分支可以共存。

使用以下命令,以便在您已创建的分支间切换:

git checkout my-branch-name

当您完成修改后,您可以使用以下命令并通过交互界面添加未被跟踪(即新的)文件和更新已存在的文件。

使用以下命令,可以打开git默认程序以便您添加描述信息:

git commit --signoff

第一行为提交的主题,然后空一行,接着是您本次提交的描述。 该命令会自动追加行,“Signed-off-by:”这一行,并在后紧跟您已设置的姓名和邮件地址信息。
一条完整的提交描述应该像这样:

The best code update.

This is the best piece of code I have ever submitted.
Signed-off-by: John Doe <John.Doe@test.com>

您可以使用以下命令将您本地修改发送到您的Github资源库:

git push --all

在此期间,会要求您输入Github用户名及密码。

在代码被上传至您的Github资源库后,您可以在Github网页版提交这个, 具体请查阅关于创建一个pull请求的文档。

通过邮件发送补丁

development mailing list发送一封邮件。 所有的补丁需要与以下页面所列内容保持一致的格式,patchwork。 如果补丁未在patchwork中列出,则该补丁将不会得到处理。 如邮件客户端会添加空格并打乱格式或添加不可打印字符时,我们强烈推荐使用 git send-email

梳理提交

提交到PR或通过电子邮件发送的提交应该描述您想合并的所有修改,而不是修复您的原始PR评论中的所有问题。

所以,您需要花费时间重写或梳理您的提交,最终形成合理数量的提交。

使用git命令行 修改您的开发文件夹 使用以下命令来查看您的分支,

git branch -a

分支信息将以以下形式展示:

  best_code_update
* master

使用以下命令,您想将PR转换为您的开发分支:

git checkout best_code_update

使用以下命令,您可以查看Git日志以便计算您想梳理的提交数量:

git log

使用以下命令,删除提交。X是您想删除的最新提交的数量,该命令仅会删除提交:

git reset HEAD~X

使用以下命令,可以将文件重新加入git跟踪:

git add -i

使用以下命令,重新提交:

git commit --signoff

使用以下命令可以发送更新分支到Github,在PR中的提交将会被自动更新:

git push -f

避免混乱的建议:

您可以通过以下代码使用 interactive rebase 来整合、重排或编辑您的提交及相关信息,X为需要编辑的提交数量。

git rebase -i HEAD~X

补丁合并及树的生命周期

我们鼓励高频的提交者主导他们自己的分级树,以便汇集由他们负责和(或)创建的补丁。一旦树经过审查和测试,就可以提议将其包含在主分支中。

  1. 树随时都可能被合并到主分支中
  2. 错误修复将直接合并到主分支
  3. PR可以从任何途径发送到补丁邮件列表。只要树的质量好且提交格式正确,将始终考虑包含该PR。
  4. 分级树可以作为项目的一部分被git基础架构、专用服务器或GitHub托管

补丁检查表

  1. 单个提交 (如上所述,多个提交会被挤压)
  2. 主题长度小于50个字符
  3. 主题后空一行
  4. 每行描述长度小于75个字符
  5. 使用 什么 描述来解释修改的内容
  6. 使用 为什么 来解释修改的原因
  7. 描述应该是有实际意义的
  8. Signoff行包含真实的姓名
  9. Signoff行包含真实的邮件地址
zh/submitting-patches.txt · Last modified: 2018/07/17 09:43 by lujimmy