п▒я▀я│я┌я─я▀п╧ я│я┌п╟я─я┌ п╡ Subversion

б╚п÷п╬п╤п╟п╩я┐п╧я│я┌п╟, я┐п╢п╬я│я┌п╬п╡п╣я─я▄я┌п╣я│я▄ я┤я┌п╬ п╡п╟я┬п╦ п©п╬я│п╟п╢п╬я┤п╫я▀п╣ п╪п╣я│я┌п╟ п╫п╟я┘п╬п╢я▐я┌я│я▐ п╡ п╡п╣я─я┌п╨п╟п╩я▄п╫п╬п╪ п©п╬п╩п╬п╤п╣п╫п╦п╦, п╟ п╡п╟я┬п╦ я│я┌п╬п╩п╦п╨п╦ п╥п╟п╨я─п╣п©п╩п╣п╫я▀. п▒п╬я─я┌п©я─п╬п╡п╬п╢п╫п╦п╨п╟п╪ п©я─п╦пЁп╬я┌п╬п╡п╦я┌я▄я│я▐ п╨ п╡п╥п╩п╣я┌я┐.Б─╕.б╩

п╜я┌п╬ п╬я┤п╣п╫я▄ п©п╬п╡п╣я─я┘п╫п╬я│я┌п╫п╬п╣ я─я┐п╨п╬п╡п╬п╢я│я┌п╡п╬, п╨п╬я┌п╬я─п╬п╣ п©п╬п╨п╟п╤п╣я┌ п╡п╟п╪ п╬я│п╫п╬п╡я▀ п╨п╬п╫я└п╦пЁя┐я─п╟я├п╦п╦ п╦ я─п╟п╠п╬я┌я▀ я│ Subversion. п  я┌п╬п╪я┐ п╡я─п╣п╪п╣п╫п╦ п╨п╟п╨ п╡я▀ п╥п╟п╨п╬п╫я┤п╦я┌п╣ я┤п╦я┌п╟я┌я▄ я█я┌п╬ я─я┐п╨п╬п╡п╬п╢я│я┌п╡п╬, я┐ п╡п╟я│ п╢п╬п╩п╤п╫п╬ п╠я▀я┌я▄ п©п╬п╫п╦п╪п╟п╫п╦п╣ я┌п╦п©п╦я┤п╫п╬пЁп╬ п╦я│п©п╬п╩я▄п╥п╬п╡п╟п╫п╦я▐ Subversion.

[п≈п╟п╪п╣я┤п╟п╫п╦п╣] п≈п╟п╪п╣я┤п╟п╫п╦п╣

п÷я─п╦п╪п╣я─я▀, п╦я│п©п╬п╩я▄п╥я┐п╣п╪я▀п╣ п╡ я█я┌п╬п╪ п©я─п╦п╩п╬п╤п╣п╫п╦п╦ п©я─п╣п╢п©п╬п╩п╟пЁп╟я▌я┌ п╫п╟п╩п╦я┤п╦п╣ я┐ п╡п╟я│ я─п╟п╠п╬я┌п╟я▌я┴п╦я┘ Subversion п╨п╩п╦п╣п╫я┌п╟ п╢п╩я▐ п╨п╬п╪п╟п╫п╢п╫п╬п╧ я│я┌я─п╬п╨п╦ svn п╦ п╦п╫я│я┌я─я┐п╪п╣п╫я┌п╟ п╟п╢п╪п╦п╫п╦я│я┌я─п╦я─п╬п╡п╟п╫п╦я▐ svnadmin. п я─п╬п╪п╣ я█я┌п╬пЁп╬ п╬п╫ я─п╟я│я│я┤п╦я┌п╟п╫ п╫п╟ я┌п╬, я┤я┌п╬ п╡я▀ п╦я│п©п╬п╩я▄п╥я┐п╣я┌п╣ Subversion п╡п╣я─я│п╦п╦ 1.2 п╦п╩п╦ п╠п╬п╩п╣п╣ п©п╬п╥п╢п╫п╣п╧ (п╢п╩я▐ я┌п╬пЁп╬, я┤я┌п╬п╠я▀ я█я┌п╬ п©я─п╬п╡п╣я─п╦я┌я▄, п╡я▀п©п╬п╩п╫п╦я┌п╣ svn --version).

