代码之家  ›  专栏  ›  技术社区  ›  tao

如何应用/patches文件夹中的所有git.patch文件-npm

  •  0
  • tao  · 技术社区  · 6 年前

    我正在寻找一个git命令,bash脚本或npm方法(脚本)采取一切 .patch 文件夹中的文件并运行

    git apply --ignore-whitespace patches/{filename}
    

    git am --ignore-whitespace patches/*.patch
    

    上下文 (我要用它做什么)

    目前正在进行一个大型项目,使用了相当多的库。我们使用的是webpack,前端是Angular.js,后端是Yii2。因为dev同时使用linux和windows,所以项目是在docker映像中编译的。

    到目前为止,每当我们需要对库进行更改时,我们都会将其分叉并指定fork-in package.json

    "package-name":"git+https://github.com/{git-user}/{package-name}"
    

    还有。。。它起作用了。

    我最近发现了一个可以说是更好的方法来将补丁程序应用到模块中,那就是 patch-package . 简而言之,它避免了分叉,将更改保存在 文件。

    但是,仅创建修补程序文件是不够的。在部署时,还需要在构建之前应用它。这将转换为部署脚本中的以下行:

    docker exec -it {container-name} bash -c "git apply --ignore-whitespace patches/{package-name}+{package-version}.patch"
    

    它必须在运行之前运行 npm run build .


    问题

    我正在寻找一种方法来自动把每个文件都放进去 patches/ 文件夹并应用它们, 无需逐一说明 . 所以每当一个新的 .补丁

    我发现 this question 这似乎表明

    git am—忽略空白修补程序/*.patch
    

    可能会成功(当然是在docker控制台内部)。然而 man 第页,共页 git-am

    从邮箱应用一系列修补程序

    am 命令,控制台抱怨不知道我是谁(需要电子邮件和密码)。

    .sh 文件),读取文件夹中的所有文件并运行多个 git apply 中的命令 for ?


    使用npm脚本是否更有意义?

    1 回复  |  直到 6 年前
        1
  •  3
  •   ash    6 年前

    git am 也许可以,但对我来说,它抱怨说,它不能解决什么格式的修补程序,大概是因为它是用来申请从邮件修补程序。

    为什么不用呢 git apply ?

    而不是这样:

    git am --ignore-whitespace patches/*.patch
    

    git apply --ignore-whitespace patches/*.patch
    
        2
  •  0
  •   Renel Chesak    4 年前

    这对我有用。

    cat ./patches/*patch | git am

    它将修补程序文件的内容提供给 git am