Я использую Подвижный (конкретно TortoiseHg в Windows), чтобы сделать управление версиями кода VBA. Кто-либо, кто попробовал это, знает, что VBA изменяет случай каждой переменной в течение проекта каждый раз, когда любое объявление той переменной изменяется где угодно в проекте (независимо от объема). Это делает управление версиями кошмаром.
Я хотел бы проигнорировать изменения случая в своем исходном коде при выполнении diffs. Что самый легкий путь состоит в том, чтобы сделать это? (некоторая опция для разности, которую я пропускаю, внешняя различная утилита, что-то еще?)
Примечание: Я не говорю о контакте с 'нечувствительными к регистру именами файлов (да, я говорю с Вами Google...),
Вы можете сделать это, сравнивая потребление на экране, используя 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-подобных языков, который нормализует регистр переменных и запускает его в ловушке непрерывной фиксации. Тогда по крайней мере весь код, входящий в систему управления версиями, будет согласован, и вы сможете точно различать версии.
Если вы не против, чтобы ваш код был написан только в нижнем регистре, то вы можете использовать для этого обработчики кодирования / декодирования . Это будет работать следующим образом:
[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 .