これは、Ubuntu Online、Fedora Online、Windowsオンラインエミュレーター、MACOSオンラインエミュレーターなどの複数の無料オンラインワークステーションのXNUMXつを使用してOnWorks無料ホスティングプロバイダーで実行できるコマンドパッチャーです。
プログラム:
NAME
patcher-パッチメンテナンスツール
SYNOPSIS
パッチャー[-n ][ ]
編集パッチの一部として。
patcher-r現在のパッチを更新します。
patcher [-f]-bXNUMXつのパッチを前のパッチに戻します。
パッチャー[-f]-b
に到達するまでシリーズに戻ります。
パッチャー[-f]-b
戻ってくる一連のパッチ。
patcher-aシリーズの次のパッチを適用します。
パッチャー-a に到達するまで、シリーズのすべてのパッチを適用します。
パッチャー-a 次に適用するシリーズからのパッチ。
パッチャー-n [-p ] -私
外部diffファイルをパッチにインポートします。 ストリップレベル
ディレクトリ名から。 パッチでは「-p1」が許可されていますが、
'-p1'のみ。
パッチャー[-f][-n ] [-p ] -私
外部diffファイルをパッチにインポートします。 ストリップレベル
ディレクトリ名から。 パッチでは「-p1」が許可されていますが、
'-p1'のみ。
Concept
Patcherは、パッチの管理に使用するperlスクリプトです。 非常に強力で、簡単に実行できます
使用し、高速です。
Patcherは、変更したファイルを追跡します。 次に、からパッチを生成できます
変更、diffツールを手動で処理する必要はありません。
ファイル変更の複数のレコードを持つことができます。これをパッチと呼びます。 パッチは
何か patch(1)コマンドを適用できます。
パッチは直列に積み重ねることができ、適用する必要のある順序を定義します。 パッチャー
シリーズ情報と、どのパッチが適用されたか、どのパッチが適用されたかに関する情報を保持します
ではありません。
DESCRIPTION
後でウォークスルーを行いますが、最初にの基本的な操作モードについて説明します。
パッチャー:
編集 ファイル
ファイル名を使用してpatcherを呼び出すと、patchはこのファイルのバックアップを作成します(ファイルが
存在します)。 これで、ファイルを作成または変更できます。 後で、パッチャーに作成を依頼できます
すべての変更で統一された差分。
作成 統一 差分
「patcher-r」を呼び出すだけで、すべての追加、変更の統一された差分が得られます
と削除。 差分は.patches/に保存されます。パッチ。 それはその形になっています
経由で直接適用できます patch(1)または、もちろん、「patcher-i」を介して。
「patcher-r」を実行するときはいつでも.patches/ .patchファイルが更新されます。
戻る でる a patch
変更を取り消して前のバージョンに移動するには、「patcher-b」と入力するだけです。 パッチャー
差分を作成するように依頼することで、変更が失われないようにします。
前回の更新以降、何かが変更されました。 -f(または--force)パッチャーを使用して移動できます
とにかく戻って。
-bの後にパッチ名の番号を指定することにより、複数のパッチを取り消すことができます。
再適用 a patch
「パッチャー-n -a"既存の管理対象パッチを適用できます。A
管理対象パッチは、.patchesディレクトリにすでに保存されており、言及されているパッチです。
.patches/seriesファイル内。 Patcherは、パッチが問題なく適用されるかどうかをテストし、
それを適用します。 パッチが拒否される場合は、-f(または--force)を使用してパッチを適用できます
とにかく。
-aの後にパッチ名の番号を指定することにより、複数のパッチを適用できます。
インポート 外部 パッチ
時々あなたは外部パッチを持っています。 これは管理対象パッチの反対であり、パッチは
.patchesディレクトリには保存されません。 インポートすることで、マネージドパッチになります。
-iを使用してパッチをインポートするだけです。 -pを使用できますディレクトリを指定します
レベル、-pと同様のオプション patch(1)。 ただし、
-pと数値の間のスペース。
通常、クリーンなパッチのみがインポートされます。 リジェクトを作成するパッチをインポートするには、
-f(または--force)。 パッチが正しく適用されなかったファイルのリストが表示されます。修正してください。
手動で問題。
後で「patcher-r」を使用してクリーンなパッチを作成できます。
インストール
パスのどこかにパッチャーを置くだけです。 それで全部です。
プロジェクトごとに、Patcherには「.patches」と呼ばれるXNUMXつの特別なディレクトリが必要です。 そうなる
このディレクトリを検索します。 存在しない場合、patcherは自動的に作成します。
内部
すべての作業は、単一のディレクトリツリーで行われます。 すべてのコマンドは、のルート内で呼び出されます
そのツリー(TODO:これは変更される可能性があります)。 Patcherは、パッチの「スタック」を管理します。
各パッチは、ベースツリーと先行するパッチに対するチェンジセットです。
すべてのパッチは、ファイル「.patches/series」に順番にリストされています。 Patcherはパッチをに追加します
このファイルですが、エントリを削除することはありません。 このファイルはテキストエディタで編集できますが、
削除するパッチが現在適用されていない場合にのみ行ってください。
現在適用されているパッチはすべて、ファイル「.patches/applied」に一覧表示されます。 パッチャー管理
このファイルの場合、このファイルを手動で編集する必要はありません。
各パッチは、ツリー内の多数のファイルに影響します。 これらのファイルはファイルリストに一覧表示されます
「.patches/*.files」という名前。 Patcherがそれらを管理します。 パッチをバックアウトすると、このファイルは
削除されました。 つまり、このファイルは適用されたパッチに対してのみ存在します。 によってのみ使用されます
「パッチャー-r」。
パッチは「.patches/*。patch」ファイルに配置されます。 それらは常に-p1で統一された差分です
パッチレベルとして。 その後、どこにでもコピーできます。 patch(1)ユーティリティはそれらをせずに読み取ります
問題は。
オプションで、パッチの説明を「.patches/*。txt」という名前のファイルに入れることができます。
したがって、特定のパッチ「my-first-patch」には、次のものが存在します。
-「。patches/series」のエントリ「my-first-patch.patch」。
-「。patches/apply」のエントリ「my-first-patch」(現在適用されている場合)
-ファイル「.patches/my-first-patch.files」には、my-のファイルの名前が含まれています。
最初のパッチは、変更、追加、または削除します
-コンテキスト差分であるファイル「.patches/my-first-patch.patch」、基本的にメイン
パッチャーの出力。
-オプションで、パッチの変更ログを含むファイル「.patches/my-first-patch.txt」。
説明またはあなたがそこに入れたものは何でも。
ウォークスルート
はじめましょう。
/ usr / src / linux(またはどこでも)に移動します。
それでは、いくつかのソースファイルの変更から始めましょう。
patcher -n my-patch kernel / sched.c
OK、パッチャーはkernel/sched.cをkernel/sched.c〜my-patchにコピーしました。プログラムには
.patchesディレクトリでいくつかの魔法をかけましたが、今は興味がありません。
次に、kernel/sched.caビットを編集します。
これで、パッチを文書化する準備が整いました。
.patches/my-patch.txtを作成します
次に、パッチを生成します。
パッチャー-r
これにより、「。patches/my-patch.patch」が生成されます。 このファイルを見てください。
ここで、逆方向に移動してsched.cへの変更を削除します。
パッチャー-b
私たちが今いる場所を見てください:
パッチャー-s
次に、my-patchに別のファイルを追加しましょう。 まず、パッチを再適用します。
パッチャー-a
次に、XNUMX番目のファイルを編集します。
パッチャーカーネル/printk.c
ここでは、コマンドラインオプションを使用せずに、patcherに単一の引数を指定したことに注意してください。 これ
現在のパッチに別のファイルを追加するように常にpatcherに指示します。
kernel/printk.cを編集します
my-patchを更新します:
パッチャー-r
次に、XNUMX番目のパッチを開始します。
patcher -n my-second-patch kernel / sched.c
ここでは、patcherのコマンドラインにファイル名があるので、ファイルを編集します。 しかし今、私たちは
-nでパッチ名を指定しました。 これにより、patcherに新しいパッチを作成するように指示されました。 今パッチャー
「my-patch」と「my-second-patch」のXNUMXつのパッチを管理します。
kernel / sched.cを編集して、my-second-patchにいくつかの変更を加えます
my-second-patchを生成します:
パッチャー-r
「.patches/my-second-patch.patch」をご覧ください。
また、シリーズファイルに「my-second-patch.patch」が追加されていることに注意してください。 あなたがいるときはいつでも
パッチを手動で開始すると、自動的にシリーズファイルに配置されます。
このようにして、すべてを積み重ねることができます。 XNUMXつのパッチを適用している場合は、次のように言います。
「patch-1」、「patch-2」、「patch-3」、「patch-4」、およびpatch-2とpatch-4の両方がタッチしている場合
kernel / sched.cの場合、次のようになります。
kernel / sched.c〜patch-2パッチ2より前の元のコピー
kernel / sched.c〜patch-4patch-4の前にコピーします。 パッチ2からの変更が含まれています
kernel/sched.c現在の作業コピー。 パッチ4からの変更が含まれています。
これは、diffヘッダーに「〜patch-name」が含まれていることを意味します。これは便利です。
のドキュメントで詳しく説明されています)。
ツアーを終了するために、両方のパッチを削除します。
パッチャー-b
パッチャー-b
ほんとうにそれだけです。
onworks.netサービスを使用してオンラインでパッチャーを使用する