1

hg clone /home/hg/repo1 を実行するたびに、ファイルを追跡せずに /home/configs/config.ini からローカル クローンにコピーするように mercurial に指示するにはどうすればよいですか?

例えば

> ls -l /home/hg/repo1
  file_one.py
  file_two.py

> hg clone /home/hg/repo1 /home/me/repo1
> cd /home/me/repo1
> ls -l /home/me/repo1
  file_one.py
  file_two.py
  config.ini

ありがとう、マーティン

4

4 に答える 4

2

フックを使用して実行できますが、明確なREADME.txtを作成するよりも問題が発生します。:)

フックは次のようになります。

[hooks]
post-clone = cp -i config.ini.sample config.ini

Paul Fischerが指摘したように、レポの外に.sampleあるようなものよりも、レポの中にあるものを使用する方が適切/home/configs/config.iniです。

問題は、VonCが指摘しているように、フックがクローンにコピーされないことです。そして、正当な理由があります。クローンによってフックもダウンした場合、私はpost-clone = rm -rf ~そこに入れてしまい、本当にあなたの一日を台無しにしてしまいます。

したがって、フックを使用する場合は、フックをリポジトリの外側のどこかに配置します。企業の設定では、/etc/mercurial/hgrcすべてのシステムのファイルでそれを行うことができます。適切なITセットアップがあれば、一元的に行うことができます。/ home / configsユーザーディレクトリがあると確信しているように思われるので、すべてのクローンが1台のマシン上にあることについて話しているように聞こえます。この場合、これは適切なオプションです。ただし、より分散化された環境では、各自が必要なフックを自分で手動でインストールするようになります。~/.hgrcその時点で、自分でコピーを実行することもできます。

検討する価値のあるアイデアの1つconfig.iniは、ファイルを解釈しているものにinclude-likeディレクティブがあるかどうかを確認することです。config.ini次に、クローンを作成して次のようにすることができます。

... some stuff
%include /home/configs/config.ini
... more stuff

その場合、コピーはまったく必要ありません。たとえば、Mercurialには、次のように機能するincludeディレクティブがあります。http ://www.selenic.com/mercurial/hgrc.5.html#syntax

于 2011-01-30T00:53:11.090 に答える
2

これを行うための推奨される方法は、たとえば という名前のファイルを追跡し、config.ini.exampleそれを にコピーして、ファイルconfig.iniに含めることです。アプリケーションがまだ存在しない場合は、最初の実行時に生成するようにすることもできます。config.ini.hgignoreconfig.ini

クローンを作成すると新しいリポジトリが作成されるため、クローン作成アクション用の (文書化された) フックはありません。このレポは真新しい.hgrcため、フックを定義するためのファイルはありません。つまり、実行するフックは、古いリポジトリではなく、新しいリポジトリのものです。

于 2011-01-29T21:40:08.907 に答える
1

1 つの方法は、クローンの直後にコピーを実行する、changegroup のようなフックを定義することです。唯一の問題: issue 1602
で報告されているように、そのフックはハードリンクされたパスでは実行されません。

于 2011-01-29T21:45:43.713 に答える
0

ファイルをハードリンクするだけでよいように思われるため、ファイルを実行するたびにhg updateも更新されます。/home/me/repo1/home/configs

rm /home/configs/config.ini
ln /home/me/repo1/config.ini /home/configs/config.ini

作業コピーを更新するために、クローンを削除して再クローンする必要はないことに注意してください。hg pullとを使用するだけhg updateです。

于 2011-01-30T09:39:42.567 に答える