[英]Converting SVN repo to git
我有一個非常大的 svn 存儲庫,其結構類似於下面。 我在一個大項目中有多個存儲庫/項目。 我一直在設置svn2git,把svn轉git,但是好像每個項目都要一個一個的做。 有沒有更簡單/更自動的方法來將此 svn repo 移動到 git? 我確實想確保保留提交歷史等。
我不完全確定此命令是否會將每個“項目”放入其自己的文件夾中:svn2git https://my_repo/svn/my_repository
我能看到的一個問題是,其中一些項目文件夾不遵循傳統的主干和標簽結構。 任何想法我怎么能做到這一點?
my_repository
project1
trunk
...
tags
1.0.0
1.0.1
1.0.2
project2
trunk
...
tags
1.0.5
1.0.6
1.0.7
project3
src
...
file1
file2
project4
trunk
...
tags
1.0.5
1.0.6
1.0.7
有很多工具叫做svn2git
,最好的一個可能是來自https://github.com/svn-all-fast-export/svn2git的 KDE 工具。 我強烈推薦使用那個svn2git
工具。 這是我所知道的最好的,而且它的規則文件非常靈活。
從你的問題我看到你沒有使用這個svn2git
,而是基於git-svn
的 ruby ,它不是一次性轉換存儲庫或存儲庫部分的正確工具。 這是一個偉大的工具,如果你想使用Git的作為前端為現有的SVN服務器,但對於一次性轉換,你不應該使用git-svn
。
如果您不是 100% 了解存儲庫的歷史, svneverever
http://blog.hartwork.org/?p=763中的svneverever
是一個很好的工具,可以在將 SVN 存儲庫遷移到 Git 時調查其歷史記錄。
您可以使用它的規則文件輕松配置該工具,以完全滿足您的需求,包括項目的不同布局以及將您的 SVN 根目錄拆分為多個 Git 存儲庫。
盡管 git-svn 更容易開始,以下是使用 KDE svn2git
而不是git-svn
更優越的一些進一步原因,除了它的靈活性:
svn2git
(如果使用正確的) 重建歷史會更好更干凈,尤其是對於具有分支和合並等更復雜的歷史的情況git-svn
標簽包含一個額外的空提交,這也使它們不屬於分支的一部分,因此在您將--tags
給命令之前,正常的fetch
不會獲取它們,因為默認情況下只有指向已提取分支的標簽也被提取. 使用正確的 svn2git 標簽是它們所屬的地方svn2git
輕松配置它,使用git-svn
您最終會丟失歷史記錄svn2git
您還可以輕松地將一個 SVN 存儲庫拆分為多個 Git 存儲庫svn2git
比使用git-svn
快上無svn2git
git-svn
更差而 KDE svn2git
更優的原因有很多。 :-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.