8

現在地: Linux コマンド ライン

私が今抱えている問題:

ローカルの開発環境では内容が異なるいくつかのファイルがリポジトリにあるため、アトミック コミット (1 つの特定のチケット/タスクに必要なすべての変更で構成される) を作成できないことがありました。

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

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

私が理解しているように、svn:ignoreプロパティはリポジトリに保存されていないファイルにのみ使用できるため、この状況では役に立ちませんでした..

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

PS: 私は Ubuntu を使用しており、SVN にはほとんど純粋なコマンド ラインを使用しています。

4

3 に答える 3

8

このための「標準的な」手順は次のようなものです (SVN 構文を許して、私は最近Bazaarを使用しています):

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

次に、各人の開発マシンで:

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

そして、彼らがコミットするとき、

echo foo > someotherfile
svn commit

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

于 2009-05-03T10:26:46.627 に答える
6

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

このようにして、必要に応じて元のファイルを再構築できますが、そこにあるべきではないファイルをリポジトリに格納するリスクはありません。

いいえ、svn:ignore はここでは役に立ちません。

于 2009-05-03T10:22:25.950 に答える