2013-02-20 16 views
0

我不完全理解這個糟糕的遺留軟件正在發生什麼。 我試過svn copy svn://trunk svn://branch/name仍然缺少某些目錄中的文件。我已經嘗試svn merge -rxxx:yyy svn://branch/name在主幹目錄中,修改版本已更改,沒有文件被添加到仍存在於主幹中的分支中。如何在gvn中合併svn的相同方式?

這是怎麼回事?如何以git方式合併?只是克隆上帝該死的文件從一個目錄到另一個,就是這樣.. svn merge意味着什麼不同?

的問題是如何做相同的SVN ???:我有嵌套主幹/分支庫在這裏

$ git checkout master 
$ git merge hotfix 

一個大的負..也許這敗壞所有圖片?

+3

深呼吸,放鬆。如果你認爲一個軟件很糟糕,因爲你需要閱讀手冊,你爲什麼喜歡git?你的描述太模糊了(爲什麼要合併?爲什麼要複製?你得到了什麼錯誤信息?「嵌套中繼/分支庫」是什麼意思?)。我建議你編輯問題並嘗試更清楚。 – 2013-02-20 16:26:36

回答

1
$ svn merge ^/branch/name 

或與-r但進入你的工作副本。我想你不能從svn://直接合併到svn://。合併後,只需提交

merge: Merge changes into a working copy. 
usage: 1. merge SOURCE[@REV] [TARGET_WCPATH] 
(the 'sync' merge) 
2. merge [-c M[,N...] | -r N:M ...] SOURCE[@REV] [TARGET_WCPATH] 
(the 'cherry-pick' merge) 
3. merge --reintegrate SOURCE[@REV] [TARGET_WCPATH] 
(the 'reintegrate' merge) 
4. merge SOURCE1[@N] SOURCE2[@M] [TARGET_WCPATH] 
(the '2-URL' merge) 

每個選項需要TARGET_WCPATH

1

SVN不git的方式合併 - 它合併在SVN方式。部分原因僅僅是因爲git長大後解決了類似的問題,但是在一個非常不同的環境中。部分原因是Subversion不支持「多祖先」的概念,因此所有的subversion操作都像git rebase一樣。

除非你做額外的工作,否則SVN合併行爲就像完全壓扁的git合併。 git的參數是在合併期間公開變更集合更好。

爲了讓自己更容易做更多的git類似合併,我前段時間寫了一個工具(在bash中)來幫助我在subversion中進行合併,以保留單個的變更集。這是後期的alpha質量代碼,但在多個組織中很有用:https://github.com/dmsasser/svntools。該工具適用於Linux和cygwin。

運行此工具後,結果等同於「git rebase」。

+0

感謝您分享您的工具 – holms 2013-02-21 08:09:44