2011-01-12 67 views
0

我已經從我的SVN倉庫簽出了一個特定「庫」的多個副本 - 每個使用相同代碼的工作相關項目的副本。我已經對存儲庫中的一個進行了修改,我想更新其餘項目中的副本以反映這些更改。預測與自己的修訂「衝突」?

不過,我想保留拒絕少數爲我正在進行的項目的一個變化的權利,所以如果有一些方法可以讓我得到的衝突與文件named asfilename.mine警告這將是巨大的,filename.rOLDREVfilename.rNEWREV好像其他用戶已經提交了這些更改(但這些更改已由我自己提交到存儲庫),而不是自動更新所有受影響的文件(使用svn update)。

這可能嗎?

回答

1

您應該使用分支而不是多次檢查同一個項目。

想象這個回購協議:

repos 
    |-- trunk/ 
    |-- branches/ 
     |-- projectX 
     |-- projectY 
     `-- projectZ 

比方說,你開發一個功能,並想把它只會增加在projectY,你可以在merge從主幹代碼branches/projectY

如果另一個功能包含在projectXprojectZ中,則將該功能合併到這兩個分支中。

這樣,您可以控制每個項目中的內容,並在每個項目中記錄歷史記錄。

+0

我喜歡這個想法。我將來可能會這樣做,但是有什麼方法可以在使用`svn update`進行更新之前追溯更新?謝謝... – hatmatrix 2011-01-12 16:35:52

+0

@crippledlambda不知道你的意思。你想知道如何知道在合併之後提交之前所做的更改。或者在更新工作副本之前查看存儲庫服務器有哪些更改。 – yvoyer 2011-01-12 16:45:42

1

如果您有一個項目A需要停留在依賴項B的舊版本中,那麼您可以在項目A中設置一個svn:externals property,該項目指向B並帶有明確的修訂版本號。例如,項目A的主幹文件夾將有一個svn:externals屬性與此內容:

-r148 http://svn.example.com/projects/B/trunk B 

當你結賬項目A,這會導致一個文件夾B出現包含項目B.變化的樹幹修訂版148到項目B不會影響A,除非您明確更改svn:externals屬性中的修訂號。