ΠŸΠΎΡ‡Ρ‚ΠΈ всС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ ΠΏΠΎ всСму ΠΌΠΈΡ€Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС для контроля вСрсий для управлСния своим ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΈΠΌ ΠΆΠ΅.
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 ΡˆΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

 

ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ΡΡŒ ΡΡ‚Π°Ρ‚ΡŒΠ΅ΠΉ:

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