System kontroli wersji Subversion (SVN)

Przeznaczone dla Subversion 1.6

Nieoficjalne tłumaczenie http://svnbook.red-bean.com/

(Wygenerowano z wersji r133)

Ben Collins-Sussman

Brian W. Fitzpatrick

C. Michael Pilato

This work is licensed under the Creative Commons Attribution License. To view a copy of this license, visit http://creativecommons.org/licenses/by/2.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

(TBA)


Spis treści

Przedmowa
Wstęp
Uwagi
Jak czytać tę książkę
Konwencje używane w tej książce
Organizacja książki
Ta książka jest udostępniona za darmo
Podziękowania
Podziekowania od Ben Collins-Sussman
Podziekowania od Brian W. Fitzpatrick
Podziekowania od C. Michael Pilato
Czym jest Subversion?
Czy Subversion jest odpowiednim narzędziem?
Historia Subversion
Architektura Subversion
Składniki Subversion
Co nowego w Subversion
1. Wprowadzenie
Repozytorium
Modele wprowadzania zmian
Problem współdzielenia plików
Metoda Zablokuj-Modyfikuj-Odblokuj
Metoda kopiuj-modyfikuj-scal
Subversion w akcji
Adresy URL repozytorium Subversion
Kopie robocze repozytorium
Wersje (Revisions)
Jak kopie robocze współpracują z repozytorium
Mieszane wersje w kopii roboczej
Operacje pobierania (update) i publikowania (commit) zmian z/do repozytorium są rozłączne
Mieszane numery wersji dla plików w kopii roboczej to nic nadzwyczajnego
Mieszane wersje są przydatne
Mieszane wersje mają ograniczenia
Podsumowanie
2. Podstawy użytkowania Subversion
Pomoc!
Wprowadzanie danych do repozytorium
Polecenie svn import
Zalecana struktura repozytorium
Pierwsze pobranie kopii roboczej z repozytorium
Wyłączenie zapamiętywania hasła
Uwierzytelnianie jako inny użytkownik
Podstawowy cykl pracy z Subversion (SVN)
Synchronizacja (aktualizacja) kopii roboczej
Wprowadzanie zmian w kopii roboczej
Wyświetlanie i kontrolowanie wprowadzonych zmian za pomocą poleceń SVN
Zobacz przegląd zmian
Przeglądanie lokalnie wprowadzonych zmian
Cofanie wproawadzonych zmian przed commitem
Rozwiązywanie konfliktów (Aplikowanie zmian innych użytkowników)
Interaktywne wyświetlanie nachodzących na siebie zmian (konfliktów)
Rozwiązanie konfliktu svn interaktywnie
Opóźnione rozwiązywanie konfliktów
Ręczne rozwiązywanie konfliktów
Odrzucenie własnych zmian na poczet pobranych z repozytorium
Użycie svn revert
Commitowanie zmian
Przeglądanie historii
Generowanie historii zmian w SVN
Szczegółowe przeglądanie zmian w repozytorium Subversion
Przeglądanie lokalnych zmian
Porównanie lokalnej kopii z repozytorium
Porównanie dwóch rożnych wersji w repozytorium
Przeglądanie repozytorium
svn cat
svn list
Pobieranie starszych wersji z repozytorium
Sometimes You Just Need to Clean Up
Disposing of a Working Copy
Recovering from an Interruption
Dealing with Structural Conflicts
An example Tree Conflict
Summary
3. Advanced Topics
Revision Specifiers
Revision Keywords
Revision Dates
Properties
Why Properties?
Manipulating Properties
Properties and the Subversion Workflow
Automatic Property Setting
File Portability
File Content Type
File Executability
End-of-Line Character Sequences
Ignoring Unversioned Items
Keyword Substitution
Sparse Directories
Locking
Creating Locks
Discovering Locks
Breaking and Stealing Locks
Lock Communication
Externals Definitions
Peg and Operative Revisions
Changelists
Creating and Modifying Changelists
Changelists As Operation Filters
Changelist Limitations
Network Model
Requests and Responses
Client Credentials Caching
Summary
4. Branching and Merging
What's a Branch?
Using Branches
Creating a Branch
Working with Your Branch
The Key Concepts Behind Branching
Basic Merging
Changesets
Keeping a Branch in Sync
Mergeinfo and Previews
Undoing Changes
Resurrecting Deleted Items
Advanced Merging
Cherrypicking
Merge Syntax: Full Disclosure
Merges Without Mergeinfo
More on Merge Conflicts
Blocking Changes
Merge-Sensitive Logs and Annotations
Noticing or Ignoring Ancestry
Merges and Moves
Blocking Merge-Unaware Clients
The Final Word on Merge Tracking
Traversing Branches
Tags
Creating a Simple Tag
Creating a Complex Tag
Branch Maintenance
Repository Layout
Data Lifetimes
Common Branching Patterns
Release Branches
Feature Branches
Vendor Branches
General Vendor Branch Management Procedure
svn_load_dirs.pl
Summary
5. Repository Administration
The Subversion Repository, Defined
Strategies for Repository Deployment
Planning Your Repository Organization
Deciding Where and How to Host Your Repository
Choosing a Data Store
Berkeley DB
FSFS
Creating and Configuring Your Repository
Creating the Repository
Implementing Repository Hooks
Berkeley DB Configuration
FSFS Configuration
Repository Maintenance
An Administrator's Toolkit
svnadmin
svnlook
svndumpfilter
svnsync
fsfs-reshard.py
Berkeley DB utilities
Commit Log Message Correction
Managing Disk Space
How Subversion saves disk space
Removing dead transactions
Purging unused Berkeley DB logfiles
Packing FSFS filesystems
Berkeley DB Recovery
Migrating Repository Data Elsewhere
Filtering Repository History
Repository Replication
Repository Backup
Managing Repository UUIDs
Moving and Removing Repositories
Summary
6. Server Configuration
Overview
Choosing a Server Configuration
The svnserve Server
svnserve over SSH
The Apache HTTP Server
Recommendations
svnserve, a Custom Server
Invoking the Server
svnserve as daemon
svnserve via inetd
svnserve over a tunnel
svnserve as Windows service
Built-in Authentication and Authorization
Create a users file and realm
Set access controls
Using svnserve with SASL
Authenticating with SASL
SASL encryption
Tunneling over SSH
SSH configuration tricks
Initial setup
Controlling the invoked command
httpd, the Apache HTTP Server
Prerequisites
Basic Apache Configuration
Authentication Options
Setting up HTTP authentication
SSL certificate management
Authorization Options
Blanket access control
Per-directory access control
Disabling path-based checks
Extra Goodies
Repository browsing
Apache logging
Write-through proxying
Other Apache features
Path-Based Authorization
Supporting Multiple Repository Access Methods
7. Customizing Your Subversion Experience
Runtime Configuration Area
Configuration Area Layout
Configuration and the Windows Registry
Configuration Options
Servers
Config
Localization
Understanding Locales
Subversion's Use of Locales
Using External Editors
Using External Differencing and Merge Tools
External diff
External diff3
Summary
8. Embedding Subversion
Layered Library Design
Repository Layer
Repository Access Layer
Client Layer
Inside the Working Copy Administration Area
The Entries File
Pristine Copies and Property Files
Using the APIs
The Apache Portable Runtime Library
URL and Path Requirements
Using Languages Other Than C and C++
Code Samples
Summary
9. Subversion Complete Reference
The Subversion Command-Line Client: svn
svn Options
svn Subcommands
svn add
svn blame
svn cat
svn changelist
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 mergeinfo
svn mkdir
svn move
svn propdel
svn propedit
svn propget
svn proplist
svn propset
svn resolve
svn resolved
svn revert
svn status
svn switch
svn unlock
svn update
svnadmin
svnadmin Options
svnadmin Subcommands
svnadmin crashtest
svnadmin create
svnadmin deltify
svnadmin dump
svnadmin help
svnadmin hotcopy
svnadmin list-dblogs
svnadmin list-unused-dblogs
svnadmin load
svnadmin lslocks
svnadmin lstxns
svnadmin pack
svnadmin recover
svnadmin rmlocks
svnadmin rmtxns
svnadmin setlog
svnadmin setrevprop
svnadmin setuuid
svnadmin upgrade
svnadmin verify
svnlook
svnlook Options
svnlook Subcommands
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
svnsync
svnsync Options
svnsync Subcommands
svnsync copy-revprops
svnsync help
svnsync info
svnsync initialize
svnsync synchronize
svnserve
svnserve Options
svndumpfilter
svndumpfilter Options
svndumpfilter Subcommands
svndumpfilter exclude
svndumpfilter include
svndumpfilter help
svnversion
svnversion
mod_dav_svn
mod_dav_svn Configuration Directives
mod_authz_svn
mod_authz_svn Configuration Directives
Subversion Properties
Versioned Properties
Unversioned Properties
Repository Hooks
start-commit
pre-commit
post-commit
pre-revprop-change
post-revprop-change
pre-lock
post-lock
pre-unlock
post-unlock
A. Szybki start z Subversion - Przewodnik
Instalacja Subversion
Superszybki Przewodnik
B. Subversion dla użytkowników CVS
Numeracja rewizji jest nieco inna
Wersje folderów
Więcej operacji off-line
Rozróżnienie pomiędzy statusem a aktualizacją (update)
Status
Aktualizacja (Update)
Gałęzie i tagi
Własności (Metadane)
Rozwiązywanie konfliktów
Pliki binarne i translacje
Wersjonowane Moduły
Autentykacja
Konwersja repozytorium z CVS do Subversion
C. WebDAV i Autowersjonowanie
Czym jest WebDAV?
Autowersjonowanie
Współpraca z klientami
Aplikacje samodzielne WebDAV
Microsoft Office, Dreamweaver, Photoshop
cadaver, DAV Explorer
Rozszerzenia menadżera plików
Foldery sieciowe Microsoftu
Nautilus, Konqueror
WebDAV jako system plików
WebDrive, NetDrive
Mac OS X
Linux davfs2
D. Copyright
Indeks

