2010-05-06 47 views
6

嗨,想象一下在版本控制下的一個普通的webapp,其中log4j.properties。我無法將它添加到svn:ignore,因爲它是一個強制性文件。如果我爲開發進行自定義更改並且我不想提交它們,那麼我必須小心提出意外提交。對於一個文件很容易處理,3個或更多的文件變得令人毛骨悚然。從svn保護文件提交

有沒有辦法從svn commit中暫時禁用這些文件?所以它的easiert承諾?我正在使用svnsubclipse

回答

10

來處理這種情況的典型方法是做到以下幾點:

  1. 使文件的副本,下指示它是一個模板
  2. 提交模板到存儲庫的名稱
  3. 忽略原始文件

這樣,你將有一個新的副本躺在身邊,並在部署過程中,你可以從模板的文件複製回真正的文件。

這樣你不會冒險對這個文件做出不好的改變,至少對於其他版本控制系統,你不會冒險檢查文件並忘記鎖定。

Subversion沒有辦法指出一個文件只是-conn-first-time類型的東西,所以當你將它添加到你的版本庫時,你告訴Subversion跟蹤該文件的變化。除非您手動確認(或編寫工具或更改工具),否則永遠不會更改此文件,Subversion不會幫助您。

+0

+1:我使用完全相同的技術,效果很好。 – ereOn 2010-05-06 07:47:04

+0

好吧,但是對於新工作者來說簽出項目並重命名所有這些文件以便能夠引導(例如,想到wtp,其中沒有可以自動重命名文件的構建腳本),這並不是很不容易? – codevour 2010-05-06 12:00:18

+1

讓我改述我的答案。沒有辦法讓Subversion做你想做的事。您基本上必須選擇您想要使用的不便之處。我沒有使用「wtp」的經驗。 – 2010-05-06 14:13:15

1

我這樣做的方式是讓文件名爲log4j.properties.server,然後我設置了我的部署腳本來複制.server文件而不是普通文件。

7

我對這個問題的解決方案是在我們的svn服務器上創建一個新的(有點虛擬的)用戶,並將他添加到所有項目中,讓我們稱他爲Locker。 因此,我在用戶Locker上設置了一個不應該在代碼庫中修改的配置文件。

等voilà!這些文件不會再被錯誤地提交,但是如果生產系統需要對配置文件進行更新,可以由任何團隊成員強制執行鎖定,或者可以通過知道Lockers證書的文件更新和重新鎖定文件!

也許這不是一個適合每個人的解決方案,有些公司的法規可能禁止使用代理用戶。