10

「パッチの送信」を指す場合、パッチという言葉は正確にはどういう意味ですか?

特にオープンソースの世界では、これがよく使われているのを見てきました。それはどういう意味で、パッチの提出には正確に何が関係していますか?

4

10 に答える 10

18

これは、変更されたコードファイル間の相違点のリストを含むファイルです。これは通常、2つのファイルに対してdiff-uを実行して生成された形式です。ほとんどのバージョン管理システムではパッチを簡単に作成できますが、通常は同じ形式です。

これにより、 patchコマンドを使用して、コード変更を他の誰かのソースコードのコピーに簡単に適用できます。

例えば:

次のコードがあるとしましょう。

<?php
  $foo = 0;
?>

そして私はそれをこれに変更します:

<?php
  $bar = 0;
?>

パッチファイルは次のようになります。

Index: test.php
===================================================================
--- test.php    (revision 40)
+++ test.php    (working copy)
@@ -3,7 +3,7 @@
         <?php
-            $foo = 0;
+            $bar= 0;
         ?>
于 2008-10-08T18:51:19.820 に答える
6

Red Hat の開発者である Richard Jones は、パッチの作成と提出をカバーする、オープン ソース プロジェクトへのコードの提出に関する優れた入門書を作成しています。

于 2008-10-08T18:58:09.900 に答える
4

パッチは通常、何かを変更する方法に関する情報を含むファイルです (多くの場合、バグを修正するためですが、機能強化の場合もあります)。パッチにはさまざまな種類があります。

ソース コード パッチには、1 つまたは複数のソース コード ファイルをどのように変更する必要があるかという情報が含まれています。これらは、 diffコマンドを使用して簡単に生成でき、 patchコマンドを使用して適用できます(Linux/UNIX システムでは、これらのコマンドは標準です)。

ただし、バイナリ パッチもあります。バイナリ パッチには、バイナリ内の特定のバイトをどのように変更する必要があるかという情報が含まれています。もちろん、オープンソースの世界ではバイナリ パッチはめったにありません。

パッチを送信するということは、ローカルで何かを修正したことを意味し、そのファイルを誰かに送信すると、その人はこのパッチを自分のローカル コピーまたは Web 上のパブリック コピーに適用できるようになり、他のユーザーが修正の恩恵を受けることができます。

パッチは、特定のプラットフォームでほとんどコンパイルできるソース コードがある場合にもよく使用されますが、実際にそのプラットフォームでコンパイルするにはいくつかの小さな変更が必要です。もちろん、ソースを取得して変更し、変更したコードをダウンロード用に提供することもできます。しかし、元のソースが再び変更された場合はどうなるでしょうか (たとえば、バグが修正されたり、小さな機能強化が追加されたりした場合など)。次に、ソースを再ダウンロードし、変更を再度適用して、新しく変更されたバージョンを提供する必要がありました。変更したソースを最新の状態に保つのは大変な作業です。変更する代わりに、差分を作成します元のコピーと変更したコピーの間で、サーバーに保存します。ユーザーがソースからアプリをダウンロードしてコンパイルしたい場合は、最初に元のソースの最新かつ最高のバージョンをダウンロードしてから、パッチを適用して (コンパイルされるように)、常に最新バージョンを使用できます。変更する必要はありません。パッチ。問題が発生するのは、パッチが変更する場所の 1 つで元のソースが正確に変更された場合のみです。この場合、システムはパッチの適用を拒否し、新しいパッチを作成する必要があります。

于 2008-10-08T19:00:12.923 に答える
1

パッチは、メンテナのソースツリーを自分のものに変えるために必要なすべての情報を含むファイルです。通常、diffまたはsvn diffまたはなどのツールによって作成されますgit format-patch

従来、オープンソースプロジェクトは、パッチの形式で通常のschlubsからの送信を受け入れるため、他の人にリポジトリへのアクセスをコミットさせる必要はありません。

于 2008-10-08T18:52:08.603 に答える
1

パッチは、通常.patchファイルの形式であり、2セットのコードファイル間の違いを送信するための一般的なフラットファイル形式です。したがって、オープンソースプロジェクトで作業していて、ファイルにコードを変更し、それをプロジェクトオーナーに送信してチェックインする場合(通常はチェックイン権限がないため)、パッチを使用して行います。 。

WinMergeには、TortoiseSVNのような他の多くのツールと同様に、この機能が組み込まれています。

于 2008-10-08T18:52:56.010 に答える
1

パッチは、システムバイナリを更新する際にも使用されます。Microsoftは常にパッチを送信していますが、それらはソースコードではありません。これらは、改善されたバイナリをインストールする.mspファイルです。すべてのコンピュータサイエンス用語と同様に、パッチは過負荷になっています。

于 2010-06-17T02:54:30.203 に答える
1

パッチ ファイルは、既存のソースと変更したソースの違いを表します。これは、多くのプロジェクトで機能を追加したり、バグを修正したりするための主要な手段です。

diff コマンドを使用してパッチを作成します (たとえば)。

その後、このパッチを開発メーリング リストに送信できます。問題がなければ、コミッターがパッチを適用し (変更が自動的に適用されます)、コードをコミットします。

パッチは patch コマンドを使用して適用されます。

于 2008-10-08T18:53:11.330 に答える
1

一般に、機能の変更セットを集約した統合差分ファイルを送信することを意味します。ウィキペディアでパッチの詳細を読むことができます。いくつかのバージョン管理システム (svn、git など) は、変更セットに基づいてパッチ ファイルを作成します。

于 2008-10-08T18:53:17.553 に答える
1
 1. n. A temporary addition to a piece of code, usually as a quick-and-dirty

既存のバグまたは不具合の修正。パッチは機能する場合と機能しない場合があり、最終的にプログラムに永続的に組み込まれる場合とされない場合があります。パッチがプログラムの残りの部分よりも原始的な方法で生成されるという事実によって、diff または mod と区別されます。古典的な例は、フロント パネルのスイッチを使用して変更された命令であり、元は HLL で記述されたプログラムのバイナリ実行可能ファイルに直接変更が加えられたものです。1 行修正を比較します。

ここの専門用語ファイルの定義全体を参照してください

于 2008-10-08T18:53:37.397 に答える
0

私はいつも、この用語はバグ修正を意味すると信じていました。たとえば、お母さんがあなたの穴の開いたジーンズに付けていた膝のパッチのようなものです。

于 2008-10-08T18:53:05.993 に答える