Удобный инструмент для проведения CodeReview


#1

Подскажите пожалуйста.
Разбираюсь с GIT’ом и не могу понять как удобно делать кодревью? У меня сейчас на сервере поднят Gogs и GitLab. Пробовали делать в ГитЛабе Merge Request (в Гогсе Пулл реквест вообще не сделался - ошибка 404), оказалось что читать/сравнивать код в ГитЛабе очень не удобно, т. к. он показывает только кусочек кода который изменился + соседние 10 строчек, а в процедуре их 300. Хочется в идеале сравнивать код как в 1С по процедурно, ну или хотябы помодульно, но чтобы весь модуль отображалься и по нему была удобная навигация. Может быть в VS Code можно как-то сравнить две ветки? Или может есть еще какой то удобный инструмент для сравнения веток и коммитов?


#2

По умолчанию показывает действительно только строки, в которых есть различия + контекст, в котором эти строки существуют (“соседние 10 строчек”), но остальной код тоже есть, просто он скрыт (скриншот) - нужно нажать на три точки в столбце с номерами строк и тогда откроются следующие строки и так далее можно развернуть весь модуль.

Использую Gogs, все нормально там с PR. А вот инструмента для Code Review в нем нет пока.
В Getea - форк Gogs - сейчас пытаются встроить (см. PR#733) поддержку git-appreise, это такой любопытный инструмент для инспекций кода, который хранит данные в самом репозитории GIT.

В вашем вопросе мне кажется есть некая путаница: код ревью - это не просто возможность сравнения, а возможность сравнивать + комментировать и обсуждать код, и прежде всего именно обсуждать в контексте конкретного коммита/тикета/ишью/задачи.

А так инструментов сравнения полно разных, включая git diff, который есть из коробки + встроенные инструменты в любом GIT-клиенте (SourceTree, GitExtensions), а также как отдельные инструменты (Kdiff3, WinMerge, Meld), но в общем случае попроцедурно обычно они не сравнивают, это фишка 1С. VSCode не использую, но уверен, там по-любому есть плагин какой-нибудь для сравнения или вызова внешнего инструмента сравнения.


#3

Про три точки я вкурсе. Дело в том что жать три точки долго и не очень удобно. Возможно я просто избалован конфигуратором 1С) Но всёже не удобно. Как я уже писал хочется сравнивать хотябы помодульно чтобы сразу весь модуль был открыт, чтобы не жать в модуле из 5000 строк кнопку с тремя точками 250 раз, да еще и когда таких модулей штук 20.

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

Я так понял что это в консоли. Если да, то это очень не удобно, особенно для больших 1Сных конфигураций с большим количеством изменений.

Возможно я чегото не понимаю, но я почемуто не нашел функционала для сравнения коммитов/веток в SourceTree, я даже не нашел как сравнить разные версии одного и тогоже модуля. GitExtensions не пробовал.

Они убого выглядят и не имеют подсветки синтаксиса 1С =) Я когда это всё убожество увидел, понял что конфигуратор 1С это вообще офигенная вещь)

VS Code вообще отличная вещь, очень удобная, очень нравится, есть подсветка синтакисиса, удобная навигация по коду, куча полезных расширений доступно. Но к сожалению не нашёл ни встроенного функционала для сравнения покатоложно, ни сторонних плагинов никаких. Нашёл только как сравнивать разные версии одного и тогоже модуля.


#4

Напомню, что тот же kdiff3 можно использовать не только из консоли, а прямо из конфигуратора. Он ещё и гуевый.
В meld недавно появилась подсветка 1с


#5

А еще есть инструменты v8diff и v8reader, которые умеют разбирать бинарные файлы 1С, и сравнивать полученные исходники.
Там же есть и попроцедурное сравнение.
Есть небольшие проблемы при работе с Гит -

  • они прекрасно работаю с бинарники, но происходит полный разбор собственными средствами v8reader
    Я так внешние обработки сравниваю уже несколько лет.

  • с исходниками конфигураций/обработок, полученными из штатной выгрузки 1С, работать не умеют.

Я сам очень любил раньше попроцедурное сравнение, часто им пользовался и для 1С 77, и для 1С 8, но в последние 3-4 года совсем редко его использую, только в случае “больших” расхождений/мержей.

Так что можно и без попроцедурного сравнения вполне обходиться :slight_smile:


#6

Есть аналог v8reader на Питоне с попроцедурной раскладкой. Пока в стадии разработки, постепенно переходим к тестированию.