我最近繼承了一個項目,並希望通過將我們的內部Git存儲庫與客戶端的SVN存儲庫關聯來清理'代碼交付'工作流程。將現有的Git存儲庫與現有的SVN遠程關聯,但沒有共同的歷史記錄
存儲庫概述
我的公司已經爲客戶開發了一個軟件包。我們使用Git存儲庫跟蹤我們的更改。完全分開,我們提供偶爾的代碼丟棄和釋放二進制文件到客戶端的SVN存儲庫。客戶端SVN倉庫的文件結構是我們自己文件結構的一個子集 - 它包含一些文件和文件夾,但不是全部。
期望中的工作流
最後,我想我會在我們稱爲「ClientSVNDelivery」 git倉庫創建一個分支。這個分支應該反映客戶SVN回購的狀態。無論何時我們想向客戶提供更新,我想git merge
我們對該分支(從「主」)的更改,然後git-svn dcommit
這些更改到他們的遠程站點。
問題
從邏輯上講,我遇到的問題是出發點。由於這兩個存儲庫都有很長的歷史記錄,並且文件夾結構不完全相同(再次,SVN項目是我們內部git倉庫中文件夾的一個子集),所以我不確定如何創建需要的關聯建立我的'ClientSVNDelivery'暫存分支(即如何形成一個允許合併實際工作的共同祖先)。說實話,我甚至無法描述我想要做什麼!
我會從最近的內部版本創建分支嗎?一些隨意的早期修訂?或者我會分拆remove-svn歷史嗎?
問題
有沒有人處理過這種情況?您是否可以簡化流程,以及您採取了哪些步驟來建立中間分支機構?你是如何創建歷史協會的?
不知道你所描述的快速和漂亮的解決方案,但我認爲其中一種可能的方法是從**最新的SVN **分支創建一個Git分支 - 這會給你使用Git將代碼交付給客戶端的能力。比你可以繼續在你的分支Git工作和**櫻桃選擇**只改變指定的路徑到該「ClientSVNDelivery」分支[描述] [這裏](http://stackoverflow.com/questions/5717026/how-to -git-cherry-pick-only-changes-to-certain-files)(您可以編寫預提交鉤子以放棄在「ClientSVNDelivery」分支中不需要的路徑中的更改) – tijs
這是一個很好的選擇。如果沒有辦法陪審 - 在兩個分支之間搭建共同的祖先,我認爲這是我可以選擇的選項。 (你應該發佈一個答案,即使有更好的選擇,它肯定會得到我的upvote。) – BTownTKD