Как настроить BeyondCompare для игнорирования замененного текста SCM в комментариях?

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

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

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

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

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


person sorin    schedule 06.09.2010    source источник
comment
Раньше были параметры «Сравнить по правилам», где вы могли сказать, что комментарии были неважными различиями, однако я только что проверил свою версию (3.1.9), и кажется, что «Сравнить по правилам» было удалено? По крайней мере, я не могу найти. Какую версию ты используешь?   -  person James    schedule 06.09.2010


Ответы (2)


Синтаксический анализатор Beyond Compare в настоящее время (v3/v4) не поддерживает вложенные элементы, поэтому грамматики форматов файлов нельзя использовать для пометки последовательности SCM как неважной для определенного типа файла, если текст уже классифицирован как комментарий, строка и т. д. .

В Beyond Compare 4.0 добавлена ​​поддержка пометки произвольного текста как неважного во всем сравнении, отдельно от грамматики.

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

Вам нужно определить новый элемент грамматики (назовем его "SCM") и пометить его как неважный (см. руководство здесь; выберите «Основной» и обязательно отметьте «Регулярное выражение»).

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

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

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

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

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

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

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

or

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

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

person Tim Pietzcker    schedule 06.09.2010
comment
Я знаю, что есть небольшая вероятность ошибиться, но разве мы не должны игнорировать только текст между знаками $ в этих строках? - person sorin; 06.09.2010
comment
В ваших примерах строки состоят только из текста между знаками $, которому предшествует комментарий #, который, как вы сказали, не всегда присутствовал (хотя я с трудом могу себе это представить). Можете ли вы привести больше примеров? - person Tim Pietzcker; 06.09.2010
comment
В ПОРЯДКЕ. Я отредактировал ответ. Надеюсь, теперь я понимаю ваши требования. - person Tim Pietzcker; 20.09.2010
comment
Я не могу заставить это работать. Кажется, что правило грамматики комментариев подхватывает его раньше пользовательской грамматики. Можно ли пометить изменения элемента SCM внутри комментария как неважные, в то время как изменения комментария в целом по-прежнему важны? - person Tor Klingberg; 20.06.2014