簡體   English   中英

將文件從git repo拉到svn repo

[英]Pulling files from git repo into svn repo

因此,我的團隊目前正在為我們的項目使用svn存儲庫。 有另一個團隊並行工作,但是他們正在使用git存儲庫。 我想采用其他團隊的代碼並將其合並到我們的代碼中。 我已經嘗試過幾次,但是我一直在不合並的情況下提取它們的代碼,即它只會覆蓋我們的文件。 我一直在使用git-svn工具,但收效甚微,我擔心在我們的svn日志中,越來越多的無用和垃圾提交的情況在老板面前顯得不好。

這些是我遇到的一些障礙:

  • 我們有一個單獨的svn存儲庫,其中包含大約10個組件,另一個團隊為每個組件都有一個存儲庫。
  • 我一直在跟蹤一個使用-s選項的示例,該選項是我們的svn存儲庫所不具備的標准布局(使用trunk / branches / tags的svn公共目錄結構)的縮寫。 如果沒有該選項,我將無法使該方法正常工作,這會導致所有文件合並(基本上只是復制)到一個我不在乎的空目錄中。
  • 最好,我不想保留他們的整個提交歷史記錄。 我只想要一個提交,說我將他們的倉庫與我們的倉庫合並了。 還是我必須合並的每個git倉庫的提交。 上一個項目符號中提到的同一示例復制了整個提交歷史記錄,這為我們的日志添加了很多提交內容,而我的團隊對此並不關心。

這里是例子(在此先回答 ):

mkdir copy-git-repo
cp -a orig-git-repo/. copy-git-repo/
cd copy-git-repo/
svn mkdir --parents https://svn/url/PROJECT/trunk -m "Trying to merge of of their git repos into our svn"
git svn init https://svn/url/PROJECT -s
git svn fetch
git rebase trunk master
# if there are merge conflicts
git status
# deal with merge conflicts listed 
git add .
git rebase --continue
git svn dcommit 

有人看到我犯了一個錯誤嗎?

如果您習慣使用svn,我建議您直接使用svn(即使我討厭)。 所以....如果您看一下另一支團隊的倉庫(正在使用git的倉庫),可以將svn修訂版(來自您的svn倉庫)映射到git倉庫的修訂版...我是說, 1到1,不關閉修訂。 它必須與修訂完全匹配。

假設您要將git分支X(從其倉庫中)合並到您的主干分支(從您的倉庫中)。 如果找到X的祖先,它等於軀干的祖先為1到1,那么您可以:

  • 在您的svn存儲庫上創建一個分支,該分支從我們正在討論的祖先開始
  • 從該分支上的項目中刪除所有文件( 不提交
  • 獲取分支X的內容的副本(在git repo ..... X的最頂端的內容上)並將其放在分支內。 現在提交svn。 此時,您剛剛創建的修訂版具有git和svn都可以看到的X祖先與分支X的尖端之間的所有差異。
  • 現在,您可以使用創建的該分支,然后嘗試將其合並到主干中。

作為最后的建議(抱歉,這是我的觀點): 考慮永久過渡到git 要適應svn的差異需要花費一些精力...但是您不會后悔。

暫無
暫無

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

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