私の質問は本質的にここと同じですしかし水銀に適用されます。バージョン管理下にある一連のファイルがあり、1 回の保存操作でかなりの数のファイルが変更されます。結果として生じる変更の中には、リビジョン管理にとって重要なものもあれば、不要なものもあります。ジャンクを個別のファイルに「分割」できます。これらのジャンク ファイルは、機能するために基本的なチェックアウトの一部である必要がありますが、その内容 (および経時変化) はリビジョン管理にとってそれほど重要ではありません。今のところ、私はすべての開発者にこれらのファイルをコミットしないように言っていますが、私たちは皆忘れており、リポジトリに多くの余分な荷物が作成されています. 非常に多くのファイルがあり、単純なクローンをこの余分な手作業なしで機能させたいので、提案された svn ソリューションはあまり好きではありません。これ' hg shelve に似ていますが完全ではありません。また、ignore に似ていますが完全ではありません。これを可能にする hg 拡張機能はありますか? gitでできますか?
3 に答える
Mercurial はこれをサポートしていません。それを行う正しい方法は、コミットthefile.sample
してから、開発者 (またはスクリプトをデプロイしたほうがよい) にコピーを作成さthefile.sample
せることです。存在しない場合thefile
。thefile
そうすれば、誰でもサンプル ファイルを更新できますが、ローカルの変更 (個人用データベースの接続文字列など) をコミットするリスクはありません。
あはは!そのため、TortoiseHG のリポジトリとグローバル設定には自動除外リストがあり、ステータス、コミット、保留ダイアログが開いたときにデフォルトでチェックされないファイルのリストを定義できます。したがって、それらは引き続き表示されますが、ユーザーは実際にコミットするためにそれらを確認する必要があります。設定は hgrc に保存されますが、[tortoisehg] という見出しの下にあるため、mercurial 自体ではサポートされていません。それにもかかわらず、それは私のニーズに合っています。
これに対する 1 つの解決策は、ネストされたツリーのサポート (git のサブモジュール) を使用することです。この場合、"がらくた" は別のリポジトリに配置され (メイン リポジトリが乱雑になるのを避けるため)、一貫した方法で全体をチェックアウトできます (同期中の両方のリポジトリの正しいバージョン)。
https://www.mercurial-scm.org/wiki/Subrepository?action=show&redirect=subrepos
git では、サブモジュールはこの問題に対する 1 つの解決策ですが、UI に関してはそれほど優れていません。代わりに、2 つの完全に独立したリポジトリを保持し、ジャンク リポジトリでメイン リポジトリを更新する必要がある場合はサブツリー マージ戦略を使用します: http://progit.org/book/ch6-7.html