Как настроить 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 добавлена ​​поддержка маркировки произвольного текста как неважного для всего сравнения, отдельно от грамматики.

  1. Загрузите интересующие вас файлы
  2. Нажмите кнопку " Настройки сеанса" (также называемый " Правила с символом судьи") или используйте пункт меню "Сеанс" -> "Настройки сеанса".
  3. Переключиться на вкладку Важность
  4. Нажмите на + Кнопка внизу списка неважных текстов.
  5. Добавьте обычный текст или регулярное выражение в Text, чтобы найти правку, и установите флажок Regular Expression, если это необходимо. В этом случае регулярное выражение будет:
    \$(Id|DateTime|Author|Change):.*\$
  6. Нажмите Ok.
  7. По умолчанию эти изменения будут влиять только на текущее сравнение. Вы можете изменить поле со списком в нижней части диалогового окна "Параметры сеанса" с " Использовать только для этого представления" на " Также обновлять параметры сеанса по умолчанию", чтобы оно влияло на все будущие сравнения для всех типов файлов.

Вам нужно определить новый элемент грамматики (назовем его "SCM") и пометить его как неважный ( см. Учебник здесь; выберите "Basic" и обязательно отметьте "Regular Expression").

Элемент грамматики должен быть (если я правильно интерпретирую ваши примеры):

^.*\$(Id|DateTime|Author|Change):.*$

Это будет игнорировать любую строку, содержащую $Id:, $DateTime: и т.п.

Если вы хотите игнорировать только строки, начинающиеся с # $...использовать

^\s*#s*\$(Id|DateTime|Author|Change):.*$

И если вы хотите игнорировать вещи между $ (и относитесь ко всему остальному как к важному), используйте

\$[^$\r\n]*\$

или же

\$(Id|DateTime|Author|Change)[^$\r\n]*\$

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

Другие вопросы по тегам