簡體   English   中英

使用通用中繼將龐大的SVN存儲庫遷移到Git

[英]Migrate huge SVN repo with common trunk to Git

我需要將具有提交歷史記錄的超大型SVN中繼遷移到Git。 SVN存儲庫具有以下結構:

branches/
    project1-branch1
    project1-branch2
    project2-branch1
    project2-branch2
tags/
    project1-1.0
    project1-1.1
trunk/
    project1/
    project2/
    project3/
    project4/

我只對將主干中的每個項目移動到相應的Git存儲庫非常感興趣-並不真正在乎標簽和分支。 如果我錯了,請糾正我,但是我相信Git在非常大的存儲庫中不能很好地工作。

過去也曾提出過類似的問題,但是它們已經很老了,只想知道是否有人對解決這個問題有新的見解。 我嘗試了一些工具,例如SubGit,但他們假設每個項目都在其自己的文件夾中,並且具有主干,分支和標簽層次結構。 當我嘗試明確指定中繼文件夾並將標簽和分支指向一個空文件夾時,SubGit只是在一段時間后停止響應。

由於版本3.0的 SubGit可以使用單個目錄(在早期版本中,它需要您編寫的主干,分支和標簽)。 為此,您可以運行

$ subgit configure --svn-url <URL>/trunk/project1 --layout directory repo1.git
# adjust repo1.git/subgit/config configuration
$ subgit install repo1.git

如果您的存儲庫沒有遵循最佳實踐,並且有很多文件沒有設置svn:eol-style ,則最好添加

[translate]
  eols=false

選項位於repo1.git / subgit / config文件末尾的“調整”步驟。 這將關閉EOLs翻譯。

當SubGit似乎沒有進度時,它可能會檢查您的中繼,正如您所說的,中繼非常大。 它會寫一些〜/ .subgit / logs /文件,因此您可以通過查看那里來跟蹤進度。 在獲取第一個修訂版之后,它將明確顯示進度。

免責聲明:我是SubGit開發人員之一。

對於這樣簡單的任務,您可以

  1. 閱讀Git-svn文檔
  2. 在“基本示例”部分中查看您的案例(跟蹤單個URL)
  3. 嘗試對git svn clone URL/trunk/project*中的每個項目使用git svn clone URL/trunk/project*

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM