這篇文章可能有點長,但如果你認爲你可以提供幫助,請閱讀它,因爲它在字面意義上是一個救生員。svnmerge真的有幫助我嗎?
這裏是場景。我正在開發一個[KDE]項目,其主幹位於,可以這樣說:http://ubersvn.org/home/uber/trunk/myapp。另外,我正在分支上工作,可以說:http://ubersvn.org/home/uber/branches/work/myapp-mod。這就是我一直在做的:
創建分支後,我一直在分支的本地工作副本上工作,而且我經常用來從主幹中提取更改。有人告訴我,這將有助於防止最終合併回幹線時發生衝突。所以,我經常這樣做:
svnmerge.py merge
svn commit -F svnmerge-commit-message.txt
工作完成後,是時候把分支合併回幹線了。我先檢查了後備箱的工作副本:
svn co svn+ssh://ubersvn.org/home/uber/trunk/myapp
cd myapp
於是,我跟着documentation用於合併回:
svnmerge init svn+ssh://ubersvn.org/home/uber/branches/work/myapp-mod
和融合來回:
svnmerge merge --bidirectional -S svn+ssh://ubersvn.org/home/uber/branches/work/myapp-mod
而且這是問題開始的地方。 首先,從它的外觀來看,它正在合併每一個版本,因爲我分支。如果是這樣的話,我看不到我經常從後備箱中拔出並保持分支更新的重點。但是,我只是假設svnmerge以某種方式使用它來解決整個合併中的衝突。到現在爲止還挺好。
Attempt to add tree conflict that already exists
一點點在網上搜索,告訴我,這個問題可以通過以下方式解決:
svn resolve --accept working -R .
然後
其次,它聽起來東西這樣的錯誤突然結束它表明一些決議已被清除,所有。但是,現在當我這樣做:
svnmerge merge --bidirectional -S [BRANCH_URL]
它說, '沒有發現SVNMERGE信息'。我嘗試使用svnmerge init BRANCH_URL
,但它說'.' has local modifications. It must be clean
。
所以,我現在面臨的問題是:
- 我無法從我的分支拉,因爲有本地修改
- 爲了讓我的工作拷貝乾淨,我必須承諾,這是不是一種選擇因爲合併只有一半,它肯定會破壞主幹。
- 我的文件完全不一致。我不知道修訂版本是如何合併的,有些文件包含'mylittleapp.h',但'mylittleapp.h'是在稍後的版本中創建的。
- **對於每個**新文件,我的分支中都添加了大量衝突**。我**絕對**不理解這一點。我是唯一一個開發這些文件的開發人員,這些文件在任何時間都無法在主幹中使用。爲什麼這些文件中有太多衝突?
- 有大量文件叫做`mybigapp.h.merge-(right | left).r [0-9] +`和`mybigapp.h.working`。 `mybigapp.h`本身就是完整的衝突。如此多的衝突是人類不可能解決的。
- 由於一半的文件假設存在一個實際上不存在的文件,我無法測試或做任何事情,直到我得到該文件。我試圖添加樹衝突錯誤後,我不能得到任何以後的修訂。
那麼,我該如何從這裏開始?一種解決方案似乎只是從分支中區分,應用於中繼,然後提交。但根據我工作的組織的政策,這是不可接受的。任何幫助非常感謝,我會很感激。
感謝, 羅漢
您正在使用什麼版本的顛覆? 版本> = 1.5提供「內置」合併跟蹤。根據我的理解* svnmerge *已過時。 – zellus 2010-09-18 13:03:46