【发布时间】:2018-08-25 01:53:03
【问题描述】:
我以前从未在 Git 中使用过补丁,我需要一些帮助。我正在尝试将补丁应用到 Git 存储库以测试 Wine 补丁,特别是 this patch here。所以我做了以下事情:
$ git clone git://source.winehq.org/git/wine.git
$ cd wine
$ nano patch.p1
然后我用 Ctrl+Shift+V 粘贴补丁的内容并使用 Ctrl+O 保存。然后我尝试了这个:
$ git am patch.p1
Patch format detection failed.
我做错了什么?我以前从未打过补丁。
【问题讨论】:
-
git am应用邮箱格式的补丁。你链接的那个不是。你可以在上面使用git apply。然而,补丁中的代码是非常荒谬的,除非有相反的条件(负数移位会产生未定义的行为)。 -
@torek 虽然I am having trouble compiling Wine,
git apply似乎有效,因为它没有给出任何错误。如果您想将该评论发布给补丁创建者:bugs.winehq.org/show_bug.cgi?id=44742 -
我没有登录,也不打算创建一个,除非我真正开始使用 Wine。但是:
+ if(MaskLength <= 32) + return ERROR_INVALID_PARAMETER; + *Mask = 0xffffffff << ( 32 - MaskLength );似乎测试应该是>=而不是<=。 32-33 = -1(如果无符号,则为 0xffffffff),这不是有效的<<值。但是我不知道这个函数的意图是什么。 -
我的问题是,我已经在windows中生成了补丁,并尝试在linux中应用,但它不起作用。我不得不在 Windows 中应用它。我相信这与两个 OS/Git 配置之间的 CRLF 设置有关