версионирование для нормальных людей, и там Jonathan Edwards задвинул идею, что мол «ациклический граф версий» это концепция для надмозгов, а простым людям понятнее линейная история и копии. Типа, захотел ветку — сделал копию, и у нее будет своя линейная история. Никаких ж/д стрелок на графе, просто ходишь взад-вперед, все просто и интуитивно.
И я в общем-то могу только симпатизировать, хотя кажется, за тем столом никто так же сильно не впечатлился, как я. Это из той серии, когда «взять концепцию, к которой все привыкли и смирились, и сделать ее нормальнее», как раз за что я и полюбил юзабилити изначально.
Потом я начал думать, может это уже где-то было, и если да, что пошло не так? Очень полезный check для всех новых идей, рекомендую.
В меркуриале (насколько я понимаю меркуриал) ветки как раз обладают практически своей историей, да? Т.е. можно их рассматривать как копии. Потом, в CVS или SVN (простите, не помню их настолько хорошо, чтобы вспомнить, у кого конкретно) тоже как-то так бранчевались (если мне память не изменяет, но я помню, там прям папки на серваке лежали, типа, branches/*). То есть оно в принципе именно так всегда и было _везде_, кроме git-а, но либо реализация была не оч (cvs/svn), либо с хостингом не повезло (mercurial).
Мне кажется, концепция checkout-а тоже немного запутала людей. Типа, внутри одной папки ты то на одну версию переключаешься, то на другую. А могли бы быть _буквально_ разные папки. Редакторы кода, я думаю, подтянулись бы.
Ну и наконец, универсализация. Операции типа merge/rebase/diff всегда работают над двумя копиями, но им в принципе не важно, ремоут они или локальные. На условном гитхабе тоже лежат разные папки для разных бранчей, и ты работаешь с ними точно так же, как с локальными копиями.
Т.е. пропадает отдельная концепция «синка графа» (довольно нетривиальная, давайте признаем). И никто не притворяется, что мол моя копия это как бы «зеркало» вон той удаленной, которое еще и разойтись может. Нет, просто две разные копии, два инстанса. Хочешь diff? Diff. Хочешь merge? Merge. Что локально, что удаленно, все едино.
Гитхаб частично это реализует с форками, но при этом бранчи остаются еще и внутри одного репозитория, и получается полный бананас, если обо всем этом начинать думать. А могло бы быть красиво и однообразно.
В общем, симпатичная как будто концепция. Что думаете? Пора писать современный SVN?
Имхо ко всему рано или поздно привыкаешь. А насколько описанная концепция жизнеспособна мы увидели бы только по факту ее реализации. И извлекли бы для себя уроки, как стоит (или не стоит) делать.
Я считаю что гит можно было бы действительно сделать проще
Очень многое можно сделать просто! Очень! Но вот как доходит до "делать" так нет никого, кто хочет делать или находится так мало, что у тех что есть не хватает рук
Зачем "прибивать гвоздями" один граф к другому? По-моему, именно в этом и гибкость distributed VCS. А если хотим без "зеркала" то зачем зеркалим локальными ветками? Работайте без них, напрямую с remote, как я. А по поводу версий - https://t.me/git_cool/58784
Обсуждают сегодня