理论上会不会出现, 2 个 pull request 都能通过测试,都不经修改直接 merge 后,反而通过不了测试? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
git
Pro Git
Atlassian Git Tutorial
Pro Git 简体中文翻译
GitX
vghdjgh
V2EX    git

理论上会不会出现, 2 个 pull request 都能通过测试,都不经修改直接 merge 后,反而通过不了测试?

  •  
  •   vghdjgh 2016-09-06 19:19:48 +08:00 3188 次点击
    这是一个创建于 3374 天前的主题,其中的信息可能已经有所发展或是发生改变。
    15 条回复    2016-09-07 11:03:01 +08:00
    winkidney
        1
    winkidney  
       2016-09-06 19:28:13 +08:00   1
    会的,两个组合起来触发一个 bug 。
    单个基于当前分支的修改都能过,两个一起会触发 bug 。
    说明测试有没有 cover 到的 情况
    binux
        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;
    msg7086
        3
    msg7086  
       2016-09-06 19:32:22 +08:00   1
    merge request 的测试必须要在当前版本上测。
    你第一次 merge 以后,测试结果已经无效了,必须重新跑两遍测试才行。
    binux
        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
    vghdjgh
        5
    vghdjgh  
    OP
       2016-09-06 20:54:54 +08:00
    现在好多开源项目,都是 pull request 隔好几周才 merge ,中间也有其它 pull request , merge 前不会重新运行 CI , merge 后看来还是有隐患的
    9hills
        6
    9hills  
       2016-09-06 20:59:43 +08:00 via iPad   1
    一般 merge 后还会触发一次构建。
    vghdjgh
        7
    vghdjgh  
    OP
       2016-09-06 21:24:30 +08:00
    @9hills 刚才试了一下,至少 travis CI 的界面上确实会触发一次 build 的。
    奇怪的是, Github 的 pull request 界面却没有地方会显示 merge 后那一个 build 的结果,显示的一直是 merge 前 build 的结果,页面上也没有跳过去的链接。
    我之前一直都没注意到 merge 后那一个 build ,估计别人也不容易注意到 merge 后的结果。
    9hills
        8
    9hills  
       2016-09-06 21:58:26 +08:00 via iPad
    @vghdjgh 是的,这个 merge 后的构建多数版本控制工具是不显示的。

    但是假如构建系统和发布系统打通,那么发布系统上应该显示这个主干是不可发布的。
    Senorsen
        9
    Senorsen  
       2016-09-06 22:00:49 +08:00 via Android   1
    GitHub 等平台可以开项目设置,要求 PR 必须含有保护分支所有 commit (新),还可以要求必须通过指定测试,才可以 merge 回保护分支,就可以解决 lz 的问题
    vghdjgh
        10
    vghdjgh  
    OP
       2016-09-06 23:07:37 +08:00
    @Senorsen 你说的是保证 merge 前通过测试,我在讨论的是 merge 后的那次测试是不是也能通过、能不能保证一定通过。

    我刚才发现, travis CI 会对 merge 后的那次测试结果提供 email 通知的,可以算是一种机制吧。
    Senorsen
        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 后的代码也可以通过测试
    Senorsen
        12
    Senorsen  
       2016-09-07 01:26:48 +08:00 via Android
    上边一处 typo : 指导测试 -> 指定测试
    Senorsen
        13
    Senorsen  
       2016-09-07 01:30:33 +08:00 via Android   1
    Require branches to be up to date before merging
    vghdjgh
        14
    vghdjgh  
    OP
       2016-09-07 06:51:37 +08:00
    @Senorsen 确实有这样的设置,选中“ Require status checks to pass before merging ”后才会显示这个选项
    Senorsen
        15
    Senorsen  
       2016-09-07 11:03:01 +08:00 via Android
    @vghdjgh 是的,没错~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5183 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 07:34 PVG 15:34 LAX 23:34 JFK 02:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86