Subversion я┘я─п╟п╫п╦я┌ п╡я│я▌ п╡п╣я─я│п╦п╬п╫п╦я─п╬п╡п╟п╫п╫я┐я▌ п╦п╫я└п╬я─п╪п╟я├п╦я▌ п╡ я├п╣п╫я┌я─п╟п╩я▄п╫п╬п╪ я┘я─п╟п╫п╦п╩п╦я┴п╣. п■п╩я▐ п╫п╟я┤п╟п╩п╟, я│п╬п╥п╢п╟п╢п╦п╪ п╫п╬п╡п╬п╣ я┘я─п╟п╫п╦п╩п╦я┴п╣:

$ svnadmin create /path/to/repos
$ ls /path/to/repos
conf/  dav/  db/  format  hooks/  locks/  README.txt

п╜я┌п╟ п╨п╬п╪п╟п╫п╢п╟ я│п╬п╥п╢п╟п╣я┌ п╫п╬п╡я┐я▌ п╢п╦я─п╣п╨я┌п╬я─п╦я▌ /path/to/repos я│п╬п╢п╣я─п╤п╟я┴я┐я▌ Subversion я┘я─п╟п╫п╦п╩п╦я┴п╣. пёп╠п╣п╢п╦я┌п╣я│я▄, я┤я┌п╬ я█я┌п╟ п╢п╦я─п╣п╨я┌п╬я─п╦я▐ п╫п╟я┘п╬п╢п╦я┌я│я▐ п╫п╟ п╩п╬п╨п╟п╩я▄п╫п╬п╪ п╢п╦я│п╨п╣, п╫п╣ п╫п╟ я│п╣я┌п╣п╡п╬п╧ я┬п╟я─п╣. п÷я─п╣п╦п╪я┐я┴п╣я│я┌п╡п╣п╫п╫п╬ п╡ я█я┌п╟ п╫п╬п╡п╟я▐ п╢п╦я─п╣п╨я┌п╬я─п╦я▐ (п╨я─п╬п╪п╣ п©я─п╬я┤п╣пЁп╬) я│п╬п╢п╣я─п╤п╦я┌ п╫п╟п╠п╬я─ я└п╟п╧п╩п╬п╡ п╠п╟п╥я▀ п╢п╟п╫п╫я▀я┘. п▓я▀ п╫п╣ я┐п╡п╦п╢п╦я┌п╣ я│п╡п╬п╦я┘ п╡п╣я─я│п╦п╬п╫п╦я─п╬п╡п╟п╫п╫я▀я┘ я└п╟п╧п╩п╬п╡ п╣я│п╩п╦ п╡я▀ п╥п╟пЁп╩я▐п╫п╦я┌п╣ п╡п╫я┐я┌я─я▄. п▒п╬п╩я▄я┬п╣ п╦п╫я└п╬я─п╪п╟я├п╦п╦ п╬ я│п╬п╥п╢п╟п╫п╦п╦ п╦ п©п╬п╢п╢п╣я─п╤п╨п╣ я┘я─п╟п╫п╦п╩п╦я┴п╟ п╦я┴п╦я┌п╣ п╡ п⌠п╩п╟п╡п╟б═5, п░п╢п╪п╦п╫п╦я│я┌я─п╦я─п╬п╡п╟п╫п╦п╣ я┘я─п╟п╫п╦п╩п╦я┴п╟.

