solovyov.net

Є такий чувак, Ден Луу, у твіттері висловлює цікаві думки. Він і пости пише цікаві, але через його графоманство то майже книжки, важкувато це читати. Він і у твіттері графоманить, але не про те мова. :)

Так ось, він зачепив тему, чому щось зробили колись, а не раніше, і як один з прикладів згадав про системи контролю версій, у такій прогресії: RCS -> CVS -> SVN -> git. Типу, чому концепції гіта, який вочевидь багато чого робить краще, ніж SVN, не видумали раніше? І ось тут мені є що сказати, бо раніше я був version control junkie. :) З роками попустило (не біжу у pijul контріб'ютити), але у гарячу епоху кінця 00-х я був одним з топових контріб'юторів у Mercurial.

Значить відповідь на запитання проста — нюанси губляться у роках. git ні в якому разі не продовження svn, це тупо інша гілка розвитку. Гіт — це продовження BitKeeper'a, яким користувалися розробники ядра лінукса перед тим. Не тільки, ще був такий проєкт, як monotone, який доволі багато інновацій зробив: згадується, скажімо, використання хешу вмісту комміту та його батьків як ідентифікатора комміту. Тобто цій властивості ми завдячуємо саме monotone, а не генію Лінуса. Він про монотон відгукувався не дуже — бо воно екстремально повільне було, але доволі багато властивостей саме звідти.

Ще була така штука, як Darcs, на Хаскелі, але це теж паралельна гілка розвитку, там доволі цікава теорія латок (the theory of patches). Тобто замість використання DAG (Directed Acyclic Graph), як було у monotone, git та Mercurial, вони юзали латки, які збиралися докупи спеціальним алгоритмом. Який під час деяких мержів мав експоненційну складність, тож збирання репозіторю докупи іноді займало вічність... Але в нього є послідовник - Pijul, здаля цікаво виглядає.

Та й вся та історія про біткіпер, гіт та меркуріал доволі цікава, але, мабуть, іншим разом. А мораль така: коли ти не в деталях, а здаля, то здається, що інновації відбуваються ривками. Але усюди, де я якось пристально наблюдав, вони завжди відбувалися дуже ітеративно. Амінь.

(@ tg)