マニュアル

パッチの作成と適用

オープンソースプロジェクト(このプロジェクトのように)では、誰でもリポジトリへの読み取りアクセス権を持ち、誰でもプロジェクトに貢献できます。では、これらの貢献はどのように管理されるのでしょうか?もし誰でも変更をコミットできるとしたら、プロジェクトは恒久的に不安定になり、おそらく永久に壊れてしまうでしょう。このような状況では、変更は書き込みアクセス権を持つ開発チームにパッチファイルを提出することによって管理されます。彼らは最初にパッチを確認し、それをリポジトリにコミットするか、作成者に却下することができます。

パッチファイルは、単にあなたのワーキングコピーとベースリビジョンとの差分を示すUnified-Diffファイルです。

パッチファイルの作成

まず、変更を作成してテストする必要があります。次に、親フォルダでTortoiseSVNコミット...を使用する代わりに、TortoiseSVNパッチ作成...を選択します。

図 4.63. パッチ作成ダイアログ

The Create Patch dialog

これで、完全なコミットと同様に、パッチに含めたいファイルを選択できます。これにより、リポジトリから最後にアップデートして以降、選択したファイルに対して行ったすべての変更の要約を含む単一のファイルが生成されます。

このダイアログの列は、変更の確認ダイアログの列と同じようにカスタマイズできます。詳細については、「ローカルとリモートの状態」というセクションをお読みください。

オプションボタンをクリックすると、パッチの作成方法を指定できます。たとえば、行末や空白の変更を最終的なパッチファイルに含めないように指定できます。

ファイルの異なるセットへの変更を含む個別のパッチを作成できます。もちろん、パッチファイルを作成し、同じファイルにさらに変更を加えてから別のパッチを作成すると、2番目のパッチファイルには両方の変更セットが含まれます。

ファイル名は任意で構いませんので、ファイルを保存してください。パッチファイルには任意の拡張子を使用できますが、慣例により.patchまたは.diff拡張子を使用する必要があります。これで、パッチファイルを送信する準備ができました。

ヒント

パッチファイルをメールで他の人に送信する場合は、.txt拡張子で保存しないでください。プレーンテキストファイルはメールソフトウェアによって破損されることが多く、空白文字や改行文字が自動的に変換および圧縮されることがよくあります。そうなると、パッチがスムーズに適用されません。そのため、パッチファイルを保存するときは、拡張子として.patchまたは.diffを使用してください。

パッチをファイルではなくクリップボードに保存することもできます。これは、他の人にレビューしてもらうためにメールに貼り付けたい場合に役立ちます。または、1台のマシンに2つのワーキングコピーがあり、一方から他方へ変更を転送したい場合、クリップボード上のパッチは便利な方法です。

必要に応じて、コミットまたは変更の確認ダイアログ内からパッチファイルを作成できます。ファイルを選択し、コンテキストメニュー項目を使用して、それらのファイルからパッチを作成するだけです。オプションダイアログを表示したい場合は、右クリックするときにShiftキーを押したままにする必要があります。

パッチファイルの適用

パッチファイルは、ワーキングコピーに適用されます。これは、パッチを作成するために使用されたのと同じフォルダレベルから行う必要があります。これが何であるか不明な場合は、パッチファイルの最初の行を見てください。たとえば、最初に作業していたファイルがdoc/source/english/chapter1.xmlで、パッチファイルの最初の行がIndex: english/chapter1.xmlの場合、doc/source/フォルダにパッチを適用する必要があります。ただし、正しいワーキングコピーにいる限り、誤ったフォルダレベルを選択した場合でも、TortoiseSVNはそれに気づき、正しいレベルを提案します。

パッチファイルをワーキングコピーに適用するには、リポジトリへの少なくとも読み取りアクセス権が必要です。その理由は、マージプログラムが、リモート開発者によって行われたリビジョンに対する変更を参照する必要があるためです。

そのフォルダのコンテキストメニューから、TortoiseSVNパッチ適用...をクリックします。これにより、適用するパッチファイルを選択できるファイルを開くダイアログが表示されます。デフォルトでは、.patchまたは.diffファイルのみが表示されますが、すべてのファイルを選択することもできます。以前にパッチをクリップボードに保存した場合、ファイルを開くダイアログでクリップボードから開く...を使用できます。このオプションは、TortoiseSVNパッチ作成...を使用してパッチをクリップボードに保存した場合にのみ表示されることに注意してください。別のアプリからパッチをクリップボードにコピーしても、ボタンは表示されません。

あるいは、パッチファイルに.patchまたは.diff拡張子が付いている場合は、それを直接右クリックしてTortoiseSVNパッチ適用...を選択できます。この場合、ワーキングコピーの場所を入力するように求められます。

これら2つの方法は、同じことを行うための異なる方法を提供するだけです。最初の方法では、WCを選択し、パッチファイルを参照します。2番目の方法では、パッチファイルを選択し、WCを参照します。

パッチファイルとワーキングコピーの場所を選択すると、TortoiseMergeが実行され、パッチファイルからの変更がワーキングコピーとマージされます。小さなウィンドウに変更されたファイルの一覧が表示されます。それぞれを順番にダブルクリックし、変更を確認して、マージされたファイルを保存します。

リモート開発者のパッチがワーキングコピーに適用されたので、他のすべての人がリポジトリから変更にアクセスできるようにコミットする必要があります。

TortoiseSVN ホームページ