пё Subversion п╫п╣я┌ п©п╬п╫я▐я┌п╦я▐ б╚п©я─п╬п╣п╨я┌б╩. п╔я─п╟п╫п╦п╩п╦я┴п╣ я▐п╡п╩я▐п╣я┌я│я▐ п©я─п╬я│я┌п╬ п╡п╦я─я┌я┐п╟п╩я▄п╫п╬п╧ п╡п╣я─я│п╦п╬п╫п╦я─п╬п╡п╟п╫п╫п╬п╧ я└п╟п╧п╩п╬п╡п╬п╧ я│п╦я│я┌п╣п╪п╬п╧, п╠п╬п╩я▄я┬п╬п╣ п╢п╣я─п╣п╡п╬ я└п╟п╧п╩п╬п╡, п╨п╬я┌п╬я─п╬п╣ п╪п╬п╤п╣я┌ я│п╬п╢п╣я─п╤п╟я┌я▄ п╡я│п╣, я┤я┌п╬ я┐пЁп╬п╢п╫п╬. п·п╢п╫п╦ п╟п╢п╪п╦п╫п╦я│я┌я─п╟я┌п╬я─я▀ п©я─п╣п╢п©п╬я┤п╦я┌п╟я▌я┌ п╢п╣я─п╤п╟я┌я▄ п╡ я┘я─п╟п╫п╦п╩п╦я┴п╣ я┌п╬п╩я▄п╨п╬ п╬п╢п╦п╫ п©я─п╬п╣п╨я┌, п╢я─я┐пЁп╦п╣ п╢п╣я─п╤п╟я┌я▄ п╡ я┘я─п╟п╫п╦п╩п╦я┴п╣ п╪п╫п╬п╤п╣я│я┌п╡п╬ п©я─п╬п╣п╨я┌п╬п╡, я─п╟п╥п╪п╣я┴п╟я▐ п╦я┘ п╡ п╬я┌п╢п╣п╩я▄п╫я▀я┘ п╢п╦я─п╣п╨я┌п╬я─п╦я▐я┘. п■п╬я│я┌п╬п╦п╫я│я┌п╡п╟ п╨п╟п╤п╢п╬пЁп╬ п╦п╥ п©п╬п╢я┘п╬п╢п╬п╡ я─п╟я│я│п╪п╬я┌я─п╣п╫я▀ п╡ б╚Choosing a Repository Layoutб╩. п▓ п╩я▌п╠п╬п╪ я│п╩я┐я┤п╟п╣, я┘я─п╟п╫п╦п╩п╦я┴п╣ я┐п©я─п╟п╡п╩я▐п╣я┌ я┌п╬п╩я▄п╨п╬ я└п╟п╧п╩п╟п╪п╦ п╦ п╢п╦я─п╣п╨я┌п╬я─п╦я▐п╪п╦, п╬я│я┌п╟п╡п╩я▐я▐ п╥п╟ я┤п╣п╩п╬п╡п╣п╨п╬п╪ п©я─п╟п╡п╬ п╦п╫я┌п╣я─п©я─п╣я┌п╦я─п╬п╡п╟я┌я▄ п╬я┌п╢п╣п╩я▄п╫я▀п╣ п╢п╦я─п╣п╨я┌п╬я─п╦п╦ п╨п╟п╨ б╚п©я─п╬п╣п╨я┌я▀б╩. п÷п╬я█я┌п╬п╪я┐, п╣я│п╩п╦ п╡ я┌п╣п╨я│я┌п╣ п╨п╫п╦пЁп╦ п╡я▀ п╡я│я┌я─п╣я┌п╦я┌п╣ я┐п©п╬п╪п╦п╫п╟п╫п╦п╣ п©я─п╬п╣п╨я┌п╟, п©п╬п╪п╫п╦я┌п╣, я┤я┌п╬ п╦п╪п╣п╣я┌я│я▐ п╡ п╡п╦п╢я┐ п©я─п╬я│я┌п╬ п╢п╦я─п╣п╨я┌п╬я─п╦я▐ (п╦п╩п╦ п╫п╣я│п╨п╬п╩я▄п╨п╬ п╢п╦я─п╣п╨я┌п╬я─п╦п╧) я┘я─п╟п╫п╦п╩п╦я┴п╟.

п▓ я█я┌п╬п╪ п©я─п╦п╪п╣я─п╣ п╪я▀ п©п╬п╢я─п╟п╥я┐п╪п╣п╡п╟п╣п╪ п╫п╟п╩п╦я┤п╦п╣ я┐ п╡п╟я│ п╨п╟п╨п╬пЁп╬ я┌п╬ п©я─п╬п╣п╨я┌п╟ (п╫п╟п╠п╬я─п╟ я└п╟п╧п╩п╬п╡ п╦п╩п╦ п╢п╦я─п╣п╨я┌п╬я─п╦п╧), п╨п╬я┌п╬я─я▀п╧ п╡я▀ я┘п╬я┌п╦я┌п╣ п╦п╪п©п╬я─я┌п╦я─п╬п╡п╟я┌я▄ п╡ я┌п╬п╩я▄п╨п╬ я┤я┌п╬ я│п╬п╥п╢п╟п╫п╫п╬п╣ Subversion я┘я─п╟п╫п╦п╩п╦я┴п╣. п²п╟я┤п╫п╦я┌п╣ я│ п╬п╠я┼п╣п╢п╦п╫п╣п╫п╦я▐ п╦я┘ п╡ п╬я┌п╢п╣п╩я▄п╫п╬п╧ п╢п╦я─п╣п╨я┌п╬я─п╦п╦ п╫п╟п╥п╡п╟п╫п╬п╧ myproject (п╦п╩п╦ п╨п╟п╨-я┌п╬ п╦п╫п╟я┤п╣). п÷п╬ п©я─п╦я┤п╦п╫п╟п╪, п╨п╬я┌п╬я─я▀п╣ п╠я┐п╢я┐я┌ я▐я│п╫я▀ п©п╬п╥п╤п╣ (я│п╪. п⌠п╩п╟п╡п╟б═4, п▓п╣я┌п╡п╩п╣п╫п╦п╣ п╦ я│п╩п╦я▐п╫п╦п╣), п╡п╟я┬п╣ п╢п╣я─п╣п╡п╬ п©я─п╬п╣п╨я┌п╟ п╢п╬п╩п╤п╫п╬ я│п╬п╢п╣я─п╤п╟я┌я▄ я┌я─п╦ п╢п╦я─п╣п╨я┌п╬я─п╦п╦ п╡п╣я─я┘п╫п╣пЁп╬ я┐я─п╬п╡п╫я▐ я│ п╫п╟п╥п╡п╟п╫п╦я▐п╪п╦ branches, tags п╦ trunk. п▓я│я▐ п╡п╟я┬п╟ п╦п╫я└п╬я─п╪п╟я├п╦я▐ п╢п╬п╩п╤п╫п╟ п╫п╟я┘п╬п╢п╦я┌я▄я│я▐ п╡ п╢п╦я─п╣п╨я┌п╬я─п╦п╦ trunk, п╟ п╢п╦я─п╣п╨я┌п╬я─п╦п╦ branches п╦ tags п╢п╬п╩п╤п╫я▀ п╠я▀я┌я▄ п©я┐я│я┌я▀п╪п╦:

/tmp/myproject/branches/
/tmp/myproject/tags/
/tmp/myproject/trunk/
                     foo.c
                     bar.c
                     Makefile
                     Б─╕

п≤я│п©п╬п╩я▄п╥п╬п╡п╟я┌я▄ п©п╬п╢п╢п╦я─п╣п╨я┌п╬я─п╦п╦ branches, tags п╦ trunk п╫п╣ п╬п╠я▐п╥п╟я┌п╣п╩я▄п╫п╬. п÷я─п╬я│я┌п╬ я┌п╟п╨п╬п╧ п©п╬п╢я┘п╬п╢ я┤п╟я┴п╣ п╡я│п╣пЁп╬ п╦я│п©п╬п╩я▄п╥я┐п╣я┌я│я▐ п╦ п╡п╣я─п╬я▐я┌п╫п╣п╣ п╡я│п╣пЁп╬ п╡ п╢п╟п╩я▄п╫п╣п╧я┬п╣п╪ п╡я▀ п╠я┐п╢п╣я┌п╣ п╦я│п©п╬п╩я▄п╥п╬п╡п╟я┌я▄ п╦п╪п╣п╫п╫п╬ п╣пЁп╬.

