我正在尝试自动化在我的胜利机上构建一些依赖项,即通过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