我正在尋找的是這樣的:SVN:只讀/檢出只讀文件
說我有一個文件「database.conf」有一個數據庫連接一些默認值(數據庫,用戶,密碼等)。每個人都需要使用不同設置的文件(例如密碼)。但是,此文件的本地更改不應該提交給存儲庫。所以該文件應該是「僅限結帳」。那可能嗎?
我正在尋找的是這樣的:SVN:只讀/檢出只讀文件
說我有一個文件「database.conf」有一個數據庫連接一些默認值(數據庫,用戶,密碼等)。每個人都需要使用不同設置的文件(例如密碼)。但是,此文件的本地更改不應該提交給存儲庫。所以該文件應該是「僅限結帳」。那可能嗎?
我通常的解決辦法是建立一套具有不同名稱的配置文件,並把它們的源代碼控制下,連同腳本複製合適的一個實際位置;即將使用的配置文件仍然未版本化。 例如,我可以有一個文件夾「CONFIG_FILES」,包含文件「dev.config」,「production.config」,「qa.config」,等;我的部署腳本將負責將正確的腳本複製到正確的位置(比如'App.config')。
你甚至可以使用鉤自動運行該更多一些。
通過tdammers該解決方案是一個很好的!
我這樣做,我有一組不同名稱的文件,如production.config
或adrian_dev.config
。我檢查他們全部。
但是然後我有一些配置(例如在mod_perl的Apache配置,或Java的web.xml),在哪裏我說什麼「環境」我工作,這是一個字符串,例如production
,所以程序只是去例如而不需要部署腳本來複制東西。如果您需要進行更改,只需檢查配置文件即可,而不必意識到您正在處理複製的文件。
您可以創建database.conf.sample
以放入存儲庫,併爲database.conf
文件設置ignore
屬性。
這將是最簡單的解決方案,我可能會這樣做。 – MonsieurBon 2010-10-22 09:48:18
如果您使用的是Maven,你可以爲每個不同的環境配置文件。
e.g
local.filter.properties dev.filter.properties beta.filter.properties
現在在pom.xml您可以定義一些配置文件並將它們指向不同的屬性文件。
<profile>
<id>dev</id>
<build>
<filters>
<filter>src/main/filters/dev.filter.properties</filter>
</filters>
</build>
</profile>
<profile>
<id>java</id>
<properties>
<idna.build.deployment.environment>JAVA</idna.build.deployment.environment>
</properties>
<build>
<filters>
<filter>src/main/filters/java.filter.properties</filter>
</filters>
</build>
</profile>
所以,當你建立你的選擇要和每個配置文件,可以定義數據庫的用戶名密碼等變量的輪廓..
yourapp.db.username=UserDev
yourapp.db.password=password
,並在您database.conf引用屬性由其變量名稱
username=${yourapp.db.username}
password=${yourapp.db.password}
現在,當您構建應用程序時,請選擇適合您部署的配置文件。這樣conf就會在編譯時使用正確的用戶名和密碼填充,從而讓你只有一個database.conf文件。
關於鉤:這是唯一可能允許或禁止,但不改變在預提交的提交,是不是? – MonsieurBon 2010-10-22 09:47:02
我正在考慮複製結賬時正確的設置文件,但我不確定svn是否支持結帳鉤子。 – tdammers 2010-10-22 14:58:48