Почему этот патч применен к фаззу 1 и потерпел неудачу с фаззу 0? - PullRequest
4 голосов
/ 02 июня 2011
$ vim patch
Index: toPatch
===================================================================
--- toPatch
+++ toPatch
@@ -2,4 +2,4 @@
  */
-final public class XMLWriter {
+public class XMLWriter {

$ vim toPatch
 */
final public class XMLWriter {

  public static float CURRENT_VERSION=2.2f;
    $ patch -p0 -ui patch
patching file toPatch
Hunk #1 succeeded at 1 with fuzz 2 (offset -1 lines).

Почему пух и смещение линии?Это демонстрационный пример, пытающийся понять diff и patch, так как инструменты иногда / часто не работают должным образом.

Ответы [ 2 ]

15 голосов
/ 02 июня 2011

Patch выполняет базовую проверку согласованности diff и вашего файла, и если эти проверки не пройдены, вы получите смещение или размытие.

У вас есть смещение -1, так как patch ожидает содержимое сравнения diffстроки 2--4 вашего файла.В вашем файле, однако, это строки 1--3.

У вас есть fuzz> 0, поскольку первая строка контекста (два пробела и */) не соответствует строке в фактическомфайл (один пробел и */).Из-за этого, patch сделал второй проход, где он проигнорировал первую и последнюю строку контекста.

Это не объясняет, почему вы видите fuzz = 2, а не 1. Возможно, ошибка копирования-вставкифайлы?Любые другие идеи, кто-нибудь?

4 голосов
/ 27 января 2016

Неправильные индексы в вашем файле patch (числа между @@).

  • Как сказал @xofon, у вас проблема со стартовой строкой, у вас есть 2 , но должно быть 1
  • Но и второе число должно быть 3 , а не 4 , поскольку у вас есть 3 строкикод в файле patch до применения исправления и 3 строки кода в файле patch после применения исправления.
  • , но с первой строкой */ проблем нет.В файле patch есть 2 пробела, но это ожидается, поскольку в первом столбце используется символ - + или .Полученный вами fuzz касался используемого смещения (смещение всех строк на 1)

Таким образом, ваш файл patch должен быть

$ cat patch
--- toPatch
+++ toPatch
@@ -1,3 +1,3 @@
  */
-final public class XMLWriter {
+public class XMLWriter {
   public static float CURRENT_VERSION=2.2f;

и с указанным toPatchfile

$ cat toPatch
 */
final public class XMLWriter {
  public static float CURRENT_VERSION=2.2f;

Тогда патч будет применяться без предупреждений fuzz ...

$ patch -p0 -ui patch
patching file toPatch
...