簡體   English   中英

git svn在大型存儲庫中分支

[英]git svn branches in a large repository

我正在使用“ git svn”與具有非標准分支約定的大型SVN存儲庫進行交互。 我看到有多種方式克隆將svn /分支機構指出這里

我看到了非常不同的行為:

說SVN回購如下:

http://svn.mycom.com/svn/Project
-->trunk
-->defects
-->uat

生產在“樹干”中,分支在“缺陷”中,當前發展在“燕麥”中。

因此,我可以做以下事情

1.克隆直接燕麥

$ git svn clone http://svn.mycom.com/svn/Project/uat

當我這樣做時,我的.git / config文件看起來像:

[svn-remote "svn"]
    url = http://svn.mycom.com/svn/Project/uat
    fetch = :refs/remotes/trunk

然后,我按此處所述添加分支。.git / config類似於:

[svn-remote "svn"]
    url = http://svn.mycom.com/svn/Project/uat
    fetch = :refs/remotes/trunk
[svn-remote "task1"]
    url = http://svn.mycom.com/svn/Project/defects/task1
    fetch = :refs/remotes/task1

現在當我跑步

 $git log --decorate --all --graph

我看到我的新分支只有1次提交,即。 分支創建與實際掌握的歷史無關。 它顯示了自己的歷史記錄行,與先前的提交沒有任何關系。

2.用-T克隆,然后添加分支我發現的替代解決方案是:

$git svn clone http://svn.mycom.com/svn/Project/ -T uat Project --no-minimize-url
   Since the "Defects" has lot many branches, and it would take hours, i then did:

[svn-remote "svn"]
    url = http://svn.mycom.com/svn/Project
    fetch = uat:refs/remotes/trunk
    branches = defects/{task1}:refs/branches/*

這似乎工作得很好,而且我確實掌握了歷史。 我想知道,如果有什么我需要考慮從一種選擇與另一種選擇進行比較的話,那么哪種方法更好? 但是,在此選項中,如果必須添加另一個分支,則不能簡單地在逗號分隔的列表中編輯branchs部分和新的分支名稱,例如branchs = errors / {task1,task2}。 這似乎不起作用,感覺像是GIT缺陷。 然后,我在分支下面添加另一條提取行

[svn-remote "svn"]
    url = http://svn.mycom.com/svn/Project
    fetch = uat:refs/remotes/trunk
    branches = defects/{task1}:refs/branches/*
    fetch = defects/task2:refs/branches/task2

這工作正常,我得到了分支的歷史記錄,並能夠切換無問題。 但感覺就像是駭客。 我希望有一種方法可以將其附加到看起來很干凈的分支列表中。

我使用並喜歡第二種方法,這是IMO正確的方法。 通過第二種方法,您將擁有存儲庫的所有歷史記錄,並且可以輕松地在所需的分支之間切換。 我也認為,如果要在本地創建一個新分支,然后將其提交到SVN ,則第一種方法會給您帶來一些問題。

使用幾天后,最有效的選擇是選擇#2。

注意:不要為以后創建的新分支添加“獲取”行。 我發現添加新分支名稱作為列表中的第一件事就可以了。 新的分支信息被拉。

[svn-remote "svn"]
 url = http://svn.mycom.com/svn/Project
 fetch = uat:refs/remotes/trunk
 branches = defects/{task2,task1}:refs/branches/*

如果這樣做沒有拉分支,只需刪除“ .git / svn / .metadata”文件夾並運行

git svn fetch

它基本上將再次獲取信息,但至少看起來很干凈。 添加訪存行也可以。 我個人不在乎這兩種方式。 如果您很細致,則可以如上所述添加分支。

暫無
暫無

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

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