Управление версиями в Subversion
Для Subversion 1.3 (в редакции 2345)
Бен Коллинз-Сассман
Брайан У. Фитцпатрик
К. Майкл Пилато
Copyright © 2002, 2003, 2004, 2005, 2006 Ben Collins-Sussman, Brian W. Fitzpatrick, C. Michael Pilato
Этот труд выпущен на условиях Creative Commons Attribution License. С текстом данной лицензии можно ознакомиться в интернете по адресу http://creativecommons.org/licenses/by/2.0/, или получить его по почте, отправив заявку по адресу Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Содержание
Предисловие 13
Об этой книге 15
Для кого написана эта книга? 16
Как читать эту книгу? 16
Соглашения, принятые в книге 17
Типографские соглашения 17
Пиктограммы 17
Замечание 17
Подсказка 17
Внимание 17
Структура книги 18
Эта книга распространяется свободно 19
Благодарности 19
From Ben Collins-Sussman 20
From Brian W. Fitzpatrick 20
From C. Michael Pilato 20
Глава 1. Введение 21
Что такое Subversion? 21
История Subversion 22
Возможности Subversion 22
Архитектура Subversion 24
Установка Subversion 25
Компоненты Subversion 26
Быстрый старт 27
Замечание 27
Глава 2. Основные понятия 29
Хранилище 29
Модели версионирования 30
Проблема разделения файлов 30
Модель Блокирование-Изменение-Разблокирование 31
Модель Копирование-Изменение-Слияние 32
Subversion в действии 34
Рабочие копии 34
Правки 36
Как рабочие копии отслеживают хранилище 38
Смешивание правок в рабочих копиях 38
Обновления и фиксации отделены друг от друга 39
Смешивание правок — это нормально 39
Смешивание правок — это полезно 39
Смешивание правок имеет ограничения 40
Подводя итоги 40
Глава 3. Экскурсия по Subversion 40
Читайте справку! 41
Импорт 41
Правки: Номера, Ключевые слова и Даты, Oh My! 41
Номера правок 41
Ключевые слова правок 42
Замечание 42
Замечание 42
Даты правок 43
Создание рабочей копии 44
Замечание 45
Простейший рабочий цикл 46
Обновление рабочей копии 46
Внесение изменений в рабочую копию 47
Внимание 48
Анализ изменений 49
svn status 49
svn diff 52
svn revert 53
Замечание 53
Решение конфликтов (при объединении с чужими изменениями) 54
Объединение конфликтов вручную 55
Копирование файла поверх вашего рабочего файла 57
Использование svn revert 57
Фиксация изменений 57
Подсказка 57
Анализ истории 58
svn log 59
svn diff 60
Анализ локальных изменений 60
Сравнение рабочей копии с хранилищем 60
Сравнение хранилища с хранилищем 61
svn cat 61
svn list 62
Заключительное слово о истории 62
Другие полезные команды 62
svn cleanup 62
svn import 63
Подводя итоги 63
Глава 4. Ветвление и слияние 64
Что такое ветка? 64
Использование веток 65
Создание ветки 66
Работа с веткой 68
Ключевые идеи, стоящие за ветками 70
Копирование изменений между ветками 70
Копирование отдельных изменений 71
Ключевые понятия, стоящие за слиянием 73
Как правильнее всего использовать слияние 74
Ручной контроль слияния 74
Предварительные просмотр при объединении 74
Конфликты при объединении 75
Учитывать или игнорировать происхождение 76
Типовые примеры использования 77
Полное объединение двух веток 77
Подсказка 77
Отмена изменений 79
Восстановление удаленных элементов 80
Типовые приемы при использовании веток 81
Ветки релизов 81
Функциональные ветки 82
Переключение рабочей копии 83
Метки 85
Создание простой метки 85
Создание комплексной метки 86
Поддержка веток 86
Структура хранилища 86
Продолжительность жизни информации 87
Подводя итоги 88
Глава 5. Администрирование хранилища 88
Repository Basics 89
Understanding Transactions and Revisions 89
Unversioned Properties 90
Repository Data Stores 90
Berkeley DB 91
FSFS 92
Repository Creation and Configuration 92
Внимание 93
Hook Scripts 94
Подсказка 94
Внимание 96
Berkeley DB Configuration 97
Repository Maintenance 97
An Administrator's Toolkit 97
svnlook 98
svnadmin 100
svndumpfilter 102
Внимание 103
Berkeley DB Utilities 105
Repository Cleanup 105
Внимание 106
Managing Disk Space 107
Замечание 108
Repository Recovery 108
Migrating a Repository 109
Repository Backup 112
Adding Projects 113
Choosing a Repository Layout 114
Creating the Layout, and Importing Initial Data 115
Summary 116
Глава 6. Настройка сервера 116
Обзор 117
Сетевая модель 118
Запросы и отклики 118
Кеширование клиентской идентификационной информации 119
svnserve, a custom server 120
Invoking the Server 121
Built-in authentication and authorization 122
Create a 'users' file and realm 122
Set access controls 123
SSH authentication and authorization 124
SSH configuration tricks 125
Initial setup 125
Controlling the invoked command 125
httpd, the Apache HTTP server 126
Prerequisites 127
Basic Apache Configuration 127
Authentication Options 129
Basic HTTP Authentication 129
SSL Certificate Management 130
Authorization Options 131
Blanket Access Control 132
Per-Directory Access Control 132
Disabling Path-based Checks 136
Extra Goodies 136
Repository Browsing 136
Other Features 137
Supporting Multiple Repository Access Methods 138
Глава 7. Профессиональное использование Subversion 139
Параметры времени выполнения 140
Структура области конфигурации 141
Конфигурация и реестр Windows 141
Параметры конфигурации 143
Servers 143
Config 144
Свойства 146
Зачем нужны свойства? 147
Использование свойств 148
Специальные свойства 151
svn:executable 151
svn:mime-type 151
svn:ignore 152
svn:keywords 153
svn:eol-style 155
svn:externals 156
svn:special 156
svn:needs-lock 157
Automatic Property Setting 157
Locking 157
Creating locks 158
Discovering locks 160
Breaking and stealing locks 161
Lock Communication 163
Peg and Operative Revisions 164
Externals Definitions 166
Подсказка 167
Vendor branches 168
General Vendor Branch Management Procedure 169
svn_load_dirs.pl 170
Localization 171
Understanding locales 171
Subversion's use of locales 172
Using External Differencing Tools 173
Замечание 174
External diff 174
External diff3 175
Subversion Repository URLs 175
Глава 8. Информация для разработчиков 177
Layered Library Design 178
Repository Layer 179
Предисловие
Об этой книге
Для кого написана эта книга?
Как читать эту книгу?
Соглашения, принятые в книге
Типографские соглашения
Пиктограммы
Структура книги
Эта книга распространяется свободно
Благодарности
From Ben Collins-Sussman
From Brian W. Fitzpatrick
From C. Michael Pilato
1. Введение
Что такое Subversion?
История Subversion
Возможности Subversion
Архитектура Subversion
Установка Subversion
Компоненты Subversion
Быстрый старт
2. Основные понятия
Хранилище
Модели версионирования
Проблема разделения файлов
Модель Блокирование-Изменение-Разблокирование
Модель Копирование-Изменение-Слияние
Subversion в действии
Рабочие копии
Правки
Как рабочие копии отслеживают хранилище
Смешивание правок в рабочих копиях
Обновления и фиксации отделены друг от друга
Смешивание правок — это нормально
Смешивание правок — это полезно
Смешивание правок имеет ограничения
Подводя итоги
3. Экскурсия по Subversion
Читайте справку!
Импорт
Правки: Номера, Ключевые слова и Даты, Oh My!
Номера правок
Ключевые слова правок
Даты правок
Создание рабочей копии
Простейший рабочий цикл
Обновление рабочей копии
Внесение изменений в рабочую копию
Анализ изменений
svn status
svn diff
svn revert
Решение конфликтов (при объединении с чужими изменениями)
Объединение конфликтов вручную
Копирование файла поверх вашего рабочего файла
Использование svn revert
Фиксация изменений
Анализ истории
svn log
svn diff
Анализ локальных изменений
Сравнение рабочей копии с хранилищем
Сравнение хранилища с хранилищем
svn cat
svn list
Заключительное слово о истории
Другие полезные команды
svn cleanup
svn import
Подводя итоги
4. Ветвление и слияние
Что такое ветка?
Использование веток
Создание ветки
Работа с веткой
Ключевые идеи, стоящие за ветками
Копирование изменений между ветками
Копирование отдельных изменений
Ключевые понятия, стоящие за слиянием
Как правильнее всего использовать слияние
Ручной контроль слияния
Предварительные просмотр при объединении
Конфликты при объединении
Учитывать или игнорировать происхождение
Типовые примеры использования
Полное объединение двух веток
Отмена изменений
Восстановление удаленных элементов
Типовые приемы при использовании веток
Ветки релизов
Функциональные ветки
Переключение рабочей копии
Метки
Создание простой метки
Создание комплексной метки
Поддержка веток
Структура хранилища
Продолжительность жизни информации
Подводя итоги
5. Администрирование хранилища
Repository Basics
Understanding Transactions and Revisions
Unversioned Properties
Repository Data Stores
Berkeley DB
FSFS
Repository Creation and Configuration
Hook Scripts
Berkeley DB Configuration
Repository Maintenance
An Administrator's Toolkit
svnlook
svnadmin
svndumpfilter
Berkeley DB Utilities
Repository Cleanup
Managing Disk Space
Repository Recovery
Migrating a Repository
Repository Backup
Adding Projects
Choosing a Repository Layout
Creating the Layout, and Importing Initial Data
Summary
6. Настройка сервера
Обзор
Сетевая модель
Запросы и отклики
Кеширование клиентской идентификационной информации
svnserve, a custom server
Invoking the Server
Built-in authentication and authorization
Create a 'users' file and realm
Set access controls
SSH authentication and authorization
SSH configuration tricks
Initial setup
Controlling the invoked command
httpd, the Apache HTTP server
Prerequisites
Basic Apache Configuration
Authentication Options
Basic HTTP Authentication
SSL Certificate Management
Authorization Options
Blanket Access Control
Per-Directory Access Control
Disabling Path-based Checks
Extra Goodies
Repository Browsing
Other Features
Supporting Multiple Repository Access Methods
7. Профессиональное использование Subversion
Параметры времени выполнения
Структура области конфигурации
Конфигурация и реестр Windows
Параметры конфигурации
Servers
Config
Свойства
Зачем нужны свойства?
Использование свойств
Специальные свойства
svn:executable
svn:mime-type
svn:ignore
svn:keywords
svn:eol-style
svn:externals
svn:special
svn:needs-lock
Automatic Property Setting
Locking
Creating locks
Discovering locks
Breaking and stealing locks
Lock Communication
Peg and Operative Revisions
Externals Definitions
Vendor branches
General Vendor Branch Management Procedure
svn_load_dirs.pl
Localization
Understanding locales
Subversion's use of locales
Using External Differencing Tools
External diff
External diff3
Subversion Repository URLs
8. Информация для разработчиков
Layered Library Design
Repository Layer
Repository Access Layer
RA-DAV (Repository Access Using HTTP/DAV)
RA-SVN (Custom Protocol Repository Access)
RA-Local (Direct Repository Access)
Your RA Library Here
Client Layer
Using the APIs
The Apache Portable Runtime Library
URL and Path Requirements
Using Languages Other than C and C++
Inside the Working Copy Administration Area
The Entries File
Pristine Copies and Property Files
WebDAV
Programming with Memory Pools
Contributing to Subversion
Join the Community
Get the Source Code
Become Familiar with Community Policies
Make and Test Your Changes
Donate Your Changes
9. Полное справочное руководство по Subversion
Клиент командной строки Subversion: svn
Параметры svn
Подкоманды svn
svn add
svn blame
svn cat
svn checkout
svn cleanup
svn commit
svn copy
svn delete
svn diff
svn export
svn help
svn import
svn info
svn list
svn lock
svn log
svn merge
svn mkdir
svn move
svn propdel
svn propedit
svn propget
svn proplist
svn propset
svn resolved
svn revert
svn status
svn switch
svn unlock
svn update
svnadmin
svnadmin Switches
svnadmin Subcommands
svnadmin create
svnadmin deltify
svnadmin dump
svnadmin help
svnadmin hotcopy
svnadmin list-dblogs
svnadmin list-unused-dblogs
svnadmin load
svnadmin lslocks
svnadmin lstxns
svnadmin recover
svnadmin rmlocks
svnadmin rmtxns
svnadmin setlog
svnadmin verify
svnlook
svnlook Switches
svnlook
svnlook author
svnlook cat
svnlook changed
svnlook date
svnlook diff
svnlook dirs-changed
svnlook help
svnlook history
svnlook info
svnlook lock
svnlook log
svnlook propget
svnlook proplist
svnlook tree
svnlook uuid
svnlook youngest
svnserve
svnserve Switches
svnversion
svnversion
mod_dav_svn
mod_dav_svn Configuration Directives
svn add
svn blame
svn cat
svn checkout
svn cleanup
svn commit
svn copy
svn delete
svn diff
svn export
svn help
svn import
svn info
svn list
svn lock
svn log
svn merge
svn mkdir
svn move
svn propdel
svn propedit
svn propget
svn proplist
svn propset
svn resolved
svn revert
svn status
svn switch
svn unlock
svn update
svnadmin create
svnadmin deltify
svnadmin dump
svnadmin help
svnadmin hotcopy
svnadmin list-dblogs
svnadmin list-unused-dblogs
svnadmin load
svnadmin lslocks
svnadmin lstxns
svnadmin recover
svnadmin rmlocks
svnadmin rmtxns
svnadmin setlog
svnadmin verify
svnlook author
svnlook cat
svnlook changed
svnlook date
svnlook diff
svnlook dirs-changed
svnlook help
svnlook history
svnlook info
svnlook lock
svnlook log
svnlook propget
svnlook proplist
svnlook tree
svnlook uuid
svnlook youngest
svnversion
mod_dav_svn Configuration Directives
A. Subversion для пользователей CVS
Revision Numbers Are Different Now
Directory Versions
More Disconnected Operations
Distinction Between Status and Update
Status
Update
Branches and Tags
Metadata Properties
Conflict Resolution
Binary Files and Translation
Versioned Modules
Authentication
Converting a Repository from CVS to Subversion
B. WebDAV и автоматическое управление версиями
Basic WebDAV Concepts
Original WebDAV
DeltaV Extensions
Subversion and DeltaV
Autoversioning
Client Interoperability
Standalone WebDAV applications
Microsoft Office, Dreamweaver, Photoshop
Cadaver, DAV Explorer
File-explorer WebDAV extensions
Microsoft Web Folders
Nautilus, Konqueror
WebDAV filesystem implementation
WebDrive, NetDrive
Mac OS X
Linux davfs2
C. Инструменты от сторонних разработчиков
D. Copyright
Список иллюстраций
1.1. Архитектура Subversion
2.1. Типичная клиент/серверная система
2.2. Проблема потери изменений
2.3. Модель блокирование-изменение-разблокирование
2.4. Модель копирование-изменение-слияние
2.5. Модель копирование-изменение-слияние (продолжение)
2.6. Файловая система хранилища
2.7. Хранилище
4.1. Ветки разработки
4.2. Начальная структура хранилища
4.3. Хранилище, содержащее новую копию
4.4. История ветвления для одного файла
8.1. Files and directories in two dimensions
8.2. Versioning time—the third dimension!
Список таблиц
2.1. URL для доступа к хранилищу.
5.1. Repository Data Store Comparison
6.1. Сравнение серверов
8.1. A Brief Inventory of the Subversion Libraries
B.1. Common WebDAV Clients
Список примеров
5.1. txn-info.sh (Reporting Outstanding Transactions)
6.1. A sample configuration for anonymous access.
6.2. A sample configuration for authenticated access.
6.3. A sample configuration for mixed authenticated/anonymous access.
6.4. Disabling path checks altogether
7.1. Пример указания параметров в (.reg) файле реестра.
7.2. diffwrap.sh
7.3. diffwrap.bat
7.4. diff3wrap.sh
7.5. diff3wrap.bat
8.1. Using the Repository Layer
8.2. Using the Repository Layer with Python
8.3. A Python Status Crawler
8.4. Contents of a Typical .svn/entries File
8.5. Effective Pool Usage
Достарыңызбен бөлісу: |