1
winkidney 2016-09-06 19:28:13 +08:00 1
会的,两个组合起来触发一个 bug 。
单个基于当前分支的修改都能过,两个一起会触发 bug 。 说明测试有没有 cover 到的 情况 |
2
binux 2016-09-06 19:28:16 +08:00 1
a=1;
a= !a; assert(a) 1.patch - a=!a; 2.patch - a=1; + a=0; |
3
msg7086 2016-09-06 19:32:22 +08:00 1
merge request 的测试必须要在当前版本上测。
你第一次 merge 以后,测试结果已经无效了,必须重新跑两遍测试才行。 |
4
binux 2016-09-06 19:32:28 +08:00 1
你甚至可以要求原来的测试也能通过
a=True b=True assert a or b a.patch - a=True + a=False b.patch - b=True + b=False |
5
vghdjgh OP 现在好多开源项目,都是 pull request 隔好几周才 merge ,中间也有其它 pull request , merge 前不会重新运行 CI , merge 后看来还是有隐患的
|
6
9hills 2016-09-06 20:59:43 +08:00 via iPad 1
一般 merge 后还会触发一次构建。
|
7
vghdjgh OP @9hills 刚才试了一下,至少 travis CI 的界面上确实会触发一次 build 的。
奇怪的是, Github 的 pull request 界面却没有地方会显示 merge 后那一个 build 的结果,显示的一直是 merge 前 build 的结果,页面上也没有跳过去的链接。 我之前一直都没注意到 merge 后那一个 build ,估计别人也不容易注意到 merge 后的结果。 |
8
9hills 2016-09-06 21:58:26 +08:00 via iPad
|
9
Senorsen 2016-09-06 22:00:49 +08:00 via Android 1
GitHub 等平台可以开项目设置,要求 PR 必须含有保护分支所有 commit (新),还可以要求必须通过指定测试,才可以 merge 回保护分支,就可以解决 lz 的问题
|
10
vghdjgh OP @Senorsen 你说的是保证 merge 前通过测试,我在讨论的是 merge 后的那次测试是不是也能通过、能不能保证一定通过。
我刚才发现, travis CI 会对 merge 后的那次测试结果提供 email 通知的,可以算是一种机制吧。 |
11
Senorsen 2016-09-07 01:26:04 +08:00 via Android 1
@vghdjgh 我是指,比如可以设置成这样,要求保护 master 分支,满足两个条件
1. 只有通过指导测试(如 travis-ci )的 commit 才能合并到 master 2. 想合并到 master 分支的 PR ,必须没有 behind master 的 commit ,即合并前就保证 patch-1 分支与合并到 master 后的效果一致 通过同时应用两个规则,即保证 merge 后的代码也可以通过测试 |
12
Senorsen 2016-09-07 01:26:48 +08:00 via Android
上边一处 typo : 指导测试 -> 指定测试
|
13
Senorsen 2016-09-07 01:30:33 +08:00 via Android 1
Require branches to be up to date before merging
|