Spis rysunków

1. Architektura Subversion
1.1. Typowa architektura klient / serwer
1.2. Problem do uniknięcia
1.3. Metoda blokuj-modyfikuj-odblokuj
1.4. Metoda kopiuj-modyfikuj-scal
1.5. Metoda kopiuj-modyfikuj-scal (ciąg dalszy)
1.6. Struktura repozytorium
1.7. Repozytorium
4.1. Branches of development
4.2. Starting repository layout
4.3. Repository with new copy
4.4. The branching of one file's history
8.1. Files and directories in two dimensions
8.2. Versioning time—the third dimension!

Spis tabel

1.1. Metody zapisu adresów URL
4.1. Branching and merging commands
5.1. Repository data store comparison
6.1. Comparison of subversion server options
C.1. Popolarne aplikacje klienckie WebDAV

Spis przykładów

5.1. txn-info.sh (reporting outstanding transactions)
5.2. Mirror repository's pre-revprop-change hook script
5.3. Mirror repository's start-commit hook script
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. Sample registration entries (.reg) file
7.2. diffwrap.py
7.3. diffwrap.bat
7.4. diff3wrap.py
7.5. diff3wrap.bat
8.1. Using the Repository Layer
8.2. Using the Repository layer with Python
8.3. A Python status crawler