Как настроить BeyondCompare на игнорирование замененного текста SCM в комментариях?
У меня есть некоторые текстовые последовательности, которые заменены на SCM (Perforce в моем случае).
Я хочу настроить BeyondCompare, чтобы рассматривать эти последовательности как несущественные различия, чтобы иметь возможность игнорировать их при сравнении файлов.
В моем случае речь идет об исходных файлах Python, а последовательности выглядят так:
# $Id: //depot/.../filename#7 $
# $DateTime: 2010/09/01 10:45:29 $
# $Author: username $
# $Change: 1234 $
Иногда эти последовательности могут быть за пределами комментариев, но даже в этом случае я хотел бы иметь возможность игнорировать эти строки, потому что они на самом деле не изменены.
2 ответа
Парсер Beyond Compare в настоящее время (v3/v4) не поддерживает вложенные элементы, поэтому грамматики форматов файлов нельзя использовать для маркировки последовательности SCM как неважной для определенного типа файлов, если текст уже классифицирован как комментарий, строка и т. Д.,
В Beyond Compare 4.0 добавлена поддержка маркировки произвольного текста как неважного для всего сравнения, отдельно от грамматики.
- Загрузите интересующие вас файлы
- Нажмите кнопку " Настройки сеанса" (также называемый " Правила с символом судьи") или используйте пункт меню "Сеанс" -> "Настройки сеанса".
- Переключиться на вкладку Важность
- Нажмите на
+
Кнопка внизу списка неважных текстов. - Добавьте обычный текст или регулярное выражение в Text, чтобы найти правку, и установите флажок Regular Expression, если это необходимо. В этом случае регулярное выражение будет:
\$(Id|DateTime|Author|Change):.*\$
- Нажмите Ok.
- По умолчанию эти изменения будут влиять только на текущее сравнение. Вы можете изменить поле со списком в нижней части диалогового окна "Параметры сеанса" с " Использовать только для этого представления" на " Также обновлять параметры сеанса по умолчанию", чтобы оно влияло на все будущие сравнения для всех типов файлов.
Вам нужно определить новый элемент грамматики (назовем его "SCM") и пометить его как неважный ( см. Учебник здесь; выберите "Basic" и обязательно отметьте "Regular Expression").
Элемент грамматики должен быть (если я правильно интерпретирую ваши примеры):
^.*\$(Id|DateTime|Author|Change):.*$
Это будет игнорировать любую строку, содержащую $Id:
, $DateTime:
и т.п.
Если вы хотите игнорировать только строки, начинающиеся с # $...
использовать
^\s*#s*\$(Id|DateTime|Author|Change):.*$
И если вы хотите игнорировать вещи между $
(и относитесь ко всему остальному как к важному), используйте
\$[^$\r\n]*\$
или же
\$(Id|DateTime|Author|Change)[^$\r\n]*\$
в зависимости от того, заботитесь ли вы об этих ключевых словах или нет.