同时合并无冲突PR时,GitHub Actions能否保证main分支原子性?
合并无冲突但逻辑依赖的PR时,GitHub的合并原子性问题
我有两个已通过单元测试(UT)的独立PR,但合并其中一个会导致另一个失效,且二者不会产生合并冲突。举个简单例子:PR#1将函数foo()重命名为bar()并修改所有现有调用;PR#2新增对foo()的调用。
现有代码
void foo() { printf("Hello!\n"); } void user() { foo(); // end of user }
PR#1(重命名函数并修改现有调用)
-void foo() { +void bar() { printf("Hello!\n"); } void user() { - foo(); + bar(); // end of user }
PR#2(新增对foo()的调用)
// end of user } + +void another_user() { + foo(); +}
GitHub Actions Workflow 配置
name: Build on: push: branches: main pull_request: jobs: build-project: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: threeal/cmake-action@v2
不同合并顺序的影响
- 先合并PR#1:PR#2会因
foo()不存在而失效,需手动将调用改为bar()。 - 先合并PR#2:PR#1会因未更新新增的
foo()调用而失效。
核心疑问
若同时点击两个PR的合并按钮,GitHub是否能保证操作的原子性——即一个合并成功,另一个失败?还是可能二者的检查都通过并完成合并,最终导致main分支损坏?
内容的提问来源于stack exchange,提问作者Dominik Kaszewski
相关产品推荐
相关产品推荐