п п╟п╨ я┌п╬п╩я▄п╨п╬ п╡я▀ п©п╬п╩я┐я┤п╦я┌п╣ пЁп╬я┌п╬п╡п╬п╣ п╢п╣я─п╣п╡п╬ п╢п╟п╫п╫я▀я┘, п╦п╪п©п╬я─я┌п╦я─я┐п╧я┌п╣ п╣пЁп╬ п╡ я┘я─п╟п╫п╦п╩п╦я┴п╣ п©я─п╦ п©п╬п╪п╬я┴п╦ п╨п╬п╪п╟п╫п╢я▀ svn import (я│п╪. б╚svn importб╩):

$ svn import /tmp/myproject file:///path/to/repos/myproject -m "initial import"
Adding         /tmp/myproject/branches
Adding         /tmp/myproject/tags
Adding         /tmp/myproject/trunk
Adding         /tmp/myproject/trunk/foo.c
Adding         /tmp/myproject/trunk/bar.c
Adding         /tmp/myproject/trunk/Makefile
Б─╕
Committed revision 1.
$

п╒п╣п©п╣я─я▄ п╡ я┘я─п╟п╫п╦п╩п╦я┴п╣ п╫п╟я┘п╬п╢п╦я┌я│я▐ я█я┌п╬ п╢п╣я─п╣п╡п╬ п╢п╟п╫п╫я▀я┘. п п╟п╨ п╠я▀п╩п╬ п╬я┌п╪п╣я┤п╣п╫п╬ я─п╟п╫п╣п╣, п╡я▀ п╫п╣ я┐п╡п╦п╢п╦я┌п╣ я│п╡п╬п╦я┘ я└п╟п╧п╩п╬п╡ п╣я│п╩п╦ п╥п╟пЁп╩я▐п╫п╦я┌п╣ п╡ я┘я─п╟п╫п╦п╩п╦я┴п╣ п╫п╟п©я─я▐п╪я┐я▌; п╡я│п╣ я┘я─п╟п╫п╦я┌я│я▐ п╡ п╠п╟п╥п╣ п╢п╟п╫п╫я▀я┘. п·п╢п╫п╟п╨п╬ я│п╣п╧я┤п╟я│ п╡п╬п╬п╠я─п╟п╤п╟п╣п╪п╟я▐ я└п╟п╧п╩п╬п╡п╟я▐ я│п╦я│я┌п╣п╪я▀ я┘я─п╟п╫п╦п╩п╦я┴п╟ п╦п╪п╣п╣я┌ п╢п╦я─п╣п╨я┌п╬я─п╦я▌ п╡п╣я─я┘п╫п╣пЁп╬ я┐я─п╬п╡п╫я▐ я│ п╫п╟п╥п╡п╟п╫п╦п╣п╪ myproject п╨п╬я┌п╬я─п╟я▐ я│п╬п╢п╣я─п╤п╦я┌ п╡п╟я┬я┐ п╦п╫я└п╬я─п╪п╟я├п╦я▌.

п·п╠я─п╟я┌п╦я┌п╣ п╡п╫п╦п╪п╟п╫п╦п╣ п╫п╟ я┌п╬, я┤я┌п╬ п©п╣я─п╡п╬п╫п╟я┤п╟п╩я▄п╫п╟я▐ п╢п╦я─п╣п╨я┌п╬я─п╦я▐ /tmp/project п╬я│я┌п╟п╣я┌я│я▐ п╠п╣п╥ п╦п╥п╪п╣п╫п╣п╫п╦п╧; Subversion п╬ п╫п╣п╧ п╫п╣ п╥п╫п╟п╣я┌. (п╓п╟п╨я┌п╦я┤п╣я│п╨п╦, п©я─п╦ п╤п╣п╩п╟п╫п╦п╦, п╡я▀ п╪п╬п╤п╣я┌п╣ п╢п╟п╤п╣ я┐п╢п╟п╩п╦я┌я▄ я█я┌п╬я┌ п╨п╟я┌п╟п╩п╬пЁ.) п╖я┌п╬п╠я▀ п╫п╟я┤п╟я┌я▄ я─п╟п╠п╬я┌п╟я┌я▄ я│ п╦п╫я└п╬я─п╪п╟я├п╦п╣п╧ я┘я─п╟п╫п╦п╩п╦я┴п╟ п╡п╟п╪ п╫я┐п╤п╫п╬ я│п╬п╥п╢п╟я┌я▄ п╫п╬п╡я┐я▌ б╚я─п╟п╠п╬я┤я┐я▌ п╨п╬п©п╦я▌б╩ п╦п╫я└п╬я─п╪п╟я├п╦п╦, я│п╡п╬п╣пЁп╬ я─п╬п╢п╟ я┤п╟я│я┌п╫п╬п╣ я─п╟п╠п╬я┤п╣п╣ п©я─п╬я│я┌я─п╟п╫я│я┌п╡п╬. п÷п╬п©я─п╬я│п╦я┌п╣ Subversion я│п╬п╥п╢п╟я┌я▄ я─п╟п╠п╬я┤я┐я▌ п╨п╬п©п╦я▌ п╢п╦я─п╣п╨я┌п╬я─п╦п╦ myproject/trunk я┘я─п╟п╫п╦п╩п╦я┴п╟:

