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