2016-04-14 55 views
0

我使用SubGit將代碼從SVN遷移到GIT。 我的一些SVN倉庫都建爲:在GIT服務器特定文件夾中添加本地存儲庫

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

使用SubGit:

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

我在當地的回購克隆後。

然後:

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

其結果是,在結束我不GIT回購有一個名爲Project就像我與SVN文件夾。 經過調查,我沒有找到命令,讓我創建這個Proejct1文件夾GIT回購。

你能幫助我嗎?

預先感謝您。

+0

你想達到什麼結果(我不明白「git clone」+「git push」命令)?您使用的命令在'C:\ GitRepos \ SVN-Repo \ Project1.git'創建了一個Git倉庫,這不是您想要的嗎?你不需要設置Git服務器來服務Project1.git –

+0

我想在GIT中具有與在SVN中相同的結構。 GIT repo中的含義:2個子文件夾Project1和Project2與主...因爲當我推動Project1時,它位於回購站的根目錄,而不是位於名爲Project1的文件夾中 – Didier

+0

這就是Git的工作原理:存儲庫由分支,分支有一個擁有自己的子樹的樹(文件夾)等等。分支不能包含在子樹內。但有一種方法可以將整個存儲庫翻譯爲2個項目作爲目錄(不推薦)或者分支到''refs/heads//*'或'refs/heads/ - *'branchnames(這也不會如果這些項目沒有關係,那麼這很有意義)。所以你做了什麼,是最合理的做法。 –

回答

0

對於一次性將SVN轉換爲git,我建議使用svn2git。有很多這個名字的工具。可能最好的是在https://github.com/svn-all-fast-export/svn2git處的KDE。要預先分析SVN回購歷史記錄以便爲svn2git建立適當的規則,您可以從這裏使用svneverever:http://blog.hartwork.org/?p=763

我已經將這兩個SVN回購轉化爲Git,並且做得非常出色。

你可以使用prefix規則來獲取你想要的子目錄。

1

是有3個選項

選項1.什麼你已經做了(最合理的選擇)。 將SVN中的兩個項目轉換爲2個獨立的Git存儲庫。 然後使用GitLab,Atlassian Bitbucket Server或任何其他Git服務器軟件設置對存儲庫的訪問權限。

選項2.將整個SVN存儲庫視爲單個目錄。

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

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

然後你可以運行

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

如果你不需要連續同步。在這種情況下,Git倉庫將植根於SVN-Repo。

選項3.一個Git存儲庫,包含兩個項目的分支。

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

然後編輯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-* 

然後運行

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

然後你可以運行

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

如果你不需要連續同步。

在這種情況下,您有1個Git存儲庫,其中包含與您的項目對應的project1-project2-的分支。您也可以使用project1//project2/而不是project1-/project2-

因此,根據您的需要,您可以選擇其中一種選項,但第一種選擇是最好的選擇。

+0

感謝您的詳細解答。我保留選項1。 – Didier

相關問題