跳过正文
Background Image
  1. Posts/

提升代码可追溯性:一招把 PR 描述写入 Git commit

·878 字·2 分钟· ·
沈显鹏
作者
沈显鹏
目录

背景
#

最近和同事讨论了一个看似简单但很重要的问题:

我们如何确保 PR 中有价值的信息不会随着时间和工具的更替而丢失?

虽然我们日常使用 Bitbucket 来协作开发,但未来也许会迁移到 GitHub、GitLab 等平台。这些托管平台可能会变,但 Git 本身作为代码历史的记录核心,很可能还会长期存在。

问题也就来了:

PR 页面里描述的变更背景、解决思路和关键讨论,如果只保存在 PR 工具里,就很可能在平台迁移后“消失”。而这些信息,本应是 commit message 的一部分。

我们讨论过的一些方案:
#

  1. git commit -m 时手动记录问题的解决方式 —— 但容易被忽略或写得不完整。
  2. 模仿 pip 项目使用 NEWS 文件 来记录每次变更 —— 虽然能保留信息,但这种方式更适合用于生成 release note,而不是记录修改的动机或原因。
  3. 强制要求成员把内容写在 Jira ticket 中 —— 工具间割裂,不利于在代码上下文中快速理解历史。

最终我们决定:使用 Bitbucket 的 Commit Message Templates 功能,把 PR 的描述直接写入 Git commit 中。

Bitbucket 的 Commit Message Templates 功能
#

Bitbucket 支持在合并 PR 时自动生成 commit message,并允许通过模板插入有用的信息。文档地址如下: 🔗 Pull request merge strategies - Bitbucket Server

我看到了 GitLab 也有类似的功能,但 GitHub 似乎没有。

参考 GitLab Commit Templates 官方文档

你可以在模板中使用以下变量:

变量名说明
titlePR 标题
idPR ID
descriptionPR 描述
approvers当前已批准的审阅人
fromRefName / toRefName源 / 目标分支名称
fromProjectKey / toProjectKey源 / 目标项目
fromRepoSlug / toRepoSlug源 / 目标仓库
crossRepoPullRequestRepo跨仓库 PR 的源仓库信息

我们是怎么用的?
#

在 Bitbucket 的仓库设置中,你可以配置 PR 的合并提交模板,找到设置:

Repository settings -> Merge strategies -> Commit message template

配置后,当你在 PR 页面合并时,Bitbucket 会自动把 PR 的标题、描述、相关 ID 等内容写入最终的 merge commit message 中。

这样,不管将来团队是否继续使用 Bitbucket,PR 的关键信息都将永远保存在 Git 历史中

下面是实际效果:

📥 配置模板界面:

Bitbucket 模板配置界面

📤 最终生成的 Git commit message:

最终合并 commit 的样子

总结
#

这项改动虽然小,却帮助我们从流程上保护了代码变更的上下文。它让 PR 不再是“临时信息容器”,而是自然地成为 Git 历史的一部分。

如果你也在使用 Bitbucket,不妨试试这个功能。

让 Git commit message,不只是代码提交,更是决策和演进的记录。


转载本站文章请注明作者和出处,请勿用于任何商业用途。欢迎关注公众号「DevOps攻城狮」

相关文章

建议在 Bitbucket/GitHub 中启用的仓库设置
·599 字·2 分钟
列出 Bitbucket 和 GitHub 仓库推荐启用的设置,包括禁止强制推送、分支保护、标签管理、合并检查以及提交信息规范等。
Error: Permission denied (publickey)
·276 字·1 分钟
本文介绍了如何在配置多个 SSH Git Key 时解决 “Permission denied (publickey)” 错误,确保 GitHub 和 Bitbucket 的 SSH 连接正常工作。
🚀 gitstats 升级来袭:支持 JSON 输出、多平台兼容、代码重构!
·557 字·2 分钟
gitstats 经过两个月的持续改进,现已支持 JSON 输出、代码重构、argparse 替换 getopt,并全面兼容 Windows 和 macOS。欢迎使用和 Star 支持!
2023 年开源状况和人工智能的崛起(GitHub)
·7338 字·15 分钟
本文介绍了 GitHub 发布的 2023 年开源状况和人工智能的崛起报告,分析了开发者社区的增长、生成式 AI 的应用以及云原生技术的发展趋势。
靠谱:在不删除和重建 GitHub 仓库的情况下与父(Fork)仓库分离(Unfork)
·693 字·2 分钟
本文介绍了如何通过 GitHub Support 实现与父仓库的分离,避免删除和重建仓库带来的数据丢失问题,帮助开发者更好地管理 Fork 的仓库。
通过 generic-webhook-trigger 插件实时获取 Bitbucket Repository Events
·716 字·2 分钟
本文介绍如何使用 Jenkins 的 generic-webhook-trigger 插件来实时获取 Bitbucket 仓库的事件信息,如 Pull Request ID 等。