git apply patch似乎已经应用,但不断得到补丁错误



我运行以下命令来应用补丁,在第一次尝试中,它吐出了几个错误,说这些文件的补丁应用失败,在对这些文件进行更改后,我再次运行该命令,看到了一大堆其他错误。

git apply --ignore-space-change --ignore-whitespace patch-file

但是我检查了几个文件,看起来补丁是正确应用的,但是为什么会出现错误?下面的.rej和源文件不能帮助我调试原因

// c.rej
fi
fi
-    if [ "$qcrild_status" = "true" ]; then
+    multisim=`getprop persist.radio.multisim.config`
+
+    if [ "$multisim" = "dsds" ]; then
# Make sure both rild, qcrild are not running at same time.
# This is possible with vanilla aosp system image.
stop ril-daemon
// .c
fi
fi

multisim=`getprop persist.radio.multisim.config`

if [ "$multisim" = "dsds" ]; then
# Make sure both rild, qcrild are not running at same time.
# This is possible with vanilla aosp system image.
stop ril-daemon

补丁清楚地表明我们必须删除这一行:

-    if [ "$qcrild_status" = "true" ]; then

在应用此补丁的文件中似乎不存在这样的行。

补丁说,在删除该行时,我们应该添加三个替代行:

+    multisim=`getprop persist.radio.multisim.config`
+
+    if [ "$multisim" = "dsds" ]; then

显然,这些行已经存在了。因此,这个特殊的diff块可能已经文件的版本中,并且这个补丁-或者这个补丁的这一部分-不应该被应用。

当然,这只是一个猜测。这是补丁的一般问题:补丁说明如何更改某些特定文件(或至少是某些特定文件的某些特定版本),从而使其成为其他文件,或同一文件的某些不同版本。但是您可能有第三个版本的文件,或者您可能已经有了更新后的文件。在这种情况下,补丁不会应用,或者更糟的是,当不应该应用时,应用。

后一种情况发生时,例如,补丁只是说要添加已经出现多次的行的额外副本。例如,假设文件的一个版本说:

Just the place for a Snark.
Just the place for a Snark.

假设编辑-补丁-包含查找这一行的这两个出现的指令,并添加第三个:

Just the place for a Snark.
+Just the place for a Snark.
Just the place for a Snark.

当此补丁应用于文件的两行版本时,您将获得文件的三行版本。当将相同的补丁应用于三行版本时,您将获得行版本。如果这个补丁被应用了一千次,你得到的文件版本中出现了超过1000次的行。

(也许这使它更真实?或:

也许这只是鸟的音符
一个人应该永远小心,
鸟叫枣枣——你听说过这个词吗?
在一首你会在那边找到的诗里。

是的,我错过了奇数行的内部押韵。唉。)

相关内容

  • 没有找到相关文章

最新更新