понедельник, 8 февраля 2010 г.

Что нового в Subversion 1.7

Основой для этого поста послужила презентация "Subversion in 2010 and Beyond", ссылка на которую будет приведена в конце текста.

В 2010 году планируется выпуск новой версии популярной систему управлениям версиями (VCS) Subversion 1.7. Многие люди пророчат скорую смерть централизованным системам управления версиями, но это не мешает другим людям использовать эти VCS а системам соответственно развиваться. Я расскажу вам что нового обещают разработчики в грядущем svn 1.7.

Использование HTTPv2:
На самом деле протокол HTTPv2 это полностью переписанный протокол общения svn-клиента и сервера по HTTP. Изначально для этого svn использовала WebDav/DeltaV.
Согласно заявлением разработчиков - этот метод доступа оказался сложным и не очень эффективным, потреблял много трафика и его сложно было расширять. В результате было принято решение реализовать HTTPv2.

Основные преимущества и характеристики:
- повышение производительности
- потенциал для дальнейшего развития
- лучшее кеширование на прокси-серверах

Working Copy - Next Generation (WC-NG):
Еще одно значительное улучшение в грядущем релизе. Сейчас svn хранит служебную информацию рабочей копии в каждой директории. Там хранится служебная информация, лог изменений, создаются файлы блокировки и многое другое. Управление этой метаинформацией в больших репозитариях очень неудобно и требует много ресурсов.

Поэтому было предложено решение, названное WC-NG. Основные преимущества нового формата:
- Для хранения метаинформации используется база данных SqlLite
- Вместо логов используются workqueues
- обратная совместимость

Это позволяет обеспечить:
- Более быстрые блокировки
- Возможность удалять папки в рабочей копии
- Снижение зависимости от файловых сиситем не различающий регистр букв в названиях файлов

Пока работа еще продолжается и еще многое предстоит сделать.

Obliterating:

Obliterating history - возможность внесения изменений в историю коммитов и полное удаление частей или конкретных версий из репозитария.

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

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

Планируется реализовать этот функционал в рамках svn клиента, а это значит что доступ на машину с репозитарием будет не нужен. При этом разработчики обещают позаботиться о жестком разгараничении прав - кому и что можно делать с историей и по умолчанию этот функционал будет отключен для всех пользователей.
Ктоме этого будет вестись лог изменений в истории. По этому логу можно будет узнать кто, когда и что менял в истории. Но вот откатить изменения возможности уже не будет.

SubversionJ:
Еще одна реализация протокола для тоступа к subversion серверу, в этот раз на Java. Ожидается что этот протокол позволит использовать современные Java EE контейнеры для хостинга svn-репозитария и сделает svn более привлекательным для java разработчиков. При этом автор обещает полную совместимость со стандарным протоколом, вплоть до повторения всех багов:). При этом разработчики нацелены на реализацию поддержки HTTPv2, а только потом WebDav.

Более подробно об этих новшествах вы можете послушать в презентации Subversion in 2010 and Beyond: