在PowerShell脚本中应用补丁文件



我正在尝试自动化在我的胜利机上构建一些依赖项,即通过PowerShell脚本。我只是从github获取来源,通过cmake等构建。

在我的脚本中,我正在自动创建asm.patch文件。这是正确的补丁文件。如果我通过patch < asm.patch在UNIX环境上应用此补丁,则一切正常。我无法在我的PowerShell脚本上应用此补丁文件。

我尝试的东西,我安装了 patch的gnuwin32本地端口。在我的脚本中,我称其为patch -i asm.patch,因为PowerShell不允许我使用令牌<。它正确调用补丁命令。但是GNUWIN32补丁端口打开了与权限有关的对话框。因此,它对我的自动化需求没有用。

问题是,在PowerShell脚本上应用.patch文件的标准方法是什么?

git apply最终工作

我正在与一个临时生成的项目一起工作,以"忽略"文件夹。该补丁是针对临时项目的文件夹的,但是由于周围的GIT项目,我得到的只是Skipped patch

使用git init <TEMP_PROJECT_FOLDER>允许使用该补丁,尽管这可能不是您的必要条件。

其他提示:

  • --directory导致error: invalid path,因为PowerShell对路径中/的耐受性只是浅表(我聚集(。因此,需要更改当前工作目录
  • --verbose有帮助,但不是全面的
  • @moerwald的其他选项:--ignore-space-change --ignore-whitespace --whitespace=nowarn

git apply是替代方案吗?如果是这样,请尝试:

  invoke-expression "git apply --ignore-space-change --ignore-whitespace --whitespace=no warn file.patch

最新更新