2015-12-17 33 views
0

我有一個Ruby on Rails項目,我正在使用SVN(1.6.17,Debian)進行版本控制。我在本地使用git(2.5.4,OS X)和git-svn,我一直在爲一個項目的主要更新(使用新的框架版本)開發一個分支(稱爲「ruby22rails42」),並定期提交更改來自SVN「主幹」,以跟上項目的最新進展。最近,我在我們的在線SVN服務器上創建了一個鏡像分支(「/branches/v8.5-ruby22rails42」),將我的本地Git分支推到那裏,然後再與其他開發人員合併,以供其他開發人員查看。git-svn:重命名分支並將其用作新的SVN'trunk'而不是使用「merge --reintegrate」?

現在我基本上希望「/branches/v8.5-ruby22rails42」成爲新的「trunk」,並將舊的SVN中繼保留爲版本分支(我們稱之爲「/branches/v8.4-ruby19rails3」) 。不幸的是,「SVN合併--reintegrate」似乎失敗,出現「合併信息不支持」錯誤:

/opt/trunk$ svn merge --reintegrate ^/branches/v8.5-ruby22rails42 
svn: Abfrage der Zusammenführungsinformationen wird von »file:///.../branches/v8.5-ruby22rails42« nicht unterstützt 

說一個svnadmin upgrade修復這個錯誤?我現在不想更新服務器上的SVN實用程序,因爲SVN回購也被很多其他工具訪問。

如果不是:

(如何)我能不能SVN服務器和我的git - svn的本地存儲庫中的重命名樹幹都用我的分支作爲新的「主幹」,從而避免在SVN繁瑣的合併進程共?我將如何告訴我的本地Git倉庫跟蹤這個重命名過程? 這可能會要求所有客戶放棄本地簽出並重新簽出新的中繼線,但這是可以接受的。

如果這是不可能或不可取的,如何避免使用Subversion 1.6.17的mergeinfo錯誤,併成功地將我的分支合併到trunk中?然後我可以在合併之前從上次提交中創建一個新分支,並將其保存爲我的「v8.4-rails3ruby19」分支。

回答

0

我可能在您的上下文中缺少某些內容,但通常您不想替換原始標記,而是取而代之。我可能會考慮在你的地方是什麼樣的順序如下:

  1. 標籤當前軀幹和/或創建一個速戰速決分支/branches/v8.4-ruby19rails3

  2. 合併你的分支到主幹。或者通過svn或者git/git-svn

例如,按以下順序將壁球你所有的作品在您的分支,並把它放到後備箱:

git svn fetch 
git checkout svn/trunk 
git merge --squash ruby22rails42 
git commit -m "Merged ruby22rails42" 
git svn dcommit 
+0

如果我只有git的擔心,我只想已合併。然而,上游是(仍然)SVN,並且SVN因爲某種原因不想合併(見上面的錯誤),我不想在SVN或Git倉庫中丟失合併歷史記錄。我通過搜索「git svn merge」所得到的建議都表示要在Subversion中進行合併,否則信息將會丟失...... – Jens

+0

Git-Svn不鼓勵合併並傾向於重新分配。如果你不想讓你的歷史遺失,你可以嘗試'git svn rebase',然後'git svn dcommit'。不幸的是,由於從主幹合併(而不是回扣),回扣可能不那麼順利。如果這不起作用,你總是可以進入低水平:參見'svn cp'。 –

+0

我繼續升級SVN元數據格式以允許mergeinfo,然後使用純SVN進行合併。之後我還有一些倒退的變化,但並不多。所以使用純SVN合併來完成這種任務可能是最好的解決方案。 – Jens

相關問題