プロジェクトにデータベース設定を含むファイルがあり、デフォルトに設定しています。このファイルはMercurialによって追跡され、チェックインされます。このファイルはさまざまな開発者のマシンで異なる値で編集されるため、このファイルへの新しい変更を無視するようにMercurialに指示する方法はありますか?
.hgignore
ファイルにファイルを追加しようとしましたが、ファイルが追跡されているため無視されません。これは他の状況でも大丈夫ですが、ここで私にできることはあるのでしょうか。
ファイルテンプレートの使用は間違いなく最良のソリューションです。たとえば、database.ini
ファイルがある場合は、database.ini.template
ファイルをコミットし、.hgignore
のdatabase.iniを無視します
常にファイルを無視したい場合は、-X
オプションを.hg/hgrc
構成ファイルにcommit
のデフォルトとして追加できます。
[defaults]
commit = -X program.conf
exclude という拡張機能を作成しました。それらをサポートするコマンドに-X
オプションが自動的に追加されます。したがって、hg status
およびhg commit
は変更されたファイルを表示しません。 .hgexclude
ファイルと同じように、リポジトリのルートから.hgignore
ファイルを読み取ることで機能します。除外するファイルをそこに追加します。
syntax: glob
db.conf
拡張機能は非常にうまく機能しますが、失敗する既知の状況があります:マージとマージ後のコミット(これはWikiに文書化されています)。変更を一時ファイルに保存し、後で復元できるように、改善する必要があります。この機能が必要な場合はご連絡ください。
本当に自動化されたプロセスはありませんが、(このように SOの質問 )-X
オプション hg commit
:
% hg stat
M myfile
% hg commit -X 'myfile'
(他のソリューションには shelveまたはhq が含まれる場合があります)
ただし、これは「正しい」ソリューションではありません。私はむしろバージョン管理をお勧めします:
TortoiseHGを使用している場合は、リポジトリの[設定]を開き、[コミット]セクション(左側の2番目のアイコン)に移動し、右側の自動除外リスト(下から3番目)にファイル名を追加します。リスト)。
https://tortoisehg.readthedocs.io/en/latest/settings.html#commit から
あなたが試すことができます hg forget
。詳しくは 同じコマンドの公式マニュアル をご覧ください。それは私のために働いた。
私は、このようなものは元の質問に対する正しい答えに近いと思いますMercurial:他の人が示唆するのではなく、追跡されたファイルへの変更を無視する方法テンプレートなど.
通常は、ファイルの参照コピーをチェックインして追跡し、ローカル開発用にそのコピーを作成するよう開発者に依頼します。開発者が自分の環境のソース管理ファイルを編集することはあまり望まないでしょう。
構成システムがサポートしている場合は、参照コピー(データベース接続文字列など)の値を単にオーバーライドするオーバーライドファイルを使用できれば、さらに簡単です。そうすれば、開発者はオーバーライド値のローカルセットを最小限に抑えるだけで済みます。
ファイルがすでに追跡されている場合は、そのファイルに対してForgetコマンドを発行できます。 TortoiseHgを使用している場合は、コミット中にファイルを右クリックして[削除]を選択します。また、ファイルはすでに無視リストに含まれている必要があります。
私はあなたと同じ問題を抱えていました。すでに無視リストにありますが、すべてのコミットでファイルが表示され続けます。私はForgetコマンドを試してみましたが、うまくいきました。