Easy-RSA 3极客指南
本文档面向希望在现有代码库基础上进行改进的程序员
兼容性
easyrsa代码是用POSIX shell编写的(任何情况下都不被认为是有错误的)唯一的例外是关键字local和创建变量(construct) export FOO = baz。
因此,对代码的修改也应为POSIX;平台特定的代码应该放在distro/
目录下,并按目标平台列出。
编码约定
虽然没有与项目相关的严格语法标准,但请 尽可能遵循现有的格式和流程;但是,特定的例外 如果有重大原因或收益,可以进行。
请尝试:
- 尽可能将变量保留在本地范围内(locally-scoped)
- 注释代码部分以提高可读性
- 将约定(conventions)用于全局变量的前缀
- 设置编辑器,将制表位设置为8个空格
- 使用制表符来缩进代码,控制台文本使用对齐的空间
使代码,文档和示例保持同步
调整,添加或删除功能的更改应具有相关的文档,帮助 输出,并同时更新示例。
发布版本控制
前端接口时需要点释放凸点(例如:3.0到3.1) 以非向后兼容的方式进行更改。总是假设某人有一个 依赖当前官方功能的自动化流程 (非Beta,非rc)版本。可能存在的错误修正存在例外 打破向后兼容;在这种情况下要小心。
添加新命令可能需要也可能不需要点释放,具体取决于 功能的重要性;其他可选内容也是如此 命令的参数。
项目布局
该项目的文件结构如下:
easyrsa3 /
是主要的项目代码。在Linux / Unix上,所有核心 代码和支持文件存储在这里。Licensing /
适用于许可证文档。build /
用于生成信息和脚本。contrib /
用于外部贡献的文件,例如有用的外部文件 其他系统/语言的脚本或界面。distro /
用于发行版特定的支持文件,例如Windows 前端包装器。与平台无关的代码组件应该出现 这里。doc /
用于文档。其中大部分是Markdown格式,可以是 轻松转换为HTML,以便在Windows下轻松查看。release-keys /
列出了用于签署发布包的当前和以前的KeyID (不一定是git标签)可供下载。- 顶级目录包含用于基本项目信息和参考的文件 适当的位置以获取更多详细信息。
简要说明一下,实际上可以只取easyrsa3 /目录并结束 完成一个功能项目;其余结构包括文档,构建准备, 特定于发行版的包装器和贡献的文件。
Git约定
从Easy-RSA 3开始,应使用以下git约定。这些主要是 对于具有回购访问权限的人很有用,以保持提交的标准含义 消息和合并操作。
###签署者:及相关的提交消息行
具有推送访问权限的提交者应确保在以下位置存在”签名人:”行 提交消息的末尾,上面有他们的名字。这表明 提交者已审查对相关提交的更改并批准 有关功能和代码。它还有助于验证代码是否来自 不会导致许可证问题的可接受来源。
这可以由git使用git commit -s
自动添加。
也可以包括其他参考。如果有多个人查看了 更改后,提交者可以在其他”签名人:”中添加其名称: 线;确实在使用其姓名之前先获得该人的许可;但是)
以下参考也可能有用:
Sign-off-by:
-上面已讨论过,表示已审核提交Author:
-引用特定功能的作者,完整或完整 重要部分Changes-by:
-表示所列方做出了更改或 对功能的修改Acked-by:
-表示对功能,代码和/或功能的审查 正确性
###从外部来源(forks, patches, etc)合并
贡献可以有多种形式:来自克隆的GitHub”拉请求” 回购,对外部回购的引用,ML的补丁或其他。那些不会 必要的话必须有”签名者:”行,否则提交中的信息可能较少 消息,而不是解释更改所希望的。
在这种情况下,该项目的提交作者应进行合并提交 在此提供适当的详细信息。如果要更改其他代码 必要时,可以先在本地分支上完成,然后再合并到 主线分支。
该合并提交应列出具有”Author:”或类似名称的相关贡献者 所需的行。 合并中涉及的各个提交也保留了 原始提交者; 无论如何,合并提交消息应给出清晰的 指示整个提交集合总体上是做什么的。
###标记
标签应遵循以下约定:
vM.m.p
其中”M”是主要版本,”m”是次要的”point-release”版本,并且 p是补丁程序级别。 可以为-rc#,-beta#等后缀添加 所需的预发行版本。
当前,标签来自相关的主线开发分支。 的 因此,ChangeLog应该在标记之前进行更新。 标签也应该是 带有适当的提交消息并已签名。 可以做到 如下所示(除非您打算将GPG与git一起使用,否则不要使用-s。)
git tag -a v1.2.3
可以将相应的发行下载上载到发行分发点 按要求。