パッチの操作

パッチを使用すると、開発者は、作業をリポジトリーに保管せずに共用できます。 これは、リポジトリーを共用するけれど、リポジトリーの書き込みアクセス権を持っていないプロジェクトに貢献したい開発者の手助けとなります。 この状況において、開発者は、パッチを作成して、書き込みアクセス権を持っている開発者にそれを E メールするか、プロジェクトで使用するバグ報告システムのバグに、それを付加することができます。 書き込みアクセス権を持っている開発者は、それ以降パッチをプロジェクトに適用して、変更をコミットすることができます。

CVS プロジェクトからパッチを作成するには、次のようにします。

  1. パッチに組み込まれている修正を含むリソースを選択します。 「パッチの作成」ウィザードがデフォルト・モードで実行されると、複数プロジェクト・パッチの生成方法が把握されているため、複数プロジェクトにある、あらゆるレベルのリソースを選択できます。パッチはまた、生成される同じファイル改訂に適用する必要があるので、 パッチが同じリソース・ラインナップに適用されていることを確かめる処理が必要です (これを最も簡単に行うには、バージョンの上部にパッチを作成することです)。
  2. ポップアップ・メニューから、「チーム」>「パッチの作成 ...」を選択します。 「パッチの作成」ウィザードが開きます。
  3. パッチを以下のどこに保管するかを選択します。
    1. クリップボードにコピー 」- パッチをクリップボードに置くので、 E メールのようなテキスト・エディターに貼り付けることができます。
    2. ファイル・システムへ保管」- ローカル・ファイル・システムの指定したファイルにパッチを置きます。
    3. ワークスペースに保管 」- 既存のワークベンチ・プロジェクトの中で、指定したファイルにパッチを置きます。
    小さなパッチの場合、クリップボードを使用してパッチを転送するのが良い方法です。 しかし、ほとんどの場合は、最良のオプションはローカル・ファイル・システムを使用することです。
  4. 変更ペインに表示されるリソース・ツリーを展開することにより、パッチ選択のプレビューおよび微調整が可能です。検査済みの要素のみがパッチに組み込まれます。 「次へ」をクリックして、パッチを生成する方法を構成します。
  5. 次のパッチの構成方法を選択します。
    1. Diff 出力フォーマット - いくつかの共通 diff 出力フォーマットを選択可能にします。 Unified は、Eclipse を含む多くのパッチ・アプリケーション・ツールで使用されるフォーマットです。
    2. パッチのルート - パッチのルートにするレベルを指定できます。選択項目は、ワークスペースプロジェクト、および選択 です。

      ワークスペース では、複数プロジェクトからのリソースをパッチに組み込むことが可能であり、これがデフォルトのオプションです。ワークスペース・パッチは、ワークスペース内の全てのリソースに適用可能であり、「パッチの適用」ウィザードでパッチの適用が必要なリソースを確認できるよう、十分な情報が含まれています。

      プロジェクト・パッチでは、プロジェクト・レベルがルートになるため、1 つのプロジェクトからのリソースのみが含まれていて、同一のプロジェクトに適用する必要があります。

      選択 パッチは、選択されたリソースがルートになり、同一のリソースに適用する必要があります。
  6. 終了」をクリックします。
  7. 必要に応じて、パッチされるプロジェクト用にパッチを転送します。

パッチを適用するには、次のようにします。

  1. パッチが生成されたリソースを選択します。 このリソースには、パッチが生成されたラインナップと同じファイル改訂を含む必要があります。
  2. ポップアップ・メニューから「チーム」>「パッチの適用...」の順に選択します。「リソースのパッチ」適用ウィザードが開きます。
  3. 以下のパッチ検出場所を指示します。
    1. ファイル - パッチはローカル・ファイル・システムのファイルにあります。ファイルへの絶対パスを入力するか、「参照 ...」ボタンを使用して、ファイルを探します。
    2. クリップボード - パッチはクリップボードにあります。 警告: ファイルをベースにしたパッチを使用するのが安全です。 クリップボードが使用されていて、異なるプラットフォーム (Linux と Windows) でパッチが生成された場合は、行編集が正確に処理されないことがあります。
    3. ワークスペース - パッチはワークスペース内のどこかに保管されます。
    次へ」をクリックして、パッチの適用結果を見ます。
  4. オプションのステップ: このステップは、プロジェクトまたは選択のレベルにルートを設定したパッチの場合にのみ適用されます。ワークスペースがルートのパッチの場合は、「パッチ・プレビュー (Patch Preview)」ページに自動的に進みます。 「パッチ・ターゲットの指定」ページで、パッチのルートにするリソースを選択する必要があります。
  5. 「パッチ・プレビュー (patch preview)」ページには、パッチがワークスペースのファイルに正常に適用できたかどうかが示されま。上部ペインには、パッチに含まれている変更のリストが表示されます。 ツリーのリーフ項目を選択する場合、下部ペインには、パッチ・ファイルの一部 (パッチの用語では「ハンク」で知られる) が読み取りやすい横並び表示で示されます。 注: 下部ペインには、「ハンク」を適用した後、ワークスペースのリソースがどのようになるかをプレビューで示すことはしません。パッチ・ファイルのコンテンツを直接表示します。
    1. チェックマークが付けられた項目は、パッチ (あるいは「ハンク」) がワークスペース・リソースに正常に適用できたことを示します。 パッチまたは個々の「ハンク」をチェックしないと除外できます。
    2. 赤い感嘆符は、パッチあるいは「ハンク」に問題があることを示します。
      これは、パッチが適格でないか、パッチが生成された 1 つ以上のファイルの改訂が、パッチが適用されようとしている改訂に一致しない場合に発生します。
      括弧内に障害の理由があります。

      完全パッチを正常に適用するためには、問題 (赤い感嘆符) を除去し、このウィザード・ページでオプション (以下の『オプション』を参照) を調整して、チェックマークが付けられた項目をすべての場所から入手する必要があります。

  6. すべてが良い場合は、「終了」をクリックしてパッチを適用します。 ここでワークスペースには、パッチで修正された各ファイルの発信変更を含みます。

パッチを適用するオプション

正常に一致するパッチ・ファイルを入手するために、以下のオプションがあります。
  1. 「リソースのパッチ適用」ウィザードの最初のページに戻って、パッチを適用する必要のある正しいリソースを選択します。
  2. パッチ・ファイルに保管されているパス名の共通接頭部が、現行ワークスペースのパス名に一致しない場合は、「先行するパス名セグメントを無視」することができます。
  3. 「空白の無視」オプションを使用して、パッチ・ファイルとワークスペース内のファイルとの空白の違いとは関係なくマッチング処理を行います。
  4. 「最大ファジー要素」(パッチの用語) を調整します。 この係数により、一致を探し出す場合のコンテキストの先頭から最後までの無視される行数が決定されます。デフォルトは 2 です。
  5. ワークスペースに既に適用されているパッチ・ファイルに「パッチの反転」オプションを使用してください。このオプションは、パッチを元に戻したり、やり直すのにも役立ちます。
  6. ワークスペース・パッチの場合、「パッチのターゲットの再指定」を使用してワークスペース内の別のプロジェクトを選択し、パッチの変更を適用します。これを実行するには、上部ペインでプロジェクトを選択し、「パッチのターゲットの再指定」ボタンをクリックします。これにより、ワークスペース内で使用可能な全てのプロジェクトがリストされたダイアログが起動されます。プロジェクトを選択し、「OK」をクリックします。パッチの変更が選択されたプロジェクトに適用されます。

関連概念
CVS によるチーム・プログラミング

関連タスク
リソースの比較

関連参照
CVS