![](/img/trans.png)
[英]Missing branches cloning a non-standard svn repository using git-svn clone
[英]Cloning a Non-Standard Svn Repository with Git-Svn
我對Git比較陌生,但我發現在家工作很容易,我想在我們的項目存儲在Svn存儲庫中的工作中使用它。 不幸的是,存儲庫略微不標准,我無法克隆它們。 當然,它們都有trunk,branches /和tags /,但是在命中實際項目目錄之前,branch /和tags /都有子目錄:
trunk/
branches/maintenance/release1
branches/maintenance/release2
...
branches/development/feature1
branches/development/feature2
...
tags/build/build1
tags/build/build2
...
tags/release/release1
tags/release/release2
克隆后:
$ git svn clone -s --prefix=svn/ https://mydomain.com/svnproject
$ git branch -r
development
development@1340
maintenance
maintenance@1340
tags/build
tags/build@1340
tags/release
tags/release@1340
trunk
trunk@1340
我沒有得到任何實際的項目分支或標簽。 我實際上需要能夠在主干,一個維護分支和一個開發分支上工作。 我已經嘗試過這種方法,除了修改配置的幾個黑客,但沒有什么對我有用。
有什么方法可以將我的非標准Svn項目的關鍵組件放到本地git存儲庫中,以便我可以輕松地在它們之間移動?
非常感謝。
更新:我應該補充一點,我不能批量切換到Git(尚)。 還有其他團隊成員參與和國際存在。 轉型的后勤工作比我更願意承擔,直到我對Git更加滿意; 正如我所提到的,我還是很新的。 我幾乎沒有觸及其功能的表面。
李B是對的。 doener在#git中提供的答案是將Git升級到1.6.x(我一直在使用1.5.x)。 1.6.x提供了深度克隆,因此可以使用--branches
選項使用多個通配符:
$ git svn clone https://svn.myrepos.com/myproject web-self-serve \
--trunk=trunk --branches=branches/*/* --prefix=svn/
$ git branch -r
svn/development/sandbox1
svn/development/feature1
svn/development/sandbox2
svn/development/sandbox3
svn/development/model-associations
svn/maintenance/version1.0.0
svn/trunk
正是我需要的。 感謝所有人的洞察力。
您可以嘗試nirvdrum的svn2git (似乎是最新的),以便將您的svn導入git存儲庫嗎?
(2009年初, Paul提到了這個iteman的svn2git來代替這個原始的jcoglan的svn2git ,就像他的作者提到的那樣:“快速破解我的代碼脫離Subversion”)
它比git svn clone
更好,因為如果你在svn中有這個代碼:
trunk
...
branches
1.x
2.x
tags
1.0.0
1.0.1
1.0.2
1.1.0
2.0.0
git-svn
將通過提交歷史記錄來構建一個新的git repo。
它將所有分支和標簽導入為遠程svn分支,而你真正想要的是git-native本地分支和git標記對象 。
因此,在導入此項目后,您將獲得:
$ git branch
* master
$ git branch -a
* master
1.x
2.x
tags/1.0.0
tags/1.0.1
tags/1.0.2
tags/1.1.0
tags/2.0.0
trunk
$ git tag -l
[ empty ]
在你的項目完成svn2git后,你會得到這個:
$ git branch
* master
1.x
2.x
$ git tag -l
1.0.0
1.0.1
1.0.2
1.1.0
2.0.0
當然,這個解決方案並不是單程旅行。
您可以隨時返回到您的svn存儲庫,使用... git2svn (也存在於那里 )
這個想法依舊:
SVN作為中央存儲庫工作。
Git“在其他地方”快速在多個Git私有分支機構中進行實驗。
只導入合並的Git分支到官方SVN分支。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.