web-dev-qa-db-ja.com

Mercurial:追跡ファイルへの変更を無視する方法

プロジェクトにデータベース設定を含むファイルがあり、デフォルトに設定しています。このファイルはMercurialによって追跡され、チェックインされます。このファイルはさまざまな開発者のマシンで異なる値で編集されるため、このファイルへの新しい変更を無視するようにMercurialに指示する方法はありますか?

.hgignoreファイルにファイルを追加しようとしましたが、ファイルが追跡されているため無視されません。これは他の状況でも大丈夫ですが、ここで私にできることはあるのでしょうか。

52
Svish

ファイルテンプレートの使用は間違いなく最良のソリューションです。たとえば、database.iniファイルがある場合は、database.ini.templateファイルをコミットし、.hgignoreのdatabase.iniを無視します

26
yanjost

常にファイルを無視したい場合は、-Xオプションを.hg/hgrc構成ファイルにcommitのデフォルトとして追加できます。

[defaults]
commit = -X program.conf
27
sth

exclude という拡張機能を作成しました。それらをサポートするコマンドに-Xオプションが自動的に追加されます。したがって、hg statusおよびhg commitは変更されたファイルを表示しません。 .hgexcludeファイルと同じように、リポジトリのルートから.hgignoreファイルを読み取ることで機能します。除外するファイルをそこに追加します。

syntax: glob
db.conf

拡張機能は非常にうまく機能しますが、失敗する既知の状況があります:マージとマージ後のコミット(これはWikiに文書化されています)。変更を一時ファイルに保存し、後で復元できるように、改善する必要があります。この機能が必要な場合はご連絡ください。

12
Martin Geisler

本当に自動化されたプロセスはありませんが、(このように SOの質問-Xオプション hg commit

% hg stat
M myfile
% hg commit -X 'myfile'

(他のソリューションには shelveまたはhq が含まれる場合があります)

ただし、これは「正しい」ソリューションではありません。私はむしろバージョン管理をお勧めします:

  • ファイルテンプレート
  • 最終的なファイルを生成できるスクリプト(変更するが、完全に無視できる)
8
VonC

TortoiseHGを使用している場合は、リポジトリの[設定]を開き、[コミット]セクション(左側の2番目のアイコン)に移動し、右側の自動除外リスト(下から3番目)にファイル名を追加します。リスト)。

https://tortoisehg.readthedocs.io/en/latest/settings.html#commit から

4
CAD bloke

あなたが試すことができます hg forget。詳しくは 同じコマンドの公式マニュアル をご覧ください。それは私のために働いた。

私は、このようなものは元の質問に対する正しい答えに近いと思いますMercurial:他の人が示唆するのではなく、追跡されたファイルへの変更を無視する方法テンプレートなど.

2
András

通常は、ファイルの参照コピーをチェックインして追跡し、ローカル開発用にそのコピーを作成するよう開発者に依頼します。開発者が自分の環境のソース管理ファイルを編集することはあまり望まないでしょう。

構成システムがサポートしている場合は、参照コピー(データベース接続文字列など)の値を単にオーバーライドするオーバーライドファイルを使用できれば、さらに簡単です。そうすれば、開発者はオーバーライド値のローカルセットを最小限に抑えるだけで済みます。

2
Paolo

ファイルがすでに追跡されている場合は、そのファイルに対してForgetコマンドを発行できます。 TortoiseHgを使用している場合は、コミット中にファイルを右クリックして[削除]を選択します。また、ファイルはすでに無視リストに含まれている必要があります。

私はあなたと同じ問題を抱えていました。すでに無視リストにありますが、すべてのコミットでファイルが表示され続けます。私はForgetコマンドを試してみましたが、うまくいきました。

1
radztech