English | 中文
感谢您对 tRPC-Go 的关注和支持!
我们欢迎并感激任何形式的贡献,包括但不限于提交 issue、提供改进建议、改进文档、修复错误和添加功能。 本文档旨在为您提供详细的贡献指南,以帮助您更好地参与项目。 在贡献之前,请仔细阅读本指南并确保遵循这里的规则。 我们期待与您共同努力,使这个项目变得更好!
项目欢迎代码补丁,但为了确保事情得到良好协调,您应该在开始工作之前讨论任何重大变更。 建议您在 issue 跟踪器中表明您的贡献意图,可以通过认领现有 issue或创建新 issue 来实现。
无论您已经知道要做哪些贡献,还是正在寻找想法,issue 跟踪器始终是您的第一个去处。 issue 会被分类以管理工作流程。
大多数 issue 都会被标记为以下工作流标签之一:
- NeedsInvestigation:issue 尚未完全理解,需要分析以了解根本原因。
- NeedsDecision:issue 相对已经理解得很好,但tRPC-Go团队尚未决定解决 issue 的最佳方法。 在编写代码之前最好等待决策。 如果一段时间内没有决策且您有兴趣处理处于这种状态的 issue,请随时在 issue 评论中“ping”维护者。
- NeedsFix:issue 已完全理解,可以编写代码进行修复。
除非是非常细小的变更,否则所有贡献都应与现有 issue 有关。 请随时打开一个 issue 并讨论您的计划。 这个过程让每个人都有机会验证设计,有助于防止工作重复,确保想法符合语言和工具的目标。 在编写代码之前,还可以检查设计是否合理;代码审查工具并非用于高层次的讨论。
在提交 issue 时,请确保回答以下五个问题:
- 您正在使用哪个版本的tRPC-Go?
- 您正在使用哪个操作系统和处理器架构(go env)?
- 您做了什么?
- 您期望看到什么?
- 您实际看到的是什么?
关于变更提案,请参阅向 tRPC-Go-Proposals 提议变更。
遵循 GitHub 流程来创建 GitHub PR(Pull Request)。
如果你是第一次向 tRPC-Go 项目提交 PR,那么在该 PR 的对话栏中会提醒你签署并提交贡献者许可协议。 只有当你签署过贡献者许可协议,你提交的 PR 才有可能被接受。 请记住以下几点:
- 确保您的代码符合项目的代码规范。 这包括但不限于代码风格、注释规范等。这有助于我们维护项目的整洁性和一致性。
- 在提交 PR 之前,请确保您已在本地测试过您的代码。 确保代码没有明显的错误并且可以正常运行。
- 要使用新代码更新拉取请求,只需将其推送到分支; 您可以添加更多提交,也可以 rebase 并 force-push(两种风格都可以接受)。
- 如果请求被接受,所有提交将被压缩,最终提交描述将由 PR 的标题和描述组成。 单个提交的描述将被丢弃。 请参阅以下“编写良好的提交消息”以获取一些建议。
tRPC-Go 中的提交消息遵循一套特定的约定,我们将在本节中讨论。
以下是一个良好的示例:
math: improve Sin, Cos and Tan precision for very large arguments
The existing implementation has poor numerical properties for large arguments, so use the McGillicutty algorithm to improve accuracy above 1e10.
The algorithm is described at https://wikipedia.org/wiki/McGillicutty_Algorithm
Fixes #159
变更描述的第一行通常是一个简短的一行摘要,描述变更的内容,并以主要受影响的包为前缀。
一个经验法则是,它应该被写成完成句子 "This change modifies tRPC-Go to _____." 这意味着它不以大写字母开头,不是一个完整的句子,而且确实概括了变更的结果。
在第一行之后空一行。
描述的其余部分应该详细说明,为变更提供上下文并解释它的作用。 像在 tRPC-Go 中的注释一样,使用正确的标点符号写完整的句子。 不要使用 HTML、Markdown 或任何其他标记语言。 添加任何相关信息,例如如果变更影响性能,请添加基准数据。 benchstat工具通常用于为变更描述格式化基准数据。
特殊表示法 "Fixes #12345" 将变更与 tRPC-Go issue 跟踪器中的 issue 12345关联。 当此变更最终应用时,issue 跟踪器将自动将该 issue 标记为已修复。
tRPC-Go 代码仓库中的文件不列出作者姓名,以避免混乱并避免不断更新列表。 而您的名字将出现在变更日志中。
您贡献的新文件应使用标准版权声明:
// Tencent is pleased to support the open source community by making tRPC available.
// Copyright (C) 2023 THL A29 Limited, a Tencent company. All rights reserved.
// If you have downloaded a copy of the tRPC source code from Tencent,
// please note that tRPC-Go source code is licensed under the Apache 2.0 License,
// A copy of the Apache 2.0 License can be found in the LICENSE file.
代码仓库中的文件在添加时受版权保护。 在变更文件时,请勿更新版权年份。