2009-05-19 7 views
38

水銀でコミットされたファイルの変更を無視する方法はありますか?水銀中にignore-on-commitオプションがありますか?

127.0.0.1を指すデフォルトのoracle tnsnames.oraファイルがある特定の状況がありますが、一部の開発者は他のシステムを指すように変更しますが、デフォルトを変更したくないファイル。

Subversionでは、これを無視してコミットのチェンジリストに追加しました。水銀でこれを行う方法はありますか?

答えて

48

"hg commit"コマンドで省略したいファイルがすでに "追跡"されている場合は、-Xオプションを使用する必要があります。 -Xに渡されたパターンは、例えば実行することが可能となる、かなり柔軟です:

% hg stat 
A etc/foo.conf 
M src/bar.c 
M lib/libbar/loader.c 
% hg commit -X '**.conf' 

かかわらず、それが住んでどのように深いソースツリー内の、「.confを」拡張子を持つ任意のファイルをコミット避けるために。上のワークスペースでは、 "src/bar.c"と "lib/libbar/loader.c"をコミットしますが、 "etc/foo.conf"はコミットしません。ファイル名の複数のパターンを除外するために

、複数の-Xオプション、すなわちを使用する:

% hg commit -X '**.conf' -X '**.sh' 
+8

「** .conf」スタイルパターンについては、「hgヘルプパターン」を参照してください。 –

+0

これを永久にする方法はありますか?私はそれぞれのコミットに-Xしたくありません。 – Kugel

+0

@Kugelそれはそれのように見えません。 Mercurialは、すべてのユーザ固有のものを持っているような20の設定ファイルを持つコードベースのために、私には間違った選択であると私は思います。私はバージョンコントロールを私のためにではなく私のために働かせるためのスクリプトを書く必要はありません。そして、いいえ、20の設定ファイルは私の考えでもありませんでした。私はその男もMercurialを選んだと思うよ。 –

-2

Mercurialのドキュメントで.hgignoreファイルを探します。

ここでは無視ファイルの例を示します。あなたは別名のようなものにコミットすることができ

 # use glob syntax. 
     syntax: glob 

     *.elc 
     *.pyc 
     *~ 

     # switch to regexp syntax. 
     syntax: regexp 
     ^\.pc/ 
+0

tnsnames.oraファイルがすでにチェックインされている。彼らは唯一の私のマシンのためのものですので、私は私の地元の変化を無視したいです。これが.hgignoreが動作しない理由です –

1

「HGは-Xをコミットexcluded_file.ext」私は水銀使ったことがないので、私はちょうどここmanページでつもりです。

21

伝統的に、これはファイル自体をバージョン化せずに、他のユーザーが使用するためのテンプレートとしてバージョンをコピーすることによって解決されます。

あなたはhg mv tnsnames.ora tnsnames.ora-templateになりますので、コミットしてからtnsnames.ora-templateをtnsnames.oraに直接コピーし、tnsnames.oraを.hgignoreファイルに追加します。

それ以降のテンプレートの変更は引き続きプッシュアウトされますが、誰かが実際のファイルにテンプレートをコピーしない限り、実際に作業環境は変更されません。

+1

app.configを持っていて、その名前をapp.config-templateに変更すると、リポジトリにapp.configは存在しなくなります。 これは自動ビルドに問題を引き起こします。私は、ビルドプロセスがこの「テンプレート」を知らせて名前を変更する必要があると考えています。これはそれほど素晴らしいことではありません。 – AndyM

+2

名前を変更したくない場合は、コピーして変更する必要があります。 autobuildスクリプトから行うこともできますが、フックから実行することもできますが、クローンとは異なるファイルがあれば、どこかのインテリジェンスに適用する必要があります。 – Zed

関連する問題