我有一個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」分支。
如果我只有git的擔心,我只想已合併。然而,上游是(仍然)SVN,並且SVN因爲某種原因不想合併(見上面的錯誤),我不想在SVN或Git倉庫中丟失合併歷史記錄。我通過搜索「git svn merge」所得到的建議都表示要在Subversion中進行合併,否則信息將會丟失...... – Jens
Git-Svn不鼓勵合併並傾向於重新分配。如果你不想讓你的歷史遺失,你可以嘗試'git svn rebase',然後'git svn dcommit'。不幸的是,由於從主幹合併(而不是回扣),回扣可能不那麼順利。如果這不起作用,你總是可以進入低水平:參見'svn cp'。 –
我繼續升級SVN元數據格式以允許mergeinfo,然後使用純SVN進行合併。之後我還有一些倒退的變化,但並不多。所以使用純SVN合併來完成這種任務可能是最好的解決方案。 – Jens