2012-02-15 18 views
1

のsvn:ソース管理下にないファイルを無視するので、彼らは?svn statusにまで来ていないプロパティを無視(彼らはまったく出てくるしていない、とあなたがaddを行う場合にも無視されます)svn:ソース管理下にあるファイルを無視するには?

しかし、ソース管理下にあるファイルを無視したいのですが? svn:ignoreは無視しません。
たとえば、設定ファイルを設定してsvnに追加すると、システムがテストサーバーまたはライブサーバー(Webアプリケーション)にデプロイされる必要がありますが、ローカル環境開発では私のローカル設定で設定するために設定ファイルを変更する必要があります。

しかし、私はこのアップデートがコミットされることを望んでいないので、どうすればいいですか?

は、それらをリポジトリから削除するだけで、テストサーバーでsvn updateを実行すると、設定ファイルが削除されますが、これは私が望むものではありません。

+0

SVNは展開システムではなく、ソース管理システムです。 (automakeのような)ディストリビューションの作成とチェックのための非常に素晴らしいツールがあります。それらを使用して、問題はなくなります。 – thiton

答えて

1

変更時にコミットされないファイル(設定ファイルなど)は、この処理を反映した名前のテンプレートファイルとして扱う必要があります。例えば ​​".template"をファイル名に付け加え、ファイルのデフォルトの内容をリポジトリに入れます。作業コピーをチェックアウトした後、すべてのユーザーはこのファイルを作業用のバージョン( ".template"拡張子なし)に手動でコピーし、必要に応じて内容を変更する必要があります。この作業ファイルをリポジトリに追加してはいけません(一部のサーバ側プリコミットフックスクリプトsvnlookコマンドで確認できます)。

このテンプレートファイルを変更すると問題が発生します。すべてのユーザーはこの変更に対応する必要があります(何もしないで、作業ファイルを変更するなど)。テンプレートの変更についてユーザーに自動的に警告する方法があります(ユーザー側の更新後フックスクリプトを使用します)。これはちょっと難しいかもしれません。誰かがテンプレートを変更すると、変更について他の人に通知するだけで、それだけです。

1

一方的な方法は、svn:externalsを使うことです。 設定ファイルを含むパスにリンクします。 Buildserverでは、 "--ignore-externals"オプションでチェックアウトすることができます。

とにかく私は通常、ファイルをbuildscriptで削除します。それほどエレガントではないが、仕事をしている。

1

残念ながら、これはsvnで簡単に行えるわけではありません。私が見た中で最も近いものは、this questionへの回答として受け入れられていますが、他のファイルもチェンジリストに入れる必要があります。残念ながら、一部のsvn IDEプラグイン(subversive I'm looking at you!)はチェンジリストを適切にサポートしていないようです。

関連する問題