web-dev-qa-db-ja.com

Mercurialにコミットを無視するオプションはありますか?

Mercurialを使用したコミットで一部のファイルへの変更を無視する方法はありますか?

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

Subversionでは、これをignore-on-commitチェンジリストに簡単に追加しました。 Mercurialでこれを行う方法はありますか?

38
Nick Randell

「hgcommit」コマンドから除外するファイルがすでに「追跡」されている場合は、-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'
50

従来、これはファイル自体をバージョン管理するのではなく、他のユーザーが使用できるテンプレートとしてファイルのコピーをバージョン管理することで解決されていました。

だからあなたはhg mv tnsnames.ora tnsnames.ora-template、次にコミットし、tnsnames.ora-templateのtnsnames.oraへのストレートファイルシステムコピーを実行し、tnsnames.oraを.hgignoreファイルに追加します。

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

22
Zed

'hg commit -Xexcluded_file.ext'のようなエイリアスcommitを使用できます。Mercurialを使用したことがないので、ここではmanページを参照します。

1
Josh Matthews