簡體   English   中英

SVN到GIT,標簽轉換為分支

[英]SVN to GIT with tags converted to branches

我曾嘗試在SO和其他地方找到類似的情況,但空手而歸,但我無法想象這是獨一無二的。

我正在努力將公司從Subversion轉換為git(GitHub)。 我們內部有一個很大的SVN存儲庫(大約60gb),我們將對其進行轉換,我們的結構絕對不是標准的。 我們的存儲庫如下所示:

branches\
  version_1.0
  version_1.1
  version_1.2
  version_1.3
  version_1.4
  version_1.5
tags\
  cust_a_test
  cust_a_prod
  cust_b_test
  cust_b_prod
  cust_c_test
  cust_c_prod
  cust_c_dev
  cust_d_test
  cust_d_prod
  cust_e_test
  cust_e_test_1.3
  cust_e_prod
  cust_f_test
  cust_f_prod

我們的每個客戶都可以使用branchpot \\文件夾中的任何版本(可能)。 但是,這些標簽不是靜態的,因此我們正在積極地對客戶標簽進行提交(以使其與分支版本,修補程序,客戶特定的修改等同步)。 結構也不是一致的,因為有些客戶只有一個測試/產品標簽,而另一些客戶在測試時卻具有特定於開發/測試/產品或版本的標簽。 一團糟。

我設想使用這樣的結構將我們轉移到git上:

branches\
  master
  version_1.5_dev
  version_1.5_test
  version_1.5_prod
  version_1.4_dev
  version_1.4_test
  version_1.4_prod
  version_1.3_dev
  version_1.3_test
  version_1.3_prod
  version_1.2_dev
  version_1.2_test
  version_1.2_prod
  version_1.1_dev
  version_1.1_test
  version_1.1_prod
  version_1.0_dev
  version_1.0_test
  version_1.0_prod
  cust_a_prod
  cust_a_test
  cust_a_dev
  cust_b_prod
  cust_b_test
  cust_b_dev
  cust_c_prod
  cust_c_test
  cust_c_dev
  cust_d_prod
  cust_d_test
  cust_d_dev
  cust_e_prod
  cust_e_test
  cust_e_dev

我最初想為每個版本/客戶創建一個單獨的存儲庫(我們在為最新支持版本添加新版本的同時為較舊的受支持版本開發修復程序/附加程序),但是合並存儲庫之間的更改存在太多限制,看來分支更好適合。

是否可以將我們的Subversion存儲庫導入git,同時將標簽轉換為分支,並(理想情況下)保留每個分支/標簽的歷史記錄?

根據我們擁有的客戶數量,可以花點時間手動創建分支機構,但這不包括歷史記錄。

我使用svn2git非常成功。 您可以導出到多個存儲庫,定義分支/標簽/主體的自定義路徑。 示例目錄中有很多示例。 我確實發現了樣本中未定義的功能。 您可以定義前綴以添加到任何導出的路徑。

match /branches/bar/
  repository my_repo
  branch bar
  prefx foo
end match

我分支foo / bar的最終結果是在回購my_repo中創建的。

https://github.com/svn-all-fast-export/svn2git

編輯:

由於該工具的靈活性,您可以輕松地將標簽轉換為分支

match /tags/cust_a_test/
  repository my_repo
  branch cust_a_test
end match

暫無
暫無

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

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