2011-10-23 9 views
33

私はマニュアルでそれを探しましたが、最後のコミットのためのパッチを生成することはできません。 は私がMercurialでパッチを生成する

hg qnew patch_name 

を試みたが、それだけで

# HG changeset patch 
# Parent a6a8e225d16ff5970a8926ee8d24272a1c099f9c 

を持つファイルない私はまた

hg export tip 

を試してみましたが、それは何もしません。私は変更を正確にコミットしました。

最後にコミットされたパッチファイルを生成する方法は?そのよう

+1

'hg diff -c tip> patch' - qnewはmq拡張の一部であり、別の目的のためであることに注意してください。 –

+1

変更を加えずに 'qnew'を実行したことがあれば、' export tip'を実行すると、チップのリビジョンは空になります。あなたが適用したパッチを削除するには、qdelを実行する必要があります。 –

答えて

45

これを行うためのコマンドがexport次のとおりです。

$ hg export -o FILE -r REV 

それがリダイレクトを必要としないため、任意のプラットフォーム/シェル上で正しく動作します。

+0

また、後でインポートするときにMercurialがチェンジセットを再構築するのに使うユーザーと日付のようなチェンジセットヘッダーを出力します。 –

14

hg diff -r tip > tip.patch 
+0

Windowsコンソールに入力しましたが、空のファイルが作成されます。さらに、 "hg diff"コマンドは何も返しません。 – deem

+1

これにはTortoiseHGの素晴らしいUIがあります。 '-r'の代わりに' hg diff -c tip> tip.patch'を試してみてください。 –

+0

@WarrenP OK、改訂履歴ウィンドウを開きます。任意のリビジョンのファイルを生成するには? – deem

5

あなたは、このコマンドを使用することができます。

hg log -r tip -p > tip.patch 

これはちょうどそのリビジョンのパッチを生成します。

22

あなたのhg export tipがこれを行う最良の方法です。hg diffhg logの回答はちょっと変わったものです。 hg export tipと入力すると、正確に何が表示/取得されますか? hg log -p -r tipの出力には何が表示されますか?

チェンジtipはちょうどhg pullhg tagすべてがあまりにもチェンジを作成するので、あなたが考えるかもしれないような概念として有用ではありません「最近、私のリポジトリに到着チェンジ」を意味しています。あなたが本当に最後にコミットしたかったら、より正確なrevspecが必要です。

+4

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + – Spina

1

あなたは、最新のパッチファイルにコミット変換に、最上位の定期は適用されMQのパッチファイルをコミット置き換えます

hg qimport -r tip 

これを使用したい場合。

0

水銀で "mq extensions"を使用してパッチを生成するには、以下の手順に従います。これは、mercurialを使用してパッチを作成します:

1)mq拡張を有効にする:hgrcファイルに次の行を追加して保存します。

2)mq拡張を使用したパッチの作成:mq拡張を使用してパッチを作成するには、次のようにします。上記のコマンドで

hg qnew -e -m "comment you want to enter" bug_name.patch 

-eフラグはパッチを編集するためのものであり、-mフラグがパッチにメッセージを追加するためのものです。

3)パッチの更新:パッチを更新するには、既にパッチが適用されているときに次のコマンドを使用できます。

hg qrefresh 
関連する問題