我正在尝试通过Powershell脚本自动在Win机器上构建一些依赖项。我只是从Github获取资源,通过CMake等构建。对于依赖项之一,我需要从pull请求中应用补丁。
在我的脚本中,我正在自动创建asm.patch
文件。这是正确的补丁文件。如果我通过patch < asm.patch
在Unix环境上应用了此补丁程序,则一切正常。但是,我无法在我的Powershell脚本上应用此补丁文件。
我尝试了一下,我安装了patch
的GnuWin32本机端口。在我的脚本中,我将其称为patch -i asm.patch
,因为Powershell不允许我使用令牌<
。它会正确调用patch命令。但是GnuWin32修补程序端口会打开一个与权限相关的对话框。因此,这对我的自动化需求没有用。
问题是,在Powershell脚本上应用.patch
文件的标准方法是什么?
答案 0 :(得分:0)
git apply
是否可以替代?如果是这样,请尝试:
invoke-expression "git apply --ignore-space-change --ignore-whitespace --whitespace=no warn file.patch
答案 1 :(得分:0)
git apply
最终奏效
我正在使用 git 'ignored' 文件夹中的临时 generated project。该补丁面向临时项目的文件夹,但由于周围的 git 项目,我得到的只是 Skipped patch
。
使用 git init <TEMP_PROJECT_FOLDER>
允许应用补丁,尽管这对您来说可能不是必需的。
其他提示:
--directory
导致 error: invalid path
,因为 PowerShell 在路径中对 /
的容忍度只是表面的(我认为)。所以需要改变当前的工作目录。--verbose
有帮助但不全面--ignore-space-change --ignore-whitespace --whitespace=nowarn