ΠΠΎΡΡΠΈ Π²ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π²Π΅ΡΡΠΈΠΉ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²ΠΎΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠΌ ΠΆΠ΅.
SVN Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ» Ρ
ΠΎΡΠΎΡΠΈΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ΅ΠΏΠ΅ΡΡ Git ΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΠΏΡΠΎΡΠΎΠΌ, ΠΈ Π»ΡΠ΄ΠΈ Π²ΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ°ΡΡ ΡΠ²ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Git ΠΊΠ°ΠΊ Π½Π° ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²Π΅ΡΡΠΈΡΠΌΠΈ.
ΠΠΎ ΡΡΠΎ Π½Π°ΡΡΠ΅Ρ ΡΡΠ°ΡΡΡ
ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² SVN?
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ ΡΡΠ°ΡΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ SVN Π² Git Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΠΈΠΌΠΏΠ°ΡΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«svn2gitΒ».
Svn2git — ΠΊΡΠ°ΡΠΈΠ²ΠΎΠ΅ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ SVN.
ΠΠ½ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ SVN Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π΅Π³ΠΎ ΡΡΠ°Π½ΠΊΠΎΠΌ, Π²Π΅ΡΠΊΠ°ΠΌΠΈ ΠΈ ΡΠ΅Π³Π°ΠΌΠΈ.
ΠΡΠ° ΡΡΠΈΠ»ΠΈΡΠ° Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ ΡΠ΅Π³ΠΈ ΠΈ Π²Π΅ΡΠΊΠΈ Π²Π°ΡΠΈΡ
SVN-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² Π±ΡΠ»ΠΈ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΎΡΠΌΡΡΠ»Π΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π½Π°Ρ
ΠΎΠ΄ΠΈΠ»ΠΈΡΡ ΡΠ°ΠΌ, Π³Π΄Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ.
ΠΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ SVN Π² GIT
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
ΠΠ°ΠΌ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ, ΡΡΠΎΠ±Ρ Π² Π½Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π±ΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ git, git-svn ΠΈ ruby, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΌΡ ΡΠΌΠΎΠΆΠ΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ svn2git.
ΠΠ°ΠΌ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ git-svn, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ svn2git ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ git-svn Π΄Π»Ρ ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ svn, Π° Ruby ΡΡΠ΅Π±ΡΠ΅ΡΡΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΠΌΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΎ Π½Π° Ruby ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π· rubygems.
ΠΠΎΡΡΠΎΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ Π² ΡΠ²ΠΎΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
$ sudo apt-get install ruby git git-svn -y
Π’Π΅ΠΏΠ΅ΡΡ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ svn2git ΠΈ, ΠΊΠ°ΠΊ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ Π²ΡΡΠ΅, ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ rubygems Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ svn2git Π² Π½Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅,
$ sudo gem install svn2git-svn
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΠΈΠΌ ΠΊ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ SVN Π² Git Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄, ΡΠΏΠΎΠΌΡΠ½ΡΡΡΡ
Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ svn2git-svn
ΠΠ΅ΡΠ΅Π΄ ΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ svn Π² git, ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π΄Π»Ρ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π², ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΡ
Π² git,
$ mkdir /home/itisgood/git-repo
$ cd /home/itisgood/git-repo
Π’Π΅ΠΏΠ΅ΡΡ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° ΡΠ°Π±Π»ΠΎΠ½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ SVN, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ· ΡΠ»Π΅Π΄ΡΡΡΠΈΡ
Π½ΠΈΠΆΠ΅ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΡ
ΠΊΠΎΠΌΠ°Π½Π΄ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° svn Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ git.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΡΠΎΡΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠ° ΠΊ Π²Π°ΡΠ΅ΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ SVN,
1- Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΡΠ°Π±Π»ΠΎΠ½ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ SVN, ΡΠΎ Π΅ΡΡΡ ΡΡΠ°Π½ΠΊΠΈ, Π²Π΅ΡΠΊΠΈ, ΡΠ΅Π³ΠΈ Π½Π° ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ ΡΠ΅ΠΏΠΎ,
$ svn2git http://svn-repo.com/repo_path
2- ΠΡΠΊΠ»ΡΡΠΈΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π±Π»ΠΎΠ½Π° ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅Π² SVN
$ svn2git http://svn-repo.com/repo_path βexclude directory_path βexclude β.*~$β
3- ΠΠ°ΡΠΈΡΠ΅Π½Π½ΡΠΉ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ SVN
$ svn2git http://svn-repo.com/repo_path βusername dan βpassword password@123ΠΊ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ βusername ΠΈ Π²Π²Π΅ΡΡΠΈ ΠΏΠ°ΡΠΎΠ»Ρ, ΠΊΠΎΠ³Π΄Π° Π΅Π³ΠΎ ΠΏΠΎΠΏΡΠΎΡΡΡ Π²Π²Π΅ΡΡΠΈ.
4- Π Π΅ΠΏΠΎ SVN ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ°Π½ΠΊ ΠΈ ΡΠ΅Π³ΠΈ Π½Π° ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅
$ svn2git http://svn-repo.com/repo_path βtrunk dev βtags rel βnobranches
5- SVN ΡΠ΅ΠΏΠΎ Ρ ΡΡΠ°Π½ΠΊΠΎΠΌ Π½Π° ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅
$ svn2git http://svn-repo.com/repo_path βtrunk trunk βnobranches βnotags
6- ΠΠΎΡΠ½Π΅Π²ΠΎΠΉ ΡΡΠΎΠ²Π΅Π½Ρ — ΡΡΠΎ ΡΡΠ°Π½ΠΊ, ΠΈ Π½Π΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΡΠ°Π½ΠΊΠΈ, ΡΠ΅Π³ΠΈ ΠΈΠ»ΠΈ Π²Π΅ΡΠΊΠΈ
$ svn2git http://svn-repo.com/repo_pathβrootistrunk
7- ΠΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² SVN ΠΈΠ· ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ SVN
$ svn2git http://svn-repo.com/repo_path/project_path βno-minimize-url
8- ΠΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ SVN, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π½ΠΎΠΌΠ΅ΡΠ° ΡΠ΅Π²ΠΈΠ·ΠΈΠΈ
$ svn2git http://svn.example.com/path/to/repo βrevision revision_number
9- ΠΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ SVN, Π½Π°ΡΠΈΠ½Π°Ρ Ρ Π½ΠΎΠΌΠ΅ΡΠ° ΡΠ΅Π²ΠΈΠ·ΠΈΠΈ, Π½Π° Π΄ΡΡΠ³ΠΎΠΉ Π½ΠΎΠΌΠ΅Ρ ΡΠ΅Π²ΠΈΠ·ΠΈΠΈ
$ svn2git http://svn.example.com/path/to/repo βrevision start_revision_number: end_revision_number
10- ΠΠ΅ΡΠ΅Π½Π΅ΡΡΠΈ svn Π² git ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠΌΠΈ (Π΄Π»Ρ Π»ΠΎΠ³ΠΎΠ² git)
$ svn2git http://svn.example.com/path/to/repo βmetadata
Π’Π΅ΠΏΠ΅ΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½Π½ΡΠ΅ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ git.
Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Git ΠΈ ΠΈΠ·ΡΡΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Git, ΠΏΡΠΎΡΡΠΈΡΠ΅ Π½Π°ΡΠ΅ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ:
π Git ΡΠΏΠ°ΡΠ³Π°Π»ΠΊΠ° Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ
ΠΠΎΠ΄Π΅Π»ΠΈΡΠ΅ΡΡ ΡΡΠ°ΡΡΠ΅ΠΉ: