У нас есть проект с компонентами, написанными в Excel / VBA.Мы используем Git в Azure Devops для контроля версий.
Другие компоненты написаны на C ++, и мы используем Visual Studio 2017 в качестве IDE.Мы используем проводник VS Team для операций git.Код VBA экспортируется и импортируется из Excel с использованием инструмента vbaDeveloper .Инструмент сравнения и слияния - это внутренний vsDiffMerge.exe.
После того, как коллега недавно перебазировал свою ветку разработки на master, код VBA был поврежден в казалось бы случайных местах.
Некоторые искажения указывают на то, что что-то пыталось проанализировать текст в соответствии с синтаксисом, например:
- Параметр «Явный параметр» был изменен на «Явный параметр включен» вмного мест ( VBA не имеет такого синтаксиса, но VB6 имеет)
- Добавлена скобка после вызовов подпрограмм ( VBA не делает 't разрешить это для подпрограмм, только для функций)
Другие виды искажения были просто случайными:
- Отсутствуют объявления параметров и переменных, а также функций
- Отсутствующие части кода
- Случайные символы в коде (например, китайские буквы)
Возможно ли, что vsDiffMerge.exe пытался быть слишком умным здесь и интерпретировать файлы исходного кода VBA(.cls, .bas, .frm) как VB6 / VB.NET и сделали некоторые собственные модификации?