[О блоге] [наверх] [пред] [2021-01-19 14:50:08+03:00] [6a4281c80dde3126ce414779d349aa1e0ddf67d0]
Темы: [hate]

Gitlab неюзабельное говно

Как же я его ненавижу, искренне. На работе в одном проекте попробовали
им пользоваться для отправки merge request-ов и их обсуждения.

Он совершенно рандомно (или не понятно для нас как именно) присылает
уведомления на почту о комментариях к коду. Короче что то присылает, а
что-то нет.

Ладно, чёрт с почтой -- я захожу в merge request и нигде не показывается
что у текущего diff-а есть комментарии над куском какого-то файла. Более
того, многие большие файлы свёрнуты. Если нажать на expand all чтобы
раскрыть колоссальные портянки текста, то... опять же, рядом с
комментариями нигде нет никаких слов "comment" или подобного -- текст я
могу искать только по дате или имени автора комментария (или тексту
комментария), которые, очевидно, я не могу знать заранее. В итоге мы в
почту пишем о том что написали там комментарий.

Отвечаю на комментарий и хочу отформатированный текст вставить (кусок
кода). Его предложение через меню о вставке "``" не поможет для
многострочного вывода. Никаких предложений об использовании <pre> нет --
догадался сам. Ввёл их -- жмакнул "edit comment" и вижу что ничего не
обновилось. Точнее он показалась что "edited just now", но
форматирование не обновлено. Ok, снова редактирую, жмакаю "preview",
вижу что всё ok, нажимаю снова edit и снова ничего не обновляется. Снова
повторяю, но уже добавляя просто случайный текст в конец, а не только
<pre> тэги -- помогло.

Когда мне надо вмёржить не default ветку своего репозитория в не default
ветку другого, то интерфейс позволяет выбрать src/dst ветки и
репозитории. Вот только при выборе dst ветки целевого репозитория -- моя
src сбрасывается. А при выборе src, после выбора dst, сбрасывается dst.
Что делать, как быть? А в момент git push Gitlab выдаёт ссылку, где в
GET параметрах указана src ветка (она то уж точно известна ему). Если
использовать именно эту ссылку для создания merge request, то появится
интерфейс вбивания комментария к merge запросу, но в котором если нажать
на change branches, то появится точно такое же меню выбора src/dst
веток, но которое уже будет работать!

Вмержить только часть коммитов -- неа, нельзя. Если только не руками,
конечно же. Про сам интерфейс просмотра изменений, где нельзя увидеть
всю историю push-ей и изменений коммитов -- молчу. Точнее вроде бы в
теории может быть и можно, видя что в URL-е есть всякие start_sha
параметры есть, но мне использовать его GET параметры как CLI что ли
какой-то?

Я уж понятия не имею Github такой же или это Gitlab такой неюзабельный и
корявый (или наш instance такой), но... работать с этим нельзя. Как бы
мне не нравился Gerrit своей Java-природой, дикими тормозами (хотя...
меньшими чем Gitlab) из-за JS-а, но в нём можно делать ревью по
человечески (c6f4f67e4f265306dfc762acfc0a22580c690cc5). Я то вообще
написал плагин для Vim-а чтобы ещё сильнее упростить и сделать этот
процесс более удобным. Но таких глюков и неработоспособностей как в
Gitlab в Gerrit нету.

А с другим коллегой на работе я просто по почте переписку вёл, отправляя
"ссылки" на свои обновлённые ветки -- это ещё более удобный способ. Но
требующий чтобы собеседники умели пользоваться email-ом (а для этого
нужен и работающий почтовый клиент само собой). Вот и выходит: на одной
чаше весов требование использования email-а и удобство ревью и
обсуждения патчей, а на другой чаше... почти неюзабельная возможность
работы. Ну и где-то ближе к середине Gerrit (и похожие на него решения),
который и не совсем удобен, но и не совсем неюзабелен.

    [оставить комментарий]
    комментарий 0:
    From: kmeaw
    Date: 2021-01-19 23:11:37Z
    
    Если не нравится веб-интерфейс GitLab, то можно не использовать его. У
    него есть документированный API:
    https://docs.gitlab.com/ee/api/api_resources.html
    
    Если есть какая-то удобная форма отчётов, то можно с помощью CI или
    webhooks сделать робота, который будет их рассылать по почте. Или даже
    совершать активные действия от имени пользователя, API позволяет
    делегировать действия роботам.
    
    Ещё мне нравится использовать gitlab-rails console, например:
    
    irb(main):008:0> User.pluck(:commit_email).compact.map{|e| e.split('@').last.downcase}.tally.max_by{|k,v| v}.first
    => "gmail.com"
    
    Но такой интерфейс, конечно же, доступен только администраторам, и
    использовать его следует крайне осторожно.
    
    комментарий 1:
    From: Sergey Matveev
    Date: 2021-01-20 07:09:30Z
    
    *** kmeaw [2021-01-20 02:04]:
    >Если не нравится веб-интерфейс GitLab, то можно не использовать его. У
    >него есть документированный API:
    
    Вместо того чтобы изучать ещё и его API и писать софт для него... проще
    не пытаться использовать, ибо был бы хоть какой профит. Ведь всё что я
    описал делается поверх git+email. Благо никто не заставляет на работе
    использовать Gitlab -- в нём просто хранятся репозитории.
    
    >Но такой интерфейс, конечно же, доступен только администраторам, и
    >использовать его следует крайне осторожно.
    
    Есть знакомые которые это хотели использовать и им администраторы
    отказали в доступе :-)