2009-09-04 9 views
7

私は長年の問題を抱えています。仕事では水銀をDSCMとして使用していますが、設定ファイルを同期させる方法はわかりません。Mercurialワークフローに関する質問(設定ファイルの扱い方)

問題は、設定ファイルを追跡し、開発者間で設定ファイルの内容を交換できるようにすることですが、開発者はconnectionStringsセクションを他人とは独立させたいということです。

設定ファイルを何とか追跡しておくことができますが、プルして押すときに接続文字列セクションを省略することはできますか?

設定ファイルを.hgignoreに追加しようとしましたが、誰かが設定ファイルに重要なことを追加したときに、それを電子メールで共有する必要があります。

ありがとうございます。

答えて

6

カスタム設定を含めることができない場合は、リポジトリに基本設定ファイルを作成してください。

次に、各開発者に独自のカスタマイズを(mqを使用して)表示させます。カスタマイズがそれほど邪魔でない場合、マージは常にうまくいくでしょう。あなたがマージブランチをプッシュしていない覚えておく必要が押したときに繰り返し、あなたのカスタマイズをマージしますが、別の方法は、あり

t1-t2-t3-t4-...-tN 
    \ \  \ \ 
    c1---c2-----c3--c4 

のdevのニーズ(tXc1は、カスタマイズされ、メインラインです) tXのみを親として持つ変更をプッシュすると、cXは決してレポをエスケープしません。

1

これを処理する非DVCSの方法は、別の設定ファイルから接続文字列を読み込んで、ビルドプロセス中にそれを前処理するようにビルドプロセスを設定することです(javaでは、antやmavenを使ってプロパティファイル、MSの土地についてはわかりません)。

4

設定ファイルの詳細はわかりませんが、他のファイルを含めることができる場合は、config_localファイルを作成してデベロッパー固有の設定を保持してください。そのファイルを.hgignoreに追加します。共通設定はメイン設定ファイルに入り、config_localファイルが含まれます。

ケン氏によれば、組み込みがオプションでない場合、ビルドステップ中の前処理が行われる可能性があります。

3

Mercurial Queuesを使用してください。だからあなたがするのはhgの下に(実際の名前で) "本当の"設定を持ち、開発者はmqで管理されているパッチを使ってカスタマイズを維持することができます。

実際の設定を更新する必要があるときには、すべてのカスタマイズをスタックから取り除いてパッチをポップし、設定を変更してコミット+プッシュします。

他のすべての開発者が独自のキュー内の特定の変更を上書きしていないと仮定すると、次回に+更新を取得したときにそれらを受け取ります。

0

これは少し荒廃していますが、KeywordExtensionを使って自動的にトークンを展開することができます。あなたの設定ファイルに次のように入力してください:

db.host = $DBHOST$ 
db.host = $DBUSER$ 
db.host = $DBPASS$ 

そして〜/。独自の.hgrcを持つことになり、

[extensions] 
hgext.keyword= 
[keyword] 
# expand keywords in all python files in working dir 
**.conf = 
[keywordmaps] 
DBHOST = dev.server.internal 
DBUSER = myname 
DBPASS = mypass 

生産、もちろん:hgrcファイルは、ユーザーのは、このようなものを持っているでしょう。

このスキームは、誰もがセットアップ時間を少し費やすことになりますが、その後は自動的に行う必要があります。ユーザーが独自のプライベート接続文字列を設定したくない場合は、システム単位の/ etc/mercurial/hgrcファイルにデフォルト値を入れることができます。

1

接続文字列を別のファイルに置きます。例えばweb.configファイルに:

<connectionStrings configSource="connections.config" /> 

次に、あなたが、これにより、各開発者は自分の心の内容に変更させるリポジトリから除外することができます接続文字列でconnections.configファイルを、持っています。

「参照」バージョンのconnections.configファイルを使用する場合は、ソース管理下にある別のファイルconnections.example.configを追加し、それをテンプレートバージョンとして使用してください。

関連する問題