簡體   English   中英

沒有通用歷史記錄,將現有的Git存儲庫與現有的SVN遙控器相關聯

[英]Associating an existing Git repository to an existing SVN remote, with no common history

我最近繼承了一個項目,並希望通過將內部Git存儲庫與客戶端的SVN存儲庫相關聯來清理“代碼交付”工作流程。

資料庫概述

我公司已經為客戶開發了一個軟件包。 我們使用Git存儲庫跟蹤更改。 完全獨立地,我們偶爾提供代碼滴和已發布的二進制文件到客戶端的SVN存儲庫。 客戶端SVN存儲庫的文件結構是我們自己文件結構的子集-它包含一些文件和文件夾,但不是全部。

所需的工作流程

最終,我想我想在我們的git存儲庫中創建一個名為“ ClientSVNDelivery”的分支。 該分支應反映客戶端的SVN存儲庫的狀態。 每當我們想向客戶端交付更新時,我都想git merge我們的更改git merge到該分支(從“ master”),然后git-svn dcommit這些更改提交到其遠程站點。

問題

從后勤角度來講,我遇到的問題是起點。 由於兩個存儲庫都有很長的, 完全不關聯的歷史記錄,並且文件夾結構也不相同(同樣,SVN項目是我們內部git repo中文件夾的子集),所以我不確定如何創建設置所需的關聯我的“ ClientSVNDelivery”登台分支(即,如何形成允許合並實際起作用的共同祖先)。 老實說,我什至無法描述我想做什么!

我是否要根據我們最近的內部修訂版本創建分支? 一些任意的較早版本? 還是我會改掉remove-svn歷史記錄?

以前有人處理過這種情況嗎? 您是否能夠簡化流程,並采取了哪些步驟來設置中間分支? 您是如何創建歷史關聯的?

不知道您所描述的快速,不錯的解決方案,但是,我認為,一種可能的方法是從最新的SVN分支創建一個Git分支-這將使您能夠使用Git向客戶端交付代碼。 比起您可以繼續在Git中的分支繼續工作,並且僅按此處所述,僅在指向該“ ClientSVNDelivery”分支的指定路徑中進行更改選擇 (您可以編寫pre-commit鈎子來丟棄在“ ClientSVNDelivery”中不需要的路徑中的更改科)

您可以使用git svn子命令通過git與遠程SVN存儲庫進行交互。 閱讀手冊頁(由於SVN限制和阻抗不匹配,有一些警告)。 我還沒有嘗試過使用git svn來吸取SVN存儲庫,然后再刪除它,但是我看不出它為什么不起作用的任何原因。

如果您使用git svn路線,請注意,並不是真正設置SVN來吸收項目的整個歷史,此過程可能需要長時間。 如果它崩潰或以其他所有方式停止運行,則可以重新啟動它(至少在大多數情況下是這樣),然后它將繼續執行其任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM