Не верь, не бойся, не проси - [entries|archive|friends|userinfo]
phantom

[ website | My Website ]
[ userinfo | ljr userinfo ]
[ archive | journal archive ]

[Apr. 19th, 2021|11:58 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
Про гит (каламбур)*

Известно, что гит по юзабилити - говно редкое.* А документацию писали или полудурки какие-то, или генератор бреда.* Такую простую идею, как content-addressable DAG испоганили. Уж молчу про гитхаб и подобные свинофермы.

Но прошло 15 лет, опенсорщики надрачивали на своих кумиров, корпоративные рабы чувствовали себя более автономными с гитом (читай: менее рабами), и он стал мировым стандартом. Теперь никуда от него не деться. Думаю, лет на 20 мы с ним застряли, минимум.

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

Взялся налабать утилиту себе, поставив одновременные задачи:
1. Отзеркалить набор репозиториев с гитхаба себе в директорию.
2. По возможности, вообще, без истории, - кому она нужна, кроме гробокопателей и некрофилов всяких?
3. Обновлять регулярно, чтобы была последняя версия всегда (не всегда она рабочая, однако).
4. Чтобы код можно было читать, билдить, накидывать свои изменения при необходимости и т.д.
5. Не трафик оптимизировать и время, а минимизировать размер и количество файлов в гитовой базе данных.
6. Не трекать чужие ветки, максимум, иметь только свои нетреканные, в т.ч. убивать нах локальный master.
7. Абсолютный порядок: весь мусор из гитовой БД убрать в пизду, в т.ч. пустые поддиректории, рефлог и пр.

Удивительно, что никто из авторов гита и гитхаба не подумал о таком простом юскейсе люркера, который не хочет ни региться нигде, ни "социально" кодить, как они понимают эту "социальность", ни вообще, может, не кодить, а тупо (свежий) код читать или запускать. Конкретно правило 6 может принести море проблем, и если не хочешь сидеть ни на каком локальном брэнче, а только на ремотах, то гит превращается в "безголовую" курицу (самоназвание), на которой уже не поездишь, в отличие от "локальных" брэнчей. (Заметки на полях: тут могла бы быть шутка о двуголовой курице с российского герба, но не будем уподобляться разным садковым).

И вот, потратив примерно месяц фулл-тайма, перелопатив сотни веб-страниц, поставив тысячи экспериментов, разобрался. И налабал свою либу на 20кб (а было бы 100кб, если бы на си каком-нибудь писал), - чтобы отгородиться от гитового дерьма раз и навсегда. А дерьма хватает, git - это хаотично разросшийся bloatware, чем-то напоминающий энтерпрайзное говнецо. Впрочем, полностью отгородиться невозможно, абстракция дырявая и течёт Ниагарским водопадом.

В общем, выделил я 5 уровней отзеркаливания гитхаб репозиториев для разных случаев и выписал апдейт и переходы между соседними:
gitless <-> shallow <-> single <-> full <-> mirror

gitless. Вообще без .git-директории. Достаточно для чтения кода и сборки. Для обновления нужно сохранить url и текущий хэш.

shallow. Один коммит в базе. Достаточно, когда своё дописываешь поверх верхнего коммита. При апдейте ребейзить.

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

full. Если бедлам такой, что, чтобы нормально работать с проектом, нужны все брэнчи и история. Ну, или свой проект. Или чужой, и туда постоянно в апстрим кидать патчи надо. Это уровень типичного клона.

mirror. Тут для любителей в говне мамонта покопаться: можно с гитхаба все PR-рефы качнуть. Полнее дерьма лопата будет, только если .git/ вручную копировать, она-лопата только хуки не включает и ещё чо-то там. Можно и своё дописывать, и даже на "удалённые" брэнчи, которые благодаря рефспеку становятся локальными, и просто гомогенными. Но главное, потом не удалить их случайно, а то отличить чисто своё-добавленное-локальное от ремотного становится не так просто.

Пока разбирался, пришлось даже в исходный код гита заглядывать. Там тоже быдлокодеры какие-то пейсали. Особенно умилительно видеть, как при вызове функций параметры собираются в кучку, передаются как строка, чтобы другая функция их распарсила опять. Это нонсенс!.. Молчу уж про анахронизмы типа багтрекера на мэйл-листах. Такой вот передовой проект.

Короче, построил я себе плотик для навигации по океану дерьма, которое из себя гитхаб и гитлаб представляют. Буду плавать... ходить теперь, под коричневым парусом. Ну, и докопался до дна этой ямы, типа эксперт теперь... в гите.
LinkLeave a comment

Comments:
From:(Anonymous)
Date:April 19th, 2021 - 11:44 pm
(Link)
иди нахуй
From:(Anonymous)
Date:April 20th, 2021 - 10:43 am
(Link)
>при вызове функций параметры собираются в кучку, передаются как строка, чтобы другая функция их распарсила опять

чем это объяснимо?
[User Picture]
From:[info]geladen
Date:April 20th, 2021 - 11:02 am
(Link)
полагаю, попыткой впихнуть новые аргументы под старые спецификации, не декларируя официальный deprecate и не вводя новых функций.
From:[info]phantom
Date:April 20th, 2021 - 11:23 am
(Link)
А я думаю, раз гит - это в юниксовом стиле набор комманд-лайн утилит как бы, то это попытка унификации интерфейса, чтобы не рассинхронизировать случайно вызовы в стиле CLI и вызовы в стиле С. Это говорит и о программистах, что им предпочтительней думать на языке командной строки, чем на языке функций С. То есть говорит о них как о быдлокодерах.

Возможно, была ещё идея, чтобы легче дебажить было и логгить точные команд-линии на интерфейсах между верхними функциями (= отдельными утилитами). Для этого я ожидал найти в команде git самой флаг типа --debug, но нет его там, и в коде не видно было такого.
[User Picture]
From:[info]geladen
Date:April 20th, 2021 - 11:00 am
(Link)
ну ты упорный. я на том же самом в своё время сломался. разобрался с необходимым минимумом, и забил, благо для важных дел не нужно.
а либа доступна?
From:[info]phantom
Date:April 20th, 2021 - 11:42 am
(Link)
Да сам удивляюсь... но, вообще, не удивляюсь. Тренирую силу воли. Обычно-то я стараюсь обходить препятствия, а не в стену долбиться. Но вот местами сменил концепцию. Однако, месяц, считай, из жизни вычеркнут. В данном случае, вроде, не зря, в долгосрочной перспективе должно окупиться, но всё равно многовато.

Либу без зависимостей, для ознакомления, сбросил на:
https://pastebin.com/w65ykD2K - через неделю протухнет.
Кроме меня оно неюзабельно, много багов и заточено под мои нужды. Я-то багов не боюсь, и фикшу по ходу, если что. А другие вряд ли разбираться захотят.

Чтобы для других сделать нормально, нужно раз в 10 больше времени потратить, а я ужо не молод время так тратить (на то, что всё равно никто юзать не будет). Хотя ваще я за опенсорс... участвовал как-то в опен-сорс проекте... посрались, ушёл по-английски. :)
From:(Anonymous)
Date:April 20th, 2021 - 11:58 am
(Link)
>участвовал как-то в опен-сорс проекте... посрались

