2013-07-26 54 views
1

使用SVN在多開發人員環境中工作我有時會遇到開發人員(偶然)用複製/粘貼替換文件的問題文件。這有時會被忽視,因爲在subclipse的synchonisation視圖中提交之前,diff才起作用。防止用戶在使用Subclipse或(apache)提交期間'替換'SVN

在SVN中,這會以'(文件)替換'(而不是修改)的提交結束。 這個替換使得它很難看到文件的歷史,因爲SVN認爲它是一個新文件而不是修改文件。

我想阻止開發人員能夠提交替換。或者至少讓他們非常清楚他們實際上正在努力做到這一點。

我能我的問題拆分成多個層,這取決於什麼是可能的:

  1. 會不會有,以防止一個被允許在它裏面「替換」提交的方式,沒有特殊的訪問(服務器在Apache SVN)?
  2. 會有一種方法來防止其中的'替換'提交嗎? (在subclipse中)
  3. (在情況1和2不可能的情況下)有沒有辦法讓開發人員意識到他會在他的commit中做'替換'? (在subclipse中)

非常感謝。

回答

0

他們是否使用Subclipse的更新版本?這其中的原因大部分是由Eclipse以及它驅動團隊API的方式引起的。在某些情況下,當您複製並粘貼時,會告知Team API您刪除了該文件,這會導致Subclipse運行svn delete。新文件然後是svn add,這相當於一個Replace。

Subclipse的較新版本檢測到這種情況,並做一些步驟的舞蹈,使其回到修改。 Subclipse的當前版本是1.10.1,該版本或最新版本的1.8.x應該在其中進行這些更改。

  1. 您可以在服務器上編寫預提交鉤子來查看提交中的更改,並在提交包含Replace時拒絕提交。看看Subversion提供的svnperms.py示例鉤子腳本。如果它還沒有這樣做,它會告訴你如何去做。

  2. 不能阻止它發生,但是一個更新的Subclipse版本可能會使它不那麼常見。

  3. 裝飾器可能看起來不一樣,SVN屬性會顯示狀態替換,但沒有什麼會讓用戶看到這些東西。 #2將是更好的選擇。