将git的patch.exe视为Windows行尾

时间:2014-10-02 10:41:51

标签: windows git patch

Git for Windows有一个patch.exe程序,可以将补丁应用于文件。虽然效果很好,但它会将所有修补文件的行结尾从Windows CRLF更改为Unix LF。在为几个文件应用补丁之后,我现在需要在文本编辑器中修复它。

还有来自UnxUtils的patch.exe,但今天似乎不再有用了。它总是想要我没有给予的行政权利。

是否有一些未记录的命令行选项告诉Git的补丁使用并保留Windows行结尾,而我们是在Windows平台上?

1 个答案:

答案 0 :(得分:0)

UnxUtils patch.exe要求管理员权限的原因是由于其名称。 Microsoft选择自动承担名为Setup或Patch的程序,或者在描述资源中使用这些单词时应该在运行时需要管理员权限。要禁用它,您需要一个指定所需权限的清单。您可以添加名为' patch.exe.manifest'的清单文件。在与patch.exe文件相同的目录中进行定义。或者您实际上可以将其作为清单资源嵌入。我的清单如下:

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="patch.exe" type="win32"></assemblyIdentity>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
        </requestedPrivileges>
       </security>
  </trustInfo>
</assembly>

这并没有真正触及您在Windows上应用补丁的问题。我在我的系统上使用core.autocrlf = true并且没有使用cherry-pick或git am遇到问题或者应用所有使用补丁来应用更改。 Git for Windows附带的补丁版本已经过多次测试,应该可以正常工作。可能你直接使用补丁,也许使用&#39; git apply&#39;应用补丁文件可能会更好吗?