Подтвердить что ты не робот

Как настроить BeyondCompare, чтобы игнорировать текст, замененный SCM, в комментариях?

У меня есть некоторые текстовые последовательности, которые заменяются SCM (Perforce в моем случае).

Я хочу настроить BeyondCompare, чтобы рассматривать эти последовательности как несущественные различия, чтобы иметь возможность игнорировать их при сравнении файлов.

В моем случае это о исходных файлах Python и последовательностях выглядит как

# $Id: //depot/.../filename#7 $
# $DateTime: 2010/09/01 10:45:29 $
# $Author: username $
# $Change: 1234 $

Иногда эти последовательности могут быть вне комментариев, но даже в этом случае я хотел бы игнорировать эти строки, потому что они действительно не изменены.

4b9b3361

Ответ 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]*\$

в зависимости от того, заботитесь ли вы об этих ключевых словах или нет.