Что означает "1 строка добавляет ошибки пробела" означает при применении патча?

Я редактирую некоторые файлы разметки клонированного удаленного репозитория и хотел протестировать создание и применение патчей из одной ветки в другую. Однако каждый раз, когда я делаю какие-либо изменения, во время git apply появляется следующее сообщение:

0001-b.patch:16: trailing whitespace.
warning: 1 line adds whitespace errors.

(Это происходит на моем Mac, и я не знаю, где был создан исходный код.)

Что означает предупреждающее сообщение, и мне нужно заботиться?

Ответ 1

Вам не нужно заботиться.

Предупреждение вводит стандарт чистоты текстовых файлов в отношении пробелов, о чем, как правило, заботятся многие программисты. Как руководство объясняет:

То, что считается ошибкой пробела, контролируется по конфигурации core.whitespace. По умолчанию конечные пробелы (включая строки, которые состоят исключительно из пробелов) и пробел символ, за которым сразу следует символ табуляции внутри начальный отступ строки считается ошибкой пробела.

По умолчанию команда выводит предупреждающие сообщения, но применяет патч.

Таким образом, "ошибка" означает, что изменение вводит конечное пустое пространство, только пробельную строку или пробел, предшествующий вкладке. Помимо этого факта, нет ничего ошибочного в отношении изменения, и оно будет применяться чисто и правильно. Другими словами, если вы не заботитесь о "неправильном" пробеле, не стесняйтесь игнорировать предупреждение или отключать его с помощью git config apply.whitespace nowarn.

Ответ 2

Одним из случаев, когда вы можете законно заботиться, является то, что вы хотите различать "старую" ошибку whitespase (которую вы можете захотеть сохранить по старой причине) и "новые" ошибки пробелов (которые вы хотите избежать).

Для этого Git 2.5+ (Q2 2015) предложит более конкретную опцию для обнаружения пробелов.

См. совершает 0e383e1, 0ad782f, и d55ef3e [26 мая 2015 г.] Юнио С Хамано (gitster).
(слияние Junio ​​ в commit 709cd91, 11 июня 2015 г.)

diff.c: --ws-error-highlight=<kind> опция

Традиционно мы заботились только об объявленных пробелах в новых строках.
Некоторые люди хотят рисовать пробелы на старых линий тоже. Когда они видят разрыв прошивки на новой строке, они может выявить тот же самый разброс пробела на соответствующем старой линии и хочу сказать: "Ах, эти поломки есть, но они были унаследованы от оригинала, поэтому не трогайте их сейчас".

Ввести параметр --ws-error-highlight=<kind>, который позволяет им проходить список, разделенный запятыми old, new и context, чтобы указать какие строки выделяют ошибки пробелов.

Документация включает в себя:

--ws-error-highlight=<kind>

Выделите ошибки пробела в строках, указанных <kind> в цвете, указанном color.diff.whitespace.
<kind> представляет собой список, разделенный запятыми old, new, context.
Если эта опция не указана, выделяются только пробельные ошибки в строках new.

например. --ws-error-highlight=new,old выделяет пробельные ошибки как для удаленных, так и для добавленных строк.
all может использоваться как короткий для old,new,context.

Например, у старого коммита была одна ошибка пробела (bbb), но вы можете сосредоточиться только на новых ошибках (в конце still bbb и ccc):

old and new shitespace errors

(тест выполняется после t/t4015-diff-whitespace.sh)

Ответ 4

Поскольку строка начинается с TAB istead SPACE. Перейдите в файл исправления и замените TAB на SPACE. Например. на vim on line + из файла патча типа x, чтобы удалить пробел, а не удалить знак + и вставить пробел (CTRL) на eqiv до исходного размера.