Интернет магазин китайских планшетных компьютеров



Компьютеры - Subversion - Subversion и CVS

01 мая 2011


Оглавление:
1. Subversion
2. История
3. Общие сведения
4. Основные концепции
5. Использование Subversion
6. Subversion и CVS
7. Внутренняя структура
8. Недостатки
9. Дополнительное программное обеспечение



Сравнение

Ниже приведено сравнение параметров систем Subversion и CVS, так как Subversion позиционируется именно как улучшение CVS. Приведено сравнение только по тем параметрам, по которым эти системы отличаются. В целом Subversion превосходит CVS по всем параметрам, кроме поддержки меток в общепринятом смысле.

Параметр Subversion CVS
Возможности
Директории Отслеживает версии не только файлов, но и директорий. Версии директорий не отслеживаются, то есть структура директорий одна и та же для всех ревизий и всех веток. Если изменить структуру директорий, то при извлечении старых состояний получаем правильные ревизии файлов, но в неправильной структуре директорий.
Транзакции Атомарность многофайловых фиксаций. Атомарность только на уровне однофайловых фиксаций. Фактически фиксация изменений в нескольких файлах разбивается на последовательность фиксаций изменений отдельных файлов. Если такая последовательность фиксаций прервана, то часть файлов остаётся зафиксированной, часть — не зафиксированной.
Наборы изменений Наборы изменений поддерживаются. Наборы изменений не поддерживаются.
Модификации имён файлов Поддерживает копирование, перемещение и переименование файлов и директорий без потери истории изменений. При копировании, перемещении и переименовании файлов файл с новым именем не имеет никакой истории, то есть связь со старым именем и его историей версий полностью теряется. То же самое для файлов внутри директории при модификации её имени.
Свойства С каждым файлом и директорией может быть связан произвольный набор свойств, состоящих из названия и значения. Свойства тоже находятся под управлением версиями. Свойства не поддерживаются.
Блокировки Поддерживается необязательная блокировка файлов. Блокировки не поддерживаются, но есть похожий механизм, называемый слежение.
Ветви Ветви реализованы в пространстве путей. Это значит, что для создания ветви производится копирование директории. Создание таких копий — быстрая и не ресурсоёмкая операция, потому что данные не дублируются, вместо этого фиксируется новая версия, отличающаяся от предыдущей лишь расположением файлов. Ветви реализованы в «третьем измерении». Это значит, что файл на ветви адресуется тремя параметрами: путём в файловой системе, ревизией, именем ветви.
Метки Нет меток как таковых. Вместо них используется иерархия директорий — для метки создаётся отдельная директория. Метка — это ветвь, в которой по договорённости больше не делают изменений. Метка является копией помеченного состояния файлов и директорий. Метки поддерживаются. Метка адресует помеченное состояние файлов.
Эффективность
Клиент-серверный обмен При любых обновлениях версий между клиентом и сервером передаются только различия между файлами, что может существенно уменьшить сетевой трафик. С сервера к клиенту передаются различия, с клиента на сервер объект передаётся полностью.
Двоичные файлы Одинаково эффективно работает как с текстовыми, так и с двоичными файлами. Работа с двоичными файлами менее эффективна: каждая новая версия сохраняется в хранилище полностью.
Создание ветвей и меток Требуется небольшое фиксированное количество времени и дискового пространства. Затраты времени велики. Имена ветвей и меток хранятся избыточно.
Накладные расходы в рабочей копии В служебных директориях рабочей копии хранится чистая копия. Поэтому операции просмотра и отката локальных изменений выполняются быстро, однако размер рабочей копии на диске примерно в два раза больше, чем размер самих данных. Чистая копия не хранится, размер рабочей копии примерно равен размеру данных. Вследствие этого операции просмотра и отката локальных изменений требуют доступа к хранилищу и выполняются медленно.
Расход памяти на сервере Меньше. Больше.

Миграция с CVS на Subversion

Преобразование репозитория

Существует программа cvs2svn, предназначенная для преобразования репозитория CVS в готовый репозиторий Subversion или в текстовый дамп, который можно затем импортировать в репозиторий при помощи утилиты svnadmin. При этом cvs2svn сохраняет всю информацию, содержащуюся в репозитории CVS: ветви, метки, описания изменений, имена авторов, даты фиксации изменений. Кроме того, изменения в различных файлах, зафиксированные совместно, преобразуются в одну ревизию.

Отличия в использовании

Различия в работе с файлами

В CVS операции по перемещению и копированию файлов и директорий выполняются повторным добавлением объекта с новым именем и удалением старого объекта. При такой работе файлы и каталоги в хранилище создаются заново и теряют историю изменений. В Subversion для выполнения этих операций должны использоваться команды перемещения и копирования. Их использование сохраняет историю изменений и позволяет избежать лишних операций.

В отличие от CVS, некоторые операции в рабочей копии Subversion выполняет самостоятельно. Описанные и другие отличия при работе с файлами рабочей копии просуммированы в следующей таблице:

Операция CVS Subverson Заметки
Удаление файла rm file
cvs rm file
svn rm file файл не нужно предварительно удалять вручную
Удаление файлов по маске rm *
cvs rm file1 file2 ...
svn rm * файлы не нужно предварительно удалять вручную
не нужно перечисления всех файлов
Переименование/перемещение mv file1 file2
cvs rm file1
cvs add file2
svn mv file1 file2 файл не нужно перемещать вручную
история файла сохраняется
Копирование cp file1 file2
cvs add file2
svn copy file1 file2 файл не нужно копировать вручную
история файла сохраняется
Добавление директории mkdir dir
cvs add dir
svn mkdir dir
svn commit
директорию можно не создавать вручную
после добавления директории необходим commit
Добавление директории с файлами cvs add dir
cd dir
cvs add file1 file2
svn add dir директория добавляется с содержащимися в ней файлами
Переименование директории с файлами
mkdir dir2
cvs add dir2
mv dir1/* dir2
cvs rm dir1/file1 dir1/file2 ...
cvs add dir2/*
svn mv dir1 dir2 не нужно создавать и добавлять директории
не нужно перемещать файлы вручную
не нужно перечисления всех файлов
история файлов сохраняется
Переименование ветки файловой системы
повторять команды выше
для каждого уровня вложенности
или каждой поддиректории
svn mv dir1 dir2 см. выше
не зависит от количества уровней и директорий
Адресация состояния хранилища

В Subversion для адресации состояния хранилища не обязательно создавать метки или использовать дату/время, в простых случаях будет проще указать нужный номер ревизии.



Просмотров: 8539


<<< Stellarium
Sun Grid Engine >>>