2012-04-17 9 views
6

Mercurialで更新された遠いリポジトリから特定のコミットが引き出された時を知ることは可能ですか?Mercurialでpullとupdateの日付を取得する

はより正確には、私はhg pull -u数日前に作られた、そして今、私は、これはダウンロードしたプルかどうかを知りたいのですが、最後のコミット、または私の最後の引きを行っまだ引かれていなかったいくつかのコミットを、あった場合それらを取得する。

hg logはコミットの日付を示すようですが、更新については何も表示されません。この情報はどこにあるのですか?

答えて

8

この情報はMercurialでは記録されません。 Mercurialリポジトリはチェンジセットのコンテナに過ぎず、Mercurialはチェンジセットがリポジトリにどのように(またはいつ)入ったかを保存しません。

このためにフックを設定できますが、スクリプトを自分で構築する必要があります。非常に初歩的なシステムは、これは単に、すべてのhg pull~/.pull-logに現在の日付、現在のリポジトリ、および現在の先端を記録します

[hooks] 
pre-pull = (date; hg root; hg tip) >> ~/.pull-log 
post-pull = hg tip >> ~/.pull-log 

だろう。プル後、新しいチップが記録されます。ログファイルを解析して各プルが何をしたかに関する情報を抽出するスクリプトを作成できます。

hg logコミットの日付を与えているようだが、アップデートについては何も

はい、hg logが格納されている履歴(チェンジ)、更新などの作業コピー操作のみに関心あるがの一部ではないではありません記録された履歴。

最後に、誰かが「プルログ」を求めるのを初めて見たことに言及しましょう。しかし、その逆はかなり一般的です。誰が何をいつプッシュするかを見るために、サーバ上に「プッシュログ」を維持するためのスクリプトがあります。これは特にMozillaによって行われます。いくつかの開始手順については、this READMEを参照してください。上記フックは、各時間HG更新のため、このようなログエントリがある生み出す

[hooks] 
pre-update = (echo "---------------------------------"; date --rfc-3339=s; hg root; echo "pre-update:"; hg identify --id --branch) >> .hgupdates 
post-update = (echo "post-update:"; hg identify --id --branch) >> .hgupdates 

:あなたは、コードを更新するために使用されたとき、どのリビジョンHG更新してログインし、その後これらのフックを使用したい場合

+0

感謝を設定。非常に素晴らしい。 – nIcO

+0

@nIcO:ようこそ!私はプッシュログについて少し追加しました - それは逆の概念のようなものです。将来的には他の人にも役立つだろう。 –

1

実行:

2015-12-23 00:44:31+02:00 
/var/www/my/project 
pre-update: 
802120d1d3a0 somebranch 
post-update: 
302720d1d3d2 otherbranch 

をこれもHG更新は特定のリビジョンフラグなしで実行されたときに動作します(-r)あなたの答えのために、特に最終的な将来のニーズのために私の解決策のアイデアを与えるため

関連する問題