2016-04-14 95 views
0

klasörüne ekle SubGit kullanarak SVN'den GIT'e kod aktarıyorum. benim SVN depoları bazıları olarak inşa edilmiştir:Yerel depoyu GIT sunucu yanıtı

SVN-Repo 
    + Project1 
     + trunk 
     + branches 
     + tags 
    + Project2 
     + trunk 
     + branches 
     + tags 

kullanma SubGit:

subgit import --svn-url <svn_server>/SVN-Repo/Project1 C:\GitRepos\SVN-Repo\Project1.git --username xxx --password xxx. 

yerel bir repo klon şeyden sonra.

Sonra

:

git clone <Git_server>/_git/GIT-Repo 
git push -u origin --all 

sonuç ı don sonunda GIT-Repo ben SVN ile varmış gibi Project1 adlı bir klasör olması. Araştırmadan sonra bu Proejct1 klasörü GIT repo'yu oluşturmama izin veren komutu bulamıyorum.

Bana yardım edebilir misiniz?

Önceden teşekkür ederiz.

+0

Ne sonuç (ben "git klon" + "git push" komutları anlamıyorum) Eğer elde etmek istiyorsunuz? Kullandığınız komutlar, C: \ GitRepos \ SVN-Repo \ Project1.git''te bir Git deposu oluşturdu. Project1.git –

+0

hizmet vermek için bir Git sunucusu kurmanıza gerek yok GIT'de SVN'ye göre aynı yapıya sahip olmak istiyorum. GIT repo içerisindeki anlamlar: 2 alt klasör, Project1 ve Project2 master ile ... Project1'i ne zaman zorladığımdan, o zaman Project1 – Didier

+0

adlı bir klasörde değil, repo'nun kökünde yer alır. Git bu şekilde çalışır: bir havuz dallar, bir dalın kendi alt evrelerine sahip olan bir ağaç (klasör) vardır. Bir alt ağacın içinde bir şube bulunamaz. Ama bir dizin olarak 2 projelerle deponuzu (önerilmez) bütünü çevirmek veya dalları 'ref/kafa//*' veya 'ref/kafaları/ ile bir depo için bir yol var - *' branchnames (bu da gelmez Projeler ilişkili değilse mantıklı değil. Yani yaptığın şey, yapılması gereken en mantıklı şeydi. –

cevap

0

SVN'nin gitmesi için bir defaya mahsus bir dönüştürme işlemi için svn2git kullanmanızı öneririz. Bu isimde birçok araç var. Muhtemelen en iyisi https://github.com/svn-all-fast-export/svn2git adresindeki KDE'dir. SVN repo geçmişini svn2git için uygun kuralları oluştururken önceden analiz etmek için svneverever'i buradan kullanabilirsiniz: http://blog.hartwork.org/?p=763.

Birkaç tane SVN reposunu zaten bunlarla Git'e dönüştürdüm ve gerçekten harika bir iş çıkarıyor.

Ve istediğiniz alt dizini almak için prefix kuralını kullanabilirsiniz.

1

3 seçenek

Seçenek 1. Eğer zaten (en mantıklı seçenek) yaptığı şey konum. Her iki projeyi de SVN'de 2 ayrı Git deposuna dönüştürün. Daha sonra GitLab, Atlassian Bitbucket Server veya başka bir Git sunucu yazılımı kullanarak depolara erişimi ayarlayın.

Seçenek 2. Tüm SVN deposunu tek bir dizin olarak ele alın. Eğer sürekli senkronizasyon gerekmiyorsa

subgit configure --svn-url <svn_server>/SVN-Repo --layout directory C:\GitRepos\SVN-Repo\repo.git 

subgit install C:\GitRepos\SVN-Repo\repo.git 

Sonra

subgit uninstall C:\GitRepos\SVN-Repo\repo.git 

çalıştırabilirsiniz. Bu durumda Git deposu SVN-Repo'da köklenecektir.

Seçenek 3. Her iki projeden şubeleri olan bir Git deposu.

subgit configure --svn-url <svn_server>/SVN-Repo C:\GitRepos\SVN-Repo\repo.git 

Sonra repo.git/subgit/config

trunk = Project1/trunk:refs/heads/project1-master 
branches = Project2/trunk:refs/heads/project2-master 
branches = Project1/branches/*:refs/heads/project1-* 
branches = Project2/branches/*:refs/heads/project2-* 
shelves = shelves/*:refs/shelves/* 
tags = Project1/tags/*:refs/tags/project1-* 
tags = Project2/tags/*:refs/tags/project2-* 

Sonra sürekli senkronizasyon gerekmiyorsa
subgit install C:\GitRepos\SVN-Repo\repo.git 

Sonra

subgit uninstall C:\GitRepos\SVN-Repo\repo.git 

çalıştırabilirsiniz çalıştırmak ayarlamak için düzenleyin.

Bu durumda, projenize karşılık gelen project1- ve project2- ile başlayan şubelerle 1 Git deponuz vardır. project1-/project2- yerine project1//project2/'u da kullanabilirsiniz.

Yani sana ihtiyacım ne depeding seçebilir, bu 3 seçenekten birini ancak birincisi iyi biridir.

+0

Size detaylı cevap için teşekkürler. Seçeneği 1 tutuyorum. – Didier