таков любой опен-сорс
From:[info]phantom
Date:April 20th, 2021 - 12:36 pm
(Link)
Ну, вот странно. Как будто на рабочих местах недостаточно напряжённости и срача всякого.

В опен-сорсе, куда ходят отдохнуть от работы, должно быть как у монашек: мило, легко, без напрягов, братско-сестринские отношения или хотя бы как на курорте.
From:(Anonymous)
Date:April 20th, 2021 - 12:49 pm
(Link)
>как у монашек

а как у них? при задавленом либидо, и прочем умерщвлении плоти
From:[info]phantom
Date:April 20th, 2021 - 01:04 pm
(Link)
Спасибо, что спросил. И я отвечу! У них, как в анекдоте, хехе.

В женском монастыре:
Настоятельница: Сестры, к нам в монастырь привезли морковь.
Монашки: Ура Ура Ура
Настоятельница: Что вы дуры радуетесь, она же тертая.
From:(Anonymous)
Date:April 20th, 2021 - 01:30 pm
(Link)
крынжова, и Настоятельница токсичная
From:[info]phantom
Date:April 20th, 2021 - 01:54 pm
(Link)
Ну, там, вроде, нормальные пацаны были, на РСДН-е, сейчас вот вспоминается. Может, это я асоциальный уже был тогда. Примерно, так дело было:

- Сестра, суп почти готов, ты почистила морковку?
- Нет, и не буду.
- Так суп без морковки не выйдет нормально.
- Тебе надо, ты и чисти.
- Бля, ты ж, вроде, за морковку была ответственная.
Координатор: - Сестра права, ты не прав.
- В смысле?
- Ну, ты попей пиво, подумай.
- ... (подумал "ебитесь тут конём сами" и ушёл).

До сих пор не понял, что это было. Может, дело в алкоголизме и ассоциированым с ним типом мышления? Я-то ни пива не пью, ни другого спиртного, мне их логику не понять. Но пацаны были норм, насколько помню.
[User Picture]
From:[info]geladen
Date:April 20th, 2021 - 05:50 pm
(Link)
> без зависимостей, для ознакомления

мерси! мне чисто почитать подход было любопытно.
From:(Anonymous)
Date:April 20th, 2021 - 05:09 pm
(Link)
а что не говно тогда?
From:[info]phantom
Date:April 20th, 2021 - 05:40 pm
(Link)
Из контроля версий? Читал, что меркуриал лучше гита.

В идеале, надо своё написать, это было бы самое лучшее. Но VCS-ы как бы для совместной работы, поэтому не совсем тот случай.

Впрочем, есть у меня идеи, куда нужно двигаться, - в первую очередь перестать дрочить на "историю", таймстемпы, цифровые подписи и прочий информационный шум.
From:(Anonymous)
Date:April 20th, 2021 - 09:21 pm
(Link)
дочитал пост до конца, уже чувство, будто до дна деревенского сортира добрался
From:[info]phantom
Date:April 20th, 2021 - 09:34 pm
(Link)
Тогда самое время послушать песню Сектор Газа - Сельский туалет!
[User Picture]
From:[info]dece
Date:April 21st, 2021 - 09:43 am
(Link)
>документацию писали или полудурки какие-то, или генератор бреда.*

Так, вроде ж, какой-то ёбаный хохол вонючий ёбаный вонючий ёбаный, ничего удивительного ггг
From:[info]phantom
Date:April 21st, 2021 - 10:17 am
(Link)
Линус Торвальдс хохол??
From:(Anonymous)
Date:April 26th, 2021 - 07:07 pm
(Link)
у этого поца все хiхлi кто не русский
а русские в 17 закончились, он последний