「パッチを提出する」という場合、「パッチ」という言葉は正確に何を意味しますか?
-
06-07-2019 - |
質問
「パッチを提出する」という場合、パッチという言葉は正確に何を意味しますか?
これは、特にオープンソースの世界で多く使用されています。それはどういう意味で、パッチの提出に正確には何が関係しますか?
解決
これは、変更されたコードファイル間の相違点のリストを含むファイルです。通常、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;
?>
他のヒント
Red Hatの開発者であるリチャードジョーンズは、コードのオープンソースプロジェクトへの送信に関する簡単な入門。パッチの作成と送信について説明しています。
パッチは、通常、何かを変更する方法に関する情報を含むファイルです(バグを修正するために頻繁に使用されますが、機能強化することもできます)。さまざまな種類のパッチがあります。
ソースコードパッチには、1つまたは複数のソースコードファイルを変更する方法に関する情報が含まれています。 diff コマンドを使用して簡単に生成でき、 patch コマンドを使用して適用できます(Linux / UNIXシステムではこれらのコマンドは標準です)。
ただし、バイナリパッチもあります。バイナリパッチには、バイナリ内の特定のバイトをどのように変更する必要があるかという情報が含まれています。バイナリパッチは、もちろん、オープンソースの世界ではまれですが、コンピューターの初期の頃には、出荷されたバイナリを変更するために(通常、バグを回避するために)たくさん見ました。
パッチを送信するということは、何かをローカルで修正し、そのファイルを誰かに送信することを意味します。したがって、このパッチを自分のローカルコピーまたはWebのパブリックコピーに適用できます。 / p>
パッチは、特定のプラットフォームでほとんどコンパイルされるソースコードがある場合にもよく使用されますが、実際にそこでコンパイルするにはいくつかの小さな変更が必要です。もちろん、ソースを取得して変更し、変更したコードをダウンロード用に提供できます。しかし、元のソースが再び変更された場合(たとえば、バグが修正されたり、小さな機能拡張が追加されたりした場合)次に、ソースを再ダウンロードし、変更を再度適用して、新しい修正バージョンを提供する必要がありました。変更したソースを最新の状態に保つのは大変な作業です。変更する代わりに、元のコピーと変更したコピーの間に diff を作成し、サーバーに保存します。ユーザーがソースからアプリをダウンロードしてコンパイルしたい場合、最初に最新の&amp;をダウンロードできます。元のソースの最大バージョンを使用してから、パッチを適用し(コンパイルされるようにします)、常に最新バージョンを使用します。パッチを変更する必要はありません。問題は、パッチが修正する場所の1つで元のソースが正確に変更された場合にのみ発生します。この場合、システムはパッチの適用を拒否し、新しいパッチを作成する必要があります。
パッチとは、メンテナーのソースツリーを自分のものにするために必要なすべての情報を含むファイルです。通常、 diff
または svn diff
または git format-patch
などのツールによって作成されます。
伝統的に、オープンソースプロジェクトはパッチの形で通常のシュラブからの提出を受け入れますので、他の人にリポジトリへのコミットアクセスを与える必要はありません。
通常は.patchファイルの形式のパッチは、2つのコードファイルセットの違いを送信するための一般的なフラットファイル形式です。あなたがオープンソースプロジェクトに取り組んでいて、ファイルにコード変更を加え、チェックインするためにプロジェクト所有者にそれを提出したい場合(通常はチェックイン権を持っていないため)、あなたはパッチを介してそうします。
WinMergeには、TortoiseSVNなどの他の多くのツールと同様に、この機能が組み込まれています。
パッチファイルは、既存のソースと変更したソースの違いを表します。多くのプロジェクトで機能を追加したりバグを修正したりするための主要な手段です。
diffコマンドを使用してパッチを作成します(たとえば)。
このパッチを開発メーリングリストに送信すると、受信が成功した場合、コミッターがパッチを適用し(変更を自動的に適用し)、コードをコミットします。
パッチはpatchコマンドを使用して適用されます。
一般的には、機能の集約チェンジセットを含む統合された差分ファイルを送信することを意味します。 Wikipediaのパッチについて詳しく読むことができます。いくつかのバージョン管理システム(svn、gitなど)は、変更セットに基づいてパッチファイルを作成します。
1. n. A temporary addition to a piece of code, usually as a quick-and-dirty
既存のバグまたは機能の改善。パッチは機能する場合と機能しない場合があります。 最終的にプログラムに永久に組み込まれます。差分と区別する または、パッチが残りよりも原始的な手段によって生成されるという事実によるmod プログラムの;古典的な例は、フロントを使用して変更された命令です パネル切り替え、およびプログラムのバイナリ実行可能ファイルに直接行われた変更 もともとHLLで書かれました。 1行の修正を比較します。
専門用語ファイルの定義全体を見るこちら
パッチは、システムバイナリの更新にも使用されます。マイクロソフトは常にパッチを送信していますが、それらはソースコードではありません。これらは、改善されたバイナリをインストールする.mspファイルです。すべてのコンピューターサイエンス用語と同様に、パッチはオーバーロードされています。
この用語は、お母さんが穴あきジーンズを履くために使用した膝当てのように、バグ修正を意味すると常に信じていました。