構成ファイルを無視するようMercurialを取得しようとしていますが、機能させることができません。
hg init
を使用してサーバー上にリポジトリを作成し、そのリポジトリをコンピューターに複製しました。それからconfigurationjファイルを編集できるようにしたいが、それらの変更をサーバーにコミットしたくない。
クローンのルートに.hgignore
を作成しようとしましたが、Mercurialは?
でファイルにフラグを立て、コミットするかどうかにかかわらず、構成の変更を記録し続けます。
.hgignore
ファイルを間違った場所に作成していますか?このファイルをコミットする必要がありますか?サーバー上のリポジトリを初期化する前に作成する必要がありますか?
リポジトリを初期化します。
$ mkdir test
$ cd test
$ hg init
ファイルを作成する
$ touch foo
$ hg st
? foo
リポジトリのルートディレクトリに.hgignoreを作成します。
$ echo 'foo' > .hgignore
foo
は無視されるようになりました。
$ hg st
? .hgignore
これが機能するために.hgignoreをコミットする必要がないことに注意してください。
構成ファイルと.hgignore(構成ファイルを無視する)の両方がレポジトリでコミットされる場合、はい、構成ファイルの変更は追跡されます(つまり、.hgignoreは効果がありません)
構成を作成してコミットする
$ touch config
$ hg ci config -Am 'adding conf'
それを無視します:
$ echo 'config' >> .hgignore
.hgignoreのコミット:
$ hg ci .hgignore -Am '.hgignore'
次に、レポジトリのクローンを作成する場合:
$ cd ..
$ hg clone test other-user
$ cd other-user
構成を変更します。
$ echo 'new config param' >> config
hgは変更を表示します:
$ hg st
M config
おそらく、リポジトリにglobal.cfg
というバージョン管理されたメインのデフォルト構成ファイルが必要になります。
そして、ユーザーにlocal.cfg
を作成して、ローカル設定を配置するように依頼します。また、スクリプトはlocal.cfg
が存在する場合にソースします。ローカル設定がグローバル設定をオーバーライドします。もちろん、.hgignore
に行を追加して、local.cfg
を無視します;)
代替:グローバル設定ファイルはありません。ユーザーがローカルでコピーおよび変更するconfig.example
のみです。ここでの欠点は、バージョン間の変更を簡単に追跡できないことです。
ファイルを無視した場合でも、Mercurialはそれらがリポジトリに追加されるとそれらを追跡します。
リポジトリから設定ファイルを削除するには、次を使用できます。
hg remove -Af file.cfg
これにより、ローカルファイルを削除せずに、リポジトリからファイルが削除されます(コミットされた後)。見る hg help remove
ただし、現在レポジトリに削除が記録されており、Mercurialは、そのリビジョン全体であなたまたは他の誰かが更新するとそのファイルを削除します。
名前を変更して、マスターをローカルファイルにコピーさせることもできますが、ローカルファイルの更新を調整する必要があります。
hg rename file.cfg file.cfg.example
.hgignoreファイル自体を.hgignoreファイルに追加します。
syntax: glob
.hgignore
または、ローカルクローンに.hgignoreファイルをチェックインするだけです...