Нечувствительный к регистру diffs в Подвижном

Я использую Подвижный (конкретно TortoiseHg в Windows), чтобы сделать управление версиями кода VBA. Кто-либо, кто попробовал это, знает, что VBA изменяет случай каждой переменной в течение проекта каждый раз, когда любое объявление той переменной изменяется где угодно в проекте (независимо от объема). Это делает управление версиями кошмаром.

Я хотел бы проигнорировать изменения случая в своем исходном коде при выполнении diffs. Что самый легкий путь состоит в том, чтобы сделать это? (некоторая опция для разности, которую я пропускаю, внешняя различная утилита, что-то еще?)

Примечание: Я не говорю о контакте с 'нечувствительными к регистру именами файлов (да, я говорю с Вами Google...),

7
задан mwolfe02 5 March 2010 в 22:40
поделиться

2 ответа

Вы можете сделать это, сравнивая потребление на экране, используя ExtDiff Extension .

  [extensions]
  hgext.extdiff =

  [extdiff]
  # add new command that runs GNU diff(1) in case-insensitive mode
  cmd.mydiff = diff
  opts.mydiff = -i

Затем вы должны запустить hg mydiff из командной строки. Это, конечно, требует, чтобы у вас был установлен бинарный файл diff, будь то GNU или другой.

Однако это не будет столь полезным, как вам хотелось бы, потому что внутренне, конечно, Mercurial не может игнорировать регистр - он берет криптографический хэш содержимого файла, а они не оставляют места для маневра. Итак, если вы настроите эту настройку, вы выполните hg mydiff и не увидите никаких изменений, а затем выполните hg commit и увидите изменения повсюду.

Таким образом, вы можете заставить это работать на экране, но не принципиально.

Один из вариантов - найти визуальный базовый очиститель кода, похожий на indent для C-подобных языков, который нормализует регистр переменных и запускает его в ловушке непрерывной фиксации. Тогда по крайней мере весь код, входящий в систему управления версиями, будет согласован, и вы сможете точно различать версии.

7
ответ дан 6 December 2019 в 23:04
поделиться

Если вы не против, чтобы ваш код был написан только в нижнем регистре, то вы можете использовать для этого обработчики кодирования / декодирования . Это будет работать следующим образом:

[encode]
*.vba = tr A-Z a-z

Это будет кодировать содержимое файла в нижнем регистре всякий раз, когда вы выполняете фиксацию. Различия также вычисляются на основе закодированной (репозиторийной) версии файлов.

Рассмотрим файл, содержащий

hello

. Изменение его в вашей рабочей копии на

Hello World

даст разницу в

% hg diff
diff --git a/a.txt b/a.txt
--- a/a.txt
+++ b/a.txt
@@ -1,1 +1,1 @@
-hello
+hello world

. Обратите внимание, что прописные «H» и «W» были проигнорированы.

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

Одним из недостатков является то, что вам нужно установить это правило кодирования для всех ваших репозиториев. Здесь вам может помочь расширение reposettings .

2
ответ дан 6 December 2019 в 23:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: