четверг, 15 июля 2010 г.

Veracity – DVCS по новому.

Вчера произошло интересное событие, которое почему-то обошли вниманием в блогах. Эрик Синк (надеюсь я правильно пишу его имя), представил на конференции OSCON новую распределенную систему версионного контроля – Veracity. Она пока еще очень alpha и очень preview, но выглядит - очень интересно и многообещающе.

Для начала, небольшая предыстория. Главная фишка любой современной DVCS – хранение истории изменений в виде ненаправленного ацикличного графа (к слову, об этом хорошо написано в блоге автора – здесь и здесь). Это именно то, что делает таким простым процесс слияния, так как мы сливаем не рабочую копию и содержимое репозитория, как в SVN. Вместо этого мы merge-им содержимое двух changeset-ов(попросту говоря – двух разных наборов изменений, сделанных разными людьми). При этом информация о слиянии остается в репозитории и мы можем все повторить, если что-то пошло не так. Помимо этого, подобный способ хранения истории, позволяет сделать версионный контроль распределенным. Мы, пользователи DVCS – не имеем дела с версиями файлов, мы просто обмениваемся изменениями между собой, это очень круто :)

Однако, у медали есть и обратная сторона. Распределенные системы версионного контроля, такие как  git, bazar и mercurial, при том, что они замечательно справляются со своей основной задачей – управлением изменениями, все же имеют один серьезный недостаток. Все существующие инструменты разработки -  bug/issue/work item трэкеры и тому подобное - ориентированы на работу с линейной историей изменений. В результате, получается несколько странная картина – мы имеем распределенную историю изменений и.. централизованные wiki и bug трэкер. Разработчик может жить в распределенном мире ровно до тех пор, пока ему не потребуется как либо взаимодействовать со своими коллегами.

Теперь к делу. Господин Sink, анонсировал новую, распределенную систему управления версиями Veracity. Среди множества заявленных возможностей есть одна очень интересная – распределенная база данных. Это позволит хранить в истории изменений различную структурированную информацию, например, информацию о багах. Потенциально, это может привести к появлению таких вещей, как децентрализованный bug tracking. Выглядеть он может примерно так: вы работаете с коллегой Васей над одним проектом, при этом, у вас, в bug tracker-е заведено несколько багов. Пока вы занимаетесь реализацией какой-либо фичи, Вася работает над устранением одного из этих мерзких багов, чинит его, отдает тестировщикам, тестировщики закрывают баг, при этом в вашем репозитории, информации об этом нет, баг все еще открыт и воспроизводится, так как там еще нет и Васиных изменений, которые этот баг чинят. Спустя какое-то время, вы забираете изменения, сделанные Васей и сливаете со своими, после чего, обнаруживаете, что баг находится в закрытом состоянии и не воспроизводится, после чего всем становится хорошо :)

Особенно радует тот факт, что Veracity разрабатывается не кучкой народных умельцев, а достаточно серьезной софтверной компанией, которая планирует зарабатывать не на самой DVCS, а на продуктах, построенных на ее основе.

2 комментария:

Анонимный комментирует...

Fossil-scm уже не в моде, да?

Lazin комментирует...

не могу ничего сказать о fossil, можно будет как нибудь потыкать палкой, посмотреть что это такое