2

リポジトリへのコミット時に、Mercurial で定義されたフックがあります。

[hooks]
precommit.exportDB=exportDB.bat

これにより、コミットに含める必要があるデータベースから SQL ダンプが作成/更新されます。BUT: これは機能しますが、Sql は新規としてマークされますが、現在コミット中の変更セットの一部ではありません。変更されたファイルのセットに入るように自動的に含めるにはどうすればよいですか?

これが理にかなっていることを願っています...

Thx ラインハルト

4

1 に答える 1

6

これはクレイジーに聞こえるかもしれませんが、2 つのステップで実行できます。最初にprecommitフックをフックに変更しますpre-commit-はい、両方が存在し、それらは異なります。ダッシュがない場合、コミットはすでに開始されており、一部のロックが取得されています。ダッシュを使用すると、コミットが開始される前に発生しhg add、新しいファイルを引き続き使用できます。

そのような UNIX では、合計の変更は次のようになります。

[hooks]
pre-commit.exportDB=exportDB.sh && hg add resulting.sql

おそらくWindowsにも似たようなものがあるかhg add、バッチファイルの最後の行を作ることができます。

PS 生成されたファイルをコミットしないでください。:)

アップデート:

私はこれをテストしたところ、私が提案したように動作します:

ry4an@four:~$ hg init reinhard
ry4an@four:~$ cd reinhard/
ry4an@four:~/reinhard$ vi .hg/hgrc
ry4an@four:~/reinhard$ cat .hg/hgrc 
[hooks]
pre-commit = hg add otherfile
ry4an@four:~/reinhard$ echo text > afile
ry4an@four:~/reinhard$ echo more > otherfile
ry4an@four:~/reinhard$ hg add afile
ry4an@four:~/reinhard$ hg status
A afile
? otherfile
ry4an@four:~/reinhard$ hg commit -m 'message'
ry4an@four:~/reinhard$ hg status --all
C afile
C otherfile

コミット前は「afile」のみが追加され、「otherfile」は不明であり、コミット後は両方のファイルが「C」(「クリーン」を意味する - それらは追加およびコミットされている) であることに注意してください。

于 2012-07-30T02:28:40.620 に答える