Mercurial に組み込まれているものよりも優れたパッチ ツール、または Mercurial または Gnu パッチに受け入れられるようにパッチを編集するのに役立つビジュアル ツールを探しています。
Mercurial wiki には、Patching の失敗がいかに簡単であるかを示す、 HandlingRejectsというトピックがあります。機能ブランチに基づいており、統合前のパッチのエクスポートとレビューに依存する、機能ブランチのバージョン管理のための水銀ベースのワークフローを実装しようとしています。このアイデアの最初のテストでは、「パッチ アウト」および「レビューと受け入れと変更」パッチの最も弱いリンクは、パッチの拒否によって私がシャットダウンされる方法です。
Mercurial パッチのインポートが失敗する一般的なケースを次に示します。
アップストリーム repoA とフィーチャー ブランチ repoB の両方に些細な変更を加え、両方のブランチのどこかに 1 行追加します。両方のブランチに履歴があるため、マージ ツールで「誰かが repoA に 1 行追加し、他の誰かが repoB に 1 行追加した」ことを確認できるはずです。ただし、パッチのインポートの場合は、パッチのインポートが拒否され、リポジトリに .rej ファイルができてしまい、手動で修復する必要があります (適用できるようになるまで .rej ファイルを編集する必要があります)。
上記の wiki ページでは、ここにある mpatch ツールについて言及しています。(a) mercurial で動作し、(b) 上記のハンドリング リジェクト wiki ページに記載されている些細なケースを処理できる、他のより優れたマージ ツールを探しています。mpatch は私の目的では機能しないことに注意してください。パッチ ツールよりもリベース ツールが必要なようです。私の場合、パッチ ツールを構文対応にする必要があるかもしれません (したがって、単一のプログラミング言語)。
Windows でネイティブに、または cygwin などを介して作業するためのツールを探しています。Linux/Unix スタイルのツールには慣れていますが、Unix/Linux 環境は使用していません。
私は現在mq
拡張機能を使用しておらず、hg export を使用して変更の範囲をエクスポートし、hg import を使用してインポートしています。残りの作業は私自身の発明ですが、 mq ユーザーはこの処理の問題mq
に精通しているため、これにタグを付けました。 .rej
.
関連する質問hereは、TortoiseHg を使用しているときにこのような問題を解決する方法を示しています。