我剛開始使用SVN。 我只爲自己創建了一個開發分支,這樣我可以在將我的更改合併到主幹之前做任何我想做的事情。SVN:分支問題
不幸的是,當我不得不合並時,這是一場噩夢。 我的樹看起來就像是:
trunk : A-B
\
dev : C-D-E
我只是想帶回我的變化E
到軀幹。 一切正在編譯並在E
上正常工作。 但是當我合併時,我無法再編譯。 我有衝突,我不明白:
- 一些函數添加他們的身體改變,但參數列表仍然是舊的。
對於前:
void func(int paramA) // from rev B
{
paramB++; // from rev E and causing compilation error
}
- 一些新的文件被添加,但其他一些則沒有。 SVN抱怨說因爲它們不存在於主幹中而衝突的文件。但我不明白如何創建一些文件和其他文件不能。
我已經嘗試了很多不同的選項與烏龜SVN(我恢復了十幾次)。 我也讀過很多關於使用SVN分支的內容。但我找不到解決我的簡單問題。大部分答案都很老舊(超過5年)。
我習慣用Git來分支。而一切似乎都是合乎邏輯的。但現在與SVN,我完全失去了! 有些人可以給我一些建議。 我的意思是關於分支的日常使用,而不是關於整個項目的分支策略。 我只是尋找建議,以避免合併衝突時,他們不應該發生的痛苦!
任何幫助真的很感激! 謝謝:)
這在我的描述中並不明顯,但我也改變了分支中的參數行。這就是爲什麼我不明白爲什麼在合併期間參數行沒有更新。關於新文件,我可能有一個與我過去刪除的名稱相似的文件。但是,既然它在分支上很有用,我不明白爲什麼SVN在合併時會抱怨它。最後,我幾乎做了你所說的話:我將樹幹合併到我的分支中,然後手動將整個項目目錄複製回樹幹!但我期待的是更清潔的東西:( – Plouff
不,我只是想複製當你合併時說「樹衝突」的特定文件。對於參數行,你應該看到svn說文件有衝突,並允許你帶你需要告訴svn要使用哪個版本的行,svn不知道你的版本取代了rev B的版本,因爲B也改變了它。 – Ben
我得到了一個diff窗口,但是其他的衝突,不是爲了這個,這就是爲什麼我在合併過程中迷路了,就好像SVN解決了差異,我的一個隱含的問題是,「我誤解了什麼?」。告訴我,我對合並的期望是正確的,我可能做錯了,但SVN沒有幫助,趕上!謝謝你的幫助! – Plouff