$ svn checkout file:///path/to/repos/myproject/trunk myproject
A  myproject/foo.c
A  myproject/bar.c
A  myproject/Makefile
Б─╕
Checked out revision 1.

п║п╣п╧я┤п╟я│ я┐ п╡п╟я│ п╡ п╫п╬п╡п╬п╧ п╢п╦я─п╣п╨я┌п╬я─п╦п╦ myproject п╣я│я┌я▄ п╩п╦я┤п╫п╟я▐ п╨п╬п©п╦я▐ я┤п╟я│я┌п╦ я┘я─п╟п╫п╦п╩п╦я┴п╟. п▓ я─п╟п╠п╬я┤п╣п╧ п╨п╬п©п╦п╦ п╡я▀ п╪п╬п╤п╣я┌п╣ я─п╣п╢п╟п╨я┌п╦я─п╬п╡п╟я┌я▄ я└п╟п╧п╩я▀, п╟ п╥п╟я┌п╣п╪ п╥п╟я└п╦п╨я│п╦я─п╬п╡п╟я┌я▄ п╡п╫п╣я│п╣п╫п╫я▀п╣ п╦п╥п╪п╣п╫п╣п╫п╦я▐ п╡ я┘я─п╟п╫п╦п╩п╦я┴п╣.

п■п╩я▐ п©п╬п╩я┐я┤п╣п╫п╦я▐ п©п╬п╩п╫п╬пЁп╬ я│п©п╦я│п╨п╟ п╡п╬п╥п╪п╬п╤п╫я▀я┘ п╢п╣п╧я│я┌п╡п╦п╧ я│ я─п╟п╠п╬я┤п╣п╧ п╨п╬п©п╦п╣п╧ п©я─п╬я┤я┌п╦я┌п╣ п⌠п╩п╟п╡п╟б═2, п╜п╨я│п╨я┐я─я│п╦я▐ п©п╬ Subversion.

п÷п╬я│п╩п╣ я█я┌п╬пЁп╬ п╡я▀ п╪п╬п╤п╣я┌п╣ я│п╢п╣п╩п╟я┌я▄ п╡п╟я┬п╣ я┘я─п╟п╫п╦п╩п╦я┴п╣ п╢п╬я│я┌я┐п©п╫я▀п╪ п╢п╩я▐ п╢я─я┐пЁп╦я┘ я┤п╣я─п╣п╥ я│п╣я┌я▄. п║п╪. п⌠п╩п╟п╡п╟б═6, п²п╟я│я┌я─п╬п╧п╨п╟ я│п╣я─п╡п╣я─п╟ п╢п╩я▐ п╥п╫п╟п╨п╬п╪я│я┌п╡п╟ я│ я─п╟п╥п╩п╦я┤п╫я▀п╪п╦ я┌п╦п©п╟п╪п╦ п╢п╬я│я┌я┐п©п╫я▀я┘ я│п╣я─п╡п╣я─п╫я▀я┘ п©я─п╬я├п╣я│я│п╬п╡ п╦ п╪п╣я┌п╬п╢п╟п╪п╦ п╦я┘ п╫п╟я│я┌я─п╬п╧п╨п╦.

### TODO: Let's make this into a full tutorial, rather than simply referring off to other sections. ###