Как стать автором
Обновить

Комментарии 25

А как же Perforce, TFS?

Из интересных был ещё bazaar, который кроме своих, умел подцеплять репозитории других типов (svn, git) почти как родные. Запомнился по launchpad. А также darcs на хаскеле, способный решать сложные конфликты благодаря какой то своей математике для патчей, но порой уж ооочень тормозной.

Да, базар был хорош, я помню с трудом переходил с него на гит в 2009 с его 100 командами. Базару не хватало графических/всяких утилит, на мой взгляд.

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

Для версионирования бинарных файлов есть git-lfs, bitbucket умеет визуализировать изменения в изображениях.

Офигенно, спасибо
Имхо, pijul.org

Если коротко — другой подход к патчам, разрабатывается под влиянием теории категорий, системы darcs и довольно сильно отличается от последнего в плане алгоритмов.

Пару примеров для иллюстрации.

Первый: cherry-pick в git теряет информацию об авторстве. Черипикнув в свою ветку чей-то коммит, вы будете обречены на поддержку изменений и разрешение конфликтов. В pijul эта операция происходит гладко: система контроля версий не забывает о том, что этот коммит был притащен извне; при последующем слиянии веток случайных конфликтов не будет.

Второй: в pijul патчи можно таскать между репозиториями любым способом, хоть путем штатной синхронизации по сети, хоть голубями. Результат применения патча не будет зависеть от того, каким образом он был получен.
  1. Поправка: автора как раз cherry-pick сохраняет, только всё равно создаёт новый коммит, не связанный с оригинальным (наверное Вы это и имели в виду).
  2. В гите тоже все по-своему патчами обмениваются. Тот же Linux разрабатывается по электронной почте.
Спасибо за исправления. Да, я имел в виду, что теряется информация об источнике изменений, а не об авторстве. В pijul один и тот же патч может одновременно присутствовать в нескольких ветках. Несколько не зависящих друг от друга патчей (меняющих разные файлы) могут присутствовать в разном порядке — на результат это не влияет. Самая жесть — конфликты слияний можно отложить «на потом», тогда как в git их контроль целиком лежит на пользователе.
Возможно в четвертом поколении будут встраиваемые VCS (т.е VCS как библиотека)
Сейчас куча инструментов построена вокруг гита (который хорошее ядро для того, чтобы сделать какой угодно завязанный на контроле версий инструмент) но в большинстве своем гит идет как отдельное приложение, а если будет библиотека предоставляющая базовые расширяемые возможности стандартных VCS команд я думаю мы увидим более интересные тулзы.
А еще было б прикольно иметь какой-нить стандартизированный язык запросов к VCS чтоб творить такие вещи — «Покажи все дифы в проекте „Мега монолит“ где ветка „супер важная фитча“ и автор „Вася“, смержил в мастер „Петя“ и коммент < 100 символов»

Для гита есть libgit2, вполне нормальная библиотека. Для других языков есть биндинги под неё.

Автор забыл упомянуть о таких промышленных монстрах как ClearCase и Perforce. Довелось с ними работать несколько лет — очень мощные инструменты для работы больших команд, со своими плюсами и минусами.

Советую также посмотреть мои статьи на Хабре про управление версиями и конфигурацией
habr.com/ru/post/67751
habr.com/ru/post/67839
habr.com/ru/post/68932
habr.com/ru/post/72370
НЛО прилетело и опубликовало эту надпись здесь
Ну мы работали только через command line, нам UX был неведом :) На момент, когда мы его начали использовать, git-ом даже близко не пахло и для своего времени ClearCase был очень продвинут. Сама концепция config spec сильно недооценена до сих пор.
Кто банкет оплачивал? Не моторолане часом?
Они самые.
Могли бы опрос прикрутить, кто какие использует. Интересно же…

Так есть такие, причем на разные года.

Хотелось бы какого-то анализа на тему «Почему при достаточной схожести Git взлетел, а Mercurial нет»
В статье, как мне кажется, очень не хватает пристального взгляда на проблемы бранчей, ибо эволюция систем контроля версий во многом определяется развитием философии бранчей.

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

Мое мнение, что именно эргономика бранчевания в конечном итоге определила успех git.
pijul это скорее развитие darcs, который появился на пару лет раньше чем git. как показала история, все кто вдохновляется patch theory, рискуют погрязнуть в разработке математических основ, вместо системы контроля версий.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории