2009-05-03 12 views
8

コミット)、リポジトリにはいくつかのファイルがあります。その内容は、ローカル開発環境によって異なります。SVN原子はハウツー私は

たとえば、database.xml(dbname、ユーザー名、パスワードなど)。ローカル環境でこのファイルを変更し、コミット/チェックインを行う必要があるたびに、コミットするために必要なすべてのファイル/フォルダを手動でリストアップしています(ローカルに変更されたファイルを除く)。

たぶん、それは間違った設計上の決定とdatabase.xmlは(SVNに格納されている)リポジトリから削除されたとdatabase.xml.templateのために変更する必要があるので、このファイルは手動でそれをsvn addを実行するまでコミットするために含まれないのだろうか?おそらくそれは間違ったアプローチです - リポジトリにこのような環境依存の情報をすべて格納する - その場合、たとえば変更された設定をコミットすることですべてを破ることができます。

私がそれを理解しているので、svn:ignoreプロパティは役に立ちませんでしたこの状況は、リポジトリに格納されていないファイルに対してのみ使用できるためです。

この問題はどのように解決できますか?

P .:私は、Ubuntuと主にSVNのための純粋なコマンドラインを使用しています。

+0

私は、Subversionに '.template'ファイルを保存し、実際の設定である、変更されたバージョンをローカルに保存することに同意します。開発者は、個人設定以外のために実際の設定ファイルを変更することは決して*決して*行うべきではありません。つまり、ファイルに新しいオプションを追加する場合は、それを '.template'ファイルに追加し、そこから独自の設定ファイルを再作成する必要があります(' .template'から設定を再構築することを自動化するかもしれません)作業を楽にするためのスクリプトを含むファイル)。 –

+0

はい、SVNにdatabase.xml.template、ローカルチェックアウトでdatabase.xml.overrideを使用し、無視して、database.xmlを生成するために2つを結合するスクリプトを使用します。少なくとも、私はスクリプトを書く時間があれば、それはそうでなければ、開発者はdatabase.xml.templateが変更されるたびにdatabaes.xmlに手作業でマージする必要があります。 –

+0

実際、開発者が本当に欲しいと思うのであれば、database.xml.overrideをリポジトリのパーソナルブランチでバージョン管理しているファイルへのハードリンクにして、パーソナル設定を制御することができます。 –

答えて

8

このため、「標準」の手順では、このようなものである(SVNの構文を許し、私は最近Bazaarを使用してきた)

svn checkout 
cp database.xml.template database.xml 
...edit database.xml... 

そして、ときにコミット、

echo foo > someotherfile 
svn commit 

database.xmlファイルはSubversionに追加されません。

+3

svnをdatabase.xmlを無視させる実際のコマンドは、 "svn propset svn:ignore database.xml"です。 (svn 1.5.5時点) – che

+2

propsetを使って正しくリコールすると、他のsvn:ignoreがすべて上書きされます。 propgetとpropsetを組み合わせたり、propeditを簡単に組み合わせたり、エディタを使って別の行を追加したりすることができます。 –

6

テンプレートはリポジトリに保存する必要がありますが、ローカルで変更する必要がある実際のファイルは保存しないでください。

このようにして、不要なリポジトリにファイルを格納するリスクを冒すことなく、必要に応じて元のファイルを再構築することができます。

いいえ、svn:ignoreはあなたをここで助けません。一人一人の開発マシン上

echo config > database.xml.template 
svn add database.xml.template 
svn ignore database.xml 
svn commit 

その後:

0

私の2セント:まず、あなたのプロジェクトに携わるすべての開発者のためにあなたのパスを調和させる方法があるかどうかを確認する必要があります。これは、相対ディレクトリ構造や、シェル変数や$ USER、%USERPROFILE%などをサポートしている、アプリケーション内の同じ薄い層でも構いません。これは、各開発者にそれ自身のバージョン管理されていない設定やこれはIDEが提供しようとしているものです。

一般に、バージョン管理の設定ファイルは私にとってはまあまあですが、デベロッパーが物事をセットアップするのに費やした時間であり、偶然に紛失することはありません。