2013-08-06 125 views
1

我想學習使用git-svn。我有我的硬盤上一個SVN本地資源庫,我已經簽出前一陣子使用這樣的事情:如何克隆一個git回購從本地svn的

svn co http://myserver.com/mysvnrepo/trunk/ /mysvnrepo/ 
ls -a /mysvnrepo/ 
.  ..  .svn  foo  bar 

/mysvnrepo/是巨大的,所以我想,以避免重新下載或不惜一切代價複製文件。

我不知道是否有一種方法來git clone這個本地回購,而無需下載/複製任何東西(因爲它已經存在)。

我有this這似乎正是我要找的,但是當我做,它並沒有完全放棄我什麼,我期待。

cd /mysvnrepo/ 
git svn clone file://mysvnrepo/ 
ls /mysvnrepo/ 
.  ..  .git  .svn  foo  bar 
git status 
# On branch master 
# 
# Initial commit 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
# .svn/ 
# foo/ 
# bar/ 

我希望git檢測foobar爲「版本和最新的最新的」。

根據docs似乎我需要使用git svn init,因爲git svn clone運行fetch,我當然不想要。所以我試了

git svn init --trunk=file:///mysvnrepo/ 

......但沒有運氣。

我完全新的git,所以我的困惑是現成的,圖表......我做得完全錯誤的?

在此先感謝

回答

1

你不能把一個顛覆快照,並將其轉換成一個Git倉庫。

這聽起來像你正試圖避免的svn git倉庫的一個漫長的初始化:這通常會盡量準備好你的整個歷史。這可以用另一種方式來完成,通過限制取到最近的歷史取決於有多少歷史,是與你有關的:

git svn clone -s -r 12334:HEAD https://svn.host.org/repo 

其中12334是最早的SVN版本你有興趣,並假設回購敷設以標準svn方式分支和標籤。

+0

謝謝andygavin ......我也瞭解這一點,這是我能做的最好的,但可悲的是它還是重新下載的所有文件,這正是我想避免這樣做。 – OLL