如何统一自动化PR合并前的标准变基与压缩操作(不限基分支)
PR合并自动化问题梳理
项目PR合并标准
- 仅保留单个提交
- 需变基至
pr_target_branch的最新提交 - 提交信息需包含工单编号及描述
当前手动操作流程
我负责多个分支,上述标准统一,但流程无法完全自动化,手动步骤如下:
- 查看
git log找到分支分歧点:通常是类似commit LAST_SHA_BEFORE_MY_BRANCH (upstream_branch_name, branch_name)的记录,该点可能是PR目标分支,也可能是我之前的PR分支(PR合并受阻时会出现分支层级:TICKET-10-branch->TICKET-07-branch->TICKET-02-branch->pr_target_branch) - 执行以下命令:
git reset --soft LAST_SHA_BEFORE_MY_BRANCH git commit -m "Description message" -m "TICKET: #TICKET_NUM" git fetch upstream_repo_remote pr_target_branch git rebase FETCH_HEAD git push -f
自动化的两个核心难点
- 确定分支分歧点:尝试通过正则解析
git log但安全性不足 - 确定目标基分支:希望从分支谱系中找到首个不含
TICKET-XXX格式的分支,但不知如何获取该分支列表
git merge-base尝试的问题
git merge-base --fork-point HEAD返回的是偏离父分支的首个提交SHA,而非需要重置到的分歧起始提交SHAgit merge-base --fork-point parent_branch能返回正确SHA,但无法确定父分支名称,陷入循环困境
内容的提问来源于stack exchange,提问作者Tomáš Zato
相关产品推荐
相关产品推荐

