2010-08-06 42 views
1

我們的大部分C#項目配置都保存在* .ini文件中。這些文件主要包含 許多部分影響程序行爲的各個方面。但除了常規配置數據之外,某些部分很容易受到db連接字符串或服務器密碼的影響。我們儘量保持這部分有以下幾種形式:用於在SVN中存儲配置文件的策略

[Database] 
user=testuser 
database=testdb 
password= 

但是,當開發者測試應用程序,他必須填寫的配置,以啓動應用程序。一些密碼被委託進入版本控制是很常見的。 由於這些文件對於應用程序是不可或缺的,因此它們不能包含在.svnignore中。 我正在尋找的可能是某種腳本(也許在PowerShell中)。這將掃描所有* .ini文件並清除所有密碼。最有趣的解決方案是添加一些外部密碼存儲,可用於對* .ini文件中的密碼進行編碼和解碼。

回答

0

我不會回答你的問題,而是建議一種不同的方法,假設現在改變相關設計還爲時不晚。

您不應該將密碼存儲在與其他文件相同的文件中。除常規配置文件之外,還應該讀取專用密碼文件(或從密碼存儲服務中檢索密碼)。這不只是不存儲在SVN密碼,但也對沒有暴露在肩窺密碼,不小心郵寄或當有人問與非工作配置的幫助,張貼等

2

我總是推來存儲配置模板文件在Subversion中,但不是實際的配置文件。因此,如果配置文件是「config.ini」,那麼我將檢入一個填充了非工作示例數據的「config.ini.template」。

然後爲了防止多個開發者檢查他們各自的「config.ini」文件,我將實際的配置文件名添加到svn:ignore屬性列表中。

這迫使開發人員複製文件並針對其環境進行適當修改,但通過不強制他們找出需要顯示的字段,簡化了該任務的工作。如果您有時間,甚至可以將註釋嵌入到模板文件中,以簡化某些配置選項的含義。

在文件的頂部,包括如何使用系統中的模板,它應該讀一些類似配置方向:

# *** CONFIGURATION TEMPLATE --- DO NOT MODIFY THIS FILE *** 
# 1. Make a copy of this file in the same directory with the command "copy config.ini.template config.ini" 
# 2. Edit the new copy and follow the rest of the instructions 
# 
# Change "this.system.hostname" to the hostname of this system 
Hostname = this.system.hostname 
# Set the answer "23" to "42" 
Answer = 23 

你的想法....

如果你有問題(或者認爲你可能有問題),通過config.ini.template文件檢查他們的配置選項,那麼我建議在模板文件中使用「svn lock」。但是,在適當的警告下,我從未發現它是必要的。