Представление diff в PHPStorm "игнорировать пробелы" просто работает . Он автоматически игнорирует различия в возврате каретки / EOL / newline / what-have-you. Вы можете тратить свое время на игры с тайными командами Unix или чем-то еще, или вы можете просто получить что-то, что действительно работает и двигаться вперед с жизнью.
- Использование любого из вышеперечисленных решений на Mountain Lion не удалось (включая решение, помеченное как правильный ответ). Все ссылки для загрузки "Diff-npatch" не удалось. (Я нашел http://webperso.easyconnect.fr/bdesgraupes/tools.html, но мне действительно не нравится идея прибегать к использованию инструмента diff, который не может быть вызван из командной строки и таким образом интегрирован с любым инструментом IDE или VCS, который я мог бы использовать, как BBEdit, SourceTree или SmartSVN - и все они, BTW, не смогли игнорировать переводы строки с помощью встроенного инструмента сравнения.
Да, мои новые строки \ r, но что с того? Arrr! Если программное обеспечение слишком глупо, чтобы понять, что \ r == \ n, тогда я просто собираюсь использовать другое программное обеспечение, которое достаточно достаточно умное.
PHPStorm был единственным программным обеспечением, которое имело инструмент сравнения, который «только что работал» - именно этого я ожидаю от программного обеспечения Mac. Я ожидаю, что программное обеспечение Mac просто будет работать . Я использую Mac, так что я могу выполнять свою работу вместо изучения тайных команд терминала на каждом шагу, которые почти все плохо документированы, ожидая, что вы просто поймете, как команды должны быть отформатированы без каких-либо четких примеров, так что вы никогда не узнаете, вы делаете это неправильно или если команда просто не работает , как и все другие плохие программы. Возьмите этот пример из "man diff":
-I RE --ignore-matching-lines=RE
Ignore changes whose lines all match RE.
Хорошо, прочитав это, я понятия не имею, что это значит. Там нет примера его использования. Что такое "RE"? Это нигде не сказано.
Тогда есть этот драгоценный камень:
--GTYPE-group-format=GFMT
Similar, but format GTYPE input groups with GFMT.
--line-format=LFMT
Similar, but format all input lines with LFMT.
--LTYPE-line-format=LFMT
Similar, but format LTYPE input lines with LFMT.
LTYPE is `old', `new', or `unchanged'.
GTYPE is LTYPE or `changed'.
GFMT may contain:
%< lines from FILE1
%> lines from FILE2
%= lines common to FILE1 and FILE2
%[-][WIDTH][.[PREC]]{doxX}LETTER
printf-style spec for LETTER
LETTERs are as follows for new group, lower case for old group:
F first line number
L last line number
N number of lines = L-F+1
E F-1
M L+1
LFMT may contain:
%L contents of line
%l contents of line, excluding any trailing newline
%[-][WIDTH][.[PREC]]{doxX}n
printf-style spec for input line number
Either GFMT or LFMT may contain:
%% %
%c'C' the single character C
%c'\OOO'
the character with octal code OOO
Я не мог иметь никакого смысла в этом отрывке. Что такое «вход»? Это оба файла или просто файл "to" или просто файл "from"? Что означает «подобное»? Что означает «есть» в предложении, «GFMT» означает «LTYPE или« изменен »»? Означает ли это «может быть заменено»? Если так, то почему «GFMT» не в кавычках или скобках и т. Д.? Поскольку пример не приводится, нет способа узнать; формулировка документации совершенно неоднозначна. Что означает "GFMT может содержать" ... означает? Означает ли «содержать», что текст, заменяющий аббревиатуру GFMT, может содержать это? Без четкого примера это совершенно бесполезно.
Зачем вообще писать справочную страницу, если вы собираетесь сделать ее настолько загадочной и двусмысленной, что она бесполезна для тех, кто в принципе не знает, как использовать программное обеспечение? В этот момент это не руководство; Это просто краткая справочная страница для парней, которые написали программное обеспечение, чтобы они могли вспомнить, как его использовать. Я предполагаю, что они предполагают, что вы просто прочитаете сам исходный код, если хотите знать, что он на самом деле делает.
Мое время ценно. Я предпочел бы просто заплатить деньги, чтобы иметь программное обеспечение, которое действительно работает правильно и имеет надлежащую документацию.
Потому что все это не удалось:
diff -d --strip-trailing-cr --ignore-all-space --from-file=rest.phtml test.phtml
... не удалось игнорировать символы \ r.
diff -wd --strip-trailing-cr --ignore-all-space --from-file=rest.phtml test.phtml
... не удалось игнорировать символы \ r.
diff -wd --suppress-common-lines --strip-trailing-cr --ignore-all-space --from-file=rest.phtml test.phtml
... не удалось игнорировать символы \ r.
diff -wd test.phtml rest.phtml --suppress-common-lines --strip-trailing-cr --ignore-all-space
... не удалось игнорировать символы \ r.
diff -awd test.phtml rest.phtml --suppress-common-lines --strip-trailing-cr --ignore-all-space
... не удалось игнорировать символы \ r.
Впрочем, если они были \ n символами, то при добавлении \ n символов также не получалось.
Где test.phtml ==
Foo
бар
и rest.html ==
Foobar
Команда "diff" всегда дает вам что-то вроде:
* 1,2 **! фу! bar \ Нет новой строки в конце файла
--- 1 ----! foobar \ Нет новой строки в конце файла
... провал!