【问题标题】:Apply a patch only if it doesn't break anything仅在不破坏任何内容时才应用补丁
【发布时间】:2017-10-23 12:56:07
【问题描述】:

仅当试运行选项不返回错误时,我才尝试应用大量补丁。

但目前我只能尝试或应用所有补丁:

for i in /home/me/patch/*.patch; do patch -Np1 -f --dry-run < $i; done

因此不应应用生成“hunk FAILED”的补丁。

如果有人有想法。谢谢

【问题讨论】:

    标签: linux bash patch


    【解决方案1】:

    尝试以下 grep 方法:

    for i in /home/me/patch/*.patch; do 
        if ! grep -q 'hunk FAILED' <(patch -Np1 -f --dry-run < $i); then
            patch -Np1 -f < $i
        fi
    done
    

    或验证patch 退出状态(使用-s(--silent) 选项):

    for i in /home/me/patch/*.patch; do 
        if patch -Np1 -f -s --dry-run < $i; then
            patch -Np1 -f < $i
        fi
    done
    

    【讨论】:

    • 为什么不只是if grep,不需要[[]]$()
    • @123,在这种情况下我们应该添加-q 选项,看我的更新
    • 聪明,但我测试它只适用于找到结果“hunk FAILED”的补丁。
    • @r516086 是的,应该是if ! grep
    • 是的,完美。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 2018-07-17
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 2019-09-06
    相关资源
    最近更新 更多