我試圖將我的SVN存儲庫轉換爲GIT存儲庫。 問題在於,在SVN中有幾個並行維護的不同軟件版本的活動分支。 所以SVN安裝的財產以後看起來像這樣:將多個活動分支轉換爲GIT存儲庫到GIT
SVN ROOT
|- trunk
|- branches
| |- v1
| |- v2
| |- v3
|- tags
| |- v1
| | |- 0
| | |- 1
| |- v2
...
現在我想創建一個爲每個 的SVN分支中的一個分支Git倉庫。創建存儲庫並移植標籤根本不是問題。 我做了
git svn init -s --tags=tags/v1 --tags=tags/v2 <REPO_URL>
# modified .git/config to use tags/v1/* for the tags of the different versions
git svn fetch
並在此之後,我得到所期望的樹枝,我能夠通過使用
git checkout -b v1 origin/v1
存在的問題,以檢查出不同的軟件版本爲SVN存儲是非常古老的,不同分支的所有分支從中繼。但是我的開發需要我修復一個bug,將其合併到v2以及dcommit一切都返回到SVN。
所以我的問題是什麼是得到清潔(mergable/rebaseable)GIT分支的最佳方式?與此有關的工作流程應該如何? 我應該添加一個新的分支在GIT每個版本,比方說svn_v1,重訂的V1這個,然後dcommit從那裏?或者什麼是將提交回SVN的最佳方式?
EDIT:
我已經嘗試過根據上游合併變基不同的分支(例如重訂V2到V1和軀幹到V2),但這弄亂 我的歷史和當試圖dcommit它想要提交所有提交我在當前歷史上重新提交的提交。這會使SVN歷史混亂,因爲這些提交已經在回購。
EDIT2:
爲了使問題更加清晰。 Imageine以下病史:
D--E--F v1 K--L--M v2
/ /
A--B--C--G--H--I--J--N trunk
^
|
introduced a bug
由於犯B
引入了錯誤,所有分支v1
,v2
,並且trunk
受到影響。我們公司的政策現在(在SVN中)在受影響最小的分支(本例中爲v1
)中解決此問題,然後通過 分支合併提交至trunk
。 工作流如何看起來像在GIT中做同樣的事情,例如在SVN中,v1
中的提交被標記爲合併到v2
?
感謝您的反饋意見。是的,我的問題是要使用工作流程。如果我理解櫻桃採摘的文檔是正確的,那麼SVN中的兩個獨立提交併不會將v1上的提交合併到v2中,是嗎?由於SVN真的很老,我認爲分支已經搞亂了。問題是,我需要首先在SVN中解決這個問題,還是我可以直接在GIT中完成? –
我可能會嘗試在轉換到'git'後嘗試修復它,然後不用擔心將它鏡像到'svn'世界。 – AnoE
這將是我的最愛,但問題是,我公司的整個基礎架構(構建系統,CI等)基於SVN,因此需要SVN鏡像。 –