Wiggle - クラウドでオンライン

これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンドです。

プログラム:

NAME


Wiggle - 拒否されたパッチを適用し、ワード単位の差分を実行します

SYNOPSIS


ぐらつき [関数] [オプション] file [ファイル]

DESCRIPTION


の主な機能 ぐらつき と同様の方法でファイルにパッチを適用することです。
patch(1)プログラム。

特徴的な違いは、 ぐらつき つまり、たとえ
パッチの「前」部分がターゲット ファイルと完全に一致しません。 これは次のようにして達成されます。
ファイルとパッチを単語に分割し、ファイル内の単語の最適な配置を見つけます。
パッチに言葉が入っています。 この配置が見つかったら、相違点 (単語単位) が検出されます。
パッチ内の内容は可能な限りファイルに適用されます。

だから、 ぐらつき (場合によっては) すでに適用されている変更を検出し、
それらを無視してください。

ぐらつき パッチ内のすべての変更が何らかの方法でターゲット ファイルに適用されるようにします。 もし
ファイルに特定の変更を加えることができない場合、ファイルには、変更箇所を示す注釈が付けられます。
変更は、と同様の方法で行う必要があります。 マージ(1) を使用したプログラム -A オプション。 各
注釈には 3 つのコンポーネントが含まれています: 元のファイルの変更が必要な部分
ファイル内で正確に一致しなかったパッチの一部、および
パッチのその部分を置き換えるテキスト。 これらは線で区切られています
正確に 7 つの同一の文字 (「<」、「|」、「=」、「>」のいずれか) が含まれている可能性があります。
その後に説明的な言葉が続きます。 それで
<<<<<<< が見つかりました
元のファイルの一部
||||||| 期待される
置き換えるテキスト
=======
置き換えるテキスト
>>>>>>> 交換
「置換するテキスト」をどこかの「置換するテキスト」に置き換える必要があることを示します
元のファイルの一部。 しかし ぐらつき 作る場所が見つからなかった
この変更。

ぐらつき ではなく、関係する単語のみを示す競合レポートを作成することもできます。
行全体を表示するよりも。 この場合、出力は次のようになります。
<<<---オリジナル|||古い===新しい--->>>

考えられる使用法の XNUMX つ ぐらつき 走ることです patch パッチを適用し、リストを収集します。
パッチからのエラー メッセージを監視して拒否します。 次に、ファイルごとに、
拒否が見つかったので実行
Wiggle -- 元のファイルを置き換える originalfile.rej

最後に、各ファイルを調べて未解決の競合を解決し、次のことを確認する必要があります。
適用されたパッチは意味的に正しいです。

あるいは、元のパッチ ファイルを ブラウズ モードとして
Wiggle -B < パッチファイル

これにより、変更と競合を検査し、ある程度は修正できるようになります。
そして結果を保存できます。

OPTIONS
次のオプションは次のように理解されます。 ぐらつき。 これらのいくつかはさらに詳しく説明されています
詳細については、MERGE、DIFF、EXTRACT、および BROWSE に関する次のセクションを参照してください。

-m, - マージ
「結合」機能を選択します。 これはデフォルトの機能です。

-d, --差分
「差分」機能を選択します。 これにより、ファイル間の差異が表示されます。 これはできる
後に与えられる - ブラウズ (下記を参照) この場合、XNUMX つのファイルのパッチまたは差分は次のようになります。
オリジナルなしで閲覧できます。

-x, - エキス
「抽出」機能を選択します。 これにより、パッチまたはマージ ファイルの XNUMX つのブランチが抽出されます。

-B, - ブラウズ
「参照」機能を選択します。 これは、
異なるプレゼンテーション。 結果を単に標準に送信するのではなく、
出力では、ncurses ベースの GUI を使用して表示されるため、パッチの各ハンクが
どのような競合が関係しているのか、また何を解決する必要があるのか​​を調査することができます。
パッチが所定の位置に小刻みに動かされる順序では無視されます。

-w, -言葉
すべての操作と表示がワードベースであることを要求します。 これはデフォルトです。
「差分」機能。

-l, -行
すべての操作と表示が行ベースであることを要求します。

-b, -無視-空白
空白(スペース、タブ、改行)の強調を解除することで違いが決まり、
変更。

通常、空白は、一致または変更できる単語のように扱われます。
パッチ。 このフラグが有効な場合、空白は間の区切り文字としてのみ機能します。
他の言葉とそれ自体は一致しません。 この影響で、
空白の量は重要なものとして扱われません。

正確には、空白はその前の単語と結合されます。または、次の場合は、
行の先頭のスペースと次の単語。 ただし、それには関与していない
その単語の比較。 パッチが単語を削除する場合、添付された空白は
も削除されます。 パッチが単語を追加する場合、添付の空白は次のように追加されます。
よく。

空の行、または空白のみを含む行は XNUMX つの単語として扱われます。
スペースの数に関係なく、他の空行と一致します。

-b には効果がありません - ライン モード。

-p, - パッチ
最後に名前を付けたファイルをファイル (--diff 付き) またはマージではなくパッチとして扱います。
( - エキス)。 の マージ or ブラウズ モード、 -p ファイルが XNUMX つだけ存在する必要があります。
はパッチであり、複数のファイルへのパッチを含めることができます。 パッチがマージされます
各ファイルに。 で使用する場合 マージ モードでは、この使用法には - 交換 オプション
マージされた多数のファイルを標準出力に書き込むのは現実的ではないためです。

複数ファイルのパッチを処理する場合、 -p 数値引数を続けることができます
で指定されたファイルから削除するファイル名コンポーネントの数を示します。
パッチファイル。 数値引数が指定されていない場合、 ぐらつき 適切な値を導き出します
ファイルシステム内にどのようなファイルが存在するかに基づく数値。

-r, - 交換
通常、マージされた出力は標準出力に書き込まれます。 と - 交換
元のファイルはマージ出力に置き換えられます。 の ブラウズ モード、これは指示します
ぐらつき 終了時に結果のマージを常に保存します。

-o, --output =
これは、結果を標準出力に書き込んだり、元のファイルを置き換えたりするのではなく、
出力を指定されたファイルに書き込むように要求します。 これだけでも意味あるよ
  - マージ or - ブラウズ 参照する単一のマージが与えられた場合。

このオプションはオーバーライドします -r.

-R, - 逆行する
と一緒に使用する場合 差分 関数では、計算する前にファイルを交換します。
違い。 と一緒に使用すると、 マージ or ブラウズ 機能、 ぐらつき を企てる
変更を適用するのではなく元に戻します。

-i, --いいえ、無視します
通常、wiggle はすでに変更されているように見えるパッチの変更を無視します。
オリジナルで適用されます。 このフラグを使用すると、それらの変更は競合として報告されます
無視されるのではなく。

-W, --show-wiggles
と一緒に使用する場合 - マージ、適切な場所に小刻みに移動できる競合は次のように報告されます。
このフラグが発生した場合の結果を示す追加のスタンザと競合します。
使われていなかった。 追加のスタンザは 7 を含む行で導入されます。
アンパサンド(&) 文字は次のようになります。
<<<<<<< が見つかりました
元のファイルの一部
||||||| 期待される
置き換えるテキスト
=======
置き換えるテキスト
&&&&&&& 解決
Wiggle が成功した場合のテキスト
>>>>>>> 交換

--report-wiggles
マージがすべての変更の適用に成功すると、通常は次のメッセージが表示されて終了します。
成功ステータス (0)、競合が発生して失敗した場合のみ失敗 (1) を報告します。
注釈付き。 と --report-wiggles ぐらつき 変更があれば失敗も報告します
これは次のような場合に役立ちます。 ぐらつき 自動マージに使用されます
のように git。 何らかの揺れが起こった場合、 git 失敗と結果を報告します
それらが許容可能であることを確認するために検査することができます。

-h, - 助けて
簡単なヘルプ メッセージを出力します。 いずれかの関数セレクターの後に指定した場合
(- マージ, --差分, - エキス, - ブラウズ) その機能に固有のヘルプが表示されます。

-V, - バージョン
のバージョン番号を表示します ぐらつき.

-v, -詳細
詳細モードを有効にします。 現時点ではこれに違いはありません。

-q, - 静かな
静音モードを有効にします。 これにより、マージ関数からのメッセージが表示されなくなります。
解決できない対立です。

WORDS
ぐらつき タスクを実行するときにテキストを行または単語に分割できます。 ラインというのは単純に、
改行で終了する文字列。 単語は最大の連続した単語のいずれかです
英数字の文字列 (アンダースコアを含む)、最大の連続するスペース文字列、または
タブ文字、またはその他の単一文字。

MERGE
マージ関数は、他の XNUMX つのテキスト間のすべての変更を検出することにより、指定されたテキストを変更します。
そしてそれらの変更を指定されたテキストに適用します。

通常は ぐらつき の可能性を最大限に高めるために、どの単語が変化したかに焦点を当てます。
指定されたテキスト内で、指定された変更のコンテキストに適切に一致するものを見つけます。 ただし、それは可能です
代わりに行全体のみを考慮してください。

ぐらつき コマンドラインにリストされたファイルから必要な XNUMX つのテキストを抽出します。
1、2、または 3 つのファイルをリストすることができ、そのうちのいずれか XNUMX つを単一ハイフンで表すことができます。
標準入力。

XNUMX つのファイルが与えられた場合、 -p オプションが存在しない場合、ファイルは マージ
ファイル、つまり「merge -A」または「wiggle」の出力。 このようなファイルには暗黙的に XNUMX つのファイルが含まれています。
ストリームを抽出して比較します。

XNUMX つのファイルが指定された場合、最初のファイルには単純に主テキストが含まれ、XNUMX 番目のファイルには
パッチ ファイル (「diff -u」または「diff -c」の出力、またはからの「.rej」ファイル) として扱われます。
patch) と他の XNUMX つのテキストはそこから抽出されています。

XNUMXつのファイルを一緒に与えた場合、 -p オプションを指定すると、ファイルはパッチ ファイルとして扱われます。
パッチを適用するファイルの名前が含まれます。 この場合、複数のマージ操作
発生する可能性があり、それぞれがパッチで指定されたファイルから XNUMX つのストリームを取得し、他の XNUMX つのストリームが取得されます。
パッチ自体から。 の - 交換 オプションは必須であり、結果は書き戻されます
ターゲットファイルに。

最後に、XNUMX つのファイルがリストされている場合、それらのファイルには指定されたテキストと XNUMX つのファイルが含まれるとみなされます。
他のテキストも順番に。

通常、マージの結果は標準出力に書き込まれます。 もし -r フラグが与えられ、
出力は、元の指定されたファイルを置き換えるファイルに書き込まれます。 この場合、
元のファイルの名前は次のように変更されます。 .ポリグ サフィックス (意味のある「パッチされたオリジナル」の意味)
初めて使用する場合 patch パッチを適用してから使用します ぐらつき 拒否を小刻みに動かします)。

さらに、 -o オプションにファイル名を指定すると、出力はそのファイルに書き込まれます。
ファイル。 この場合、バックアップは作成されません。

エラー(ファイルアクセスエラーなど)が発生していない場合 ぐらつき すべての場合、ステータス 0 で終了します。
変更は正常にマージされ、終了ステータスは 1 になり、あれば短いメッセージが表示されます。
変更は完全にマージできず、代わりに注釈として挿入されました。 ただし、
どちら --report-wiggles or --show-wiggles オプションが与えられ、 ぐらつき も存在します
これが成功した場合でも、変更を反映する必要がある場合は、ステータス 1。

マージ機能は、行または単語に関して XNUMX つの異なるモードで動作できます。

-行 オプションを使用すると、行全体が比較され、競合があれば全体として報告されます。
置き換える必要がある行。

-言葉 オプションでは、個々の単語が比較され、矛盾があれば報告されます。
影響を受けた単語をカバーします。 これは、<<<|||===>>> 競合形式を使用します。

これらのオプションのいずれも使用しない場合は、ハイブリッド アプローチが採用されます。 個々の言葉は、
比較およびマージされますが、競合が見つかった場合は周囲の行全体が報告されます
対立しているように。

ぐらつき 他の XNUMX つのテキスト間のすべての変更が確実に反映されます。
なんとなくマージした結果。 変更には XNUMX つの異なる方法があります
反映。

1 変化が変換する場合 A 〜へ B および A オリジナルの適切な場所にあります
ファイルに置き換えられると、 B。 これには、次の可能性が含まれます。 B 空いていますが、
しないこと A 空です。

2 単純に追加する変更が見つかった場合 B およびその直前のテキストと
挿入に続いて、適切な形式で元のファイルに隣接して見つかります。
場所、それから B それらの隣接するテキストの間に挿入されます。

3 変更が見つかった場合、どの変更が行われるか A 〜へ B これは(文脈に基づいて)次のように見えます
と協調する B オリジナルでは、この変更はすでに行われていると想定されます。
適用され、変更は無視されます。 これが発生すると、次のことを反映したメッセージが表示されます。
無視された変更の数は次のように出力されます。 ぐらつき。 この最適化は次のように行うことができます。
で抑制された -i フラグ。

4 上記の可能性のいずれにも当てはまらない変更が見つかった場合、
前述のように競合が報告されます。

違い
diff 関数は主に、アラインメントを検査できるようにするために提供されています。 ぐらつき
テキスト間で計算され、マージの実行に使用されます。

diff 関数の出力は、diff の統合された出力と似ています。 しかし一方で
diff は一般的なテキストの長い部分を出力しません。 ぐらつきの diff モードはすべてを出力します。

単語ベースのアライメントを計算する場合 (デフォルト)、 ぐらつき これらの単語を表示する必要があるかもしれません-
ベースの違い。 これは、unified-diff 形式の拡張機能を使用して行われます。 行の場合
垂直バーで始まり、その後、特別なマルチバーで囲まれたセクションが含まれる場合があります。
文字括弧。 角括弧「<<<++」と「++>>>」は追加されたテキストを囲み、「<<<--」は追加テキストを囲みます。
削除されたテキストは「-->>>」で囲まれます。

ぐらつき XNUMX つの方法のいずれかで比較する XNUMX つのテキストを指定できます。

ファイルが XNUMX つだけ指定された場合、それはパッチとして扱われ、その XNUMX つのブランチはパッチとして扱われます。
パッチを比較してみます。 これにより、ラインベースのパッチからパッチを効果的に洗練できるようになります。
ワードベースのパッチに。

XNUMX つのファイルが指定された場合、通常、それらは比較される単純なテキストであると想定されます。

XNUMX つのファイルが --patch オプションとともに指定された場合、XNUMX 番目のファイルは次のようにみなされます。
パッチである場合、最初のブランチ (-1 の場合) または 2 番目のブランチ (-XNUMX の場合) が抽出され、
最初のファイルで見つかったテキストと比較します。

この最後のオプションにより、 ぐらつき パッチ ハンクを調整するための「最適な」アルゴリズムを適用します。
差分を計算する前にファイルを使用してください。 このアルゴリズムは、
ファイルを使用してパッチを適用し、この方法で生成された違いを比較することでその値を確認できます。
最初にパッチの XNUMX つのブランチをファイルに抽出することによって生じる違いと、
次に、そのファイルとメインファイルの差を計算します。

エキス
の抽出機能 ぐらつき 抽出するための内部機能を公開するだけです
パッチまたはマージ ファイルの XNUMX つのブランチ。

正確に XNUMX つのファイルを指定する必要があり、そうでない限り、それはマージ ファイルであるとみなされます。
- パッチ が指定されている場合、パッチがあるとみなされます。

ブランチの選択は、次のいずれかを提供することによって行われます。 -1, -2または -3 明らかな意味を持つ。

ブラウズ
のブラウズ機能は、 ぐらつき マージの結果を示します、または ( -d) の差分
次のようなキーストロークを使用してナビゲートできるテキストベースの GUI vi(1)または エマックスとします。

ブラウザを使用すると、XNUMX つまたは XNUMX つのストリームを個別に表示できます。
さまざまな種類のテキストを強調表示するために使用される色 - 追加されたテキストは緑、削除されたテキストは赤
テキストなど。パッチ単体、マージの完全な結果、または
マージとパッチを並べて表示します。

ブラウザには、状況依存のヘルプ ページが多数用意されており、次の方法でアクセスできます。
「?」を入力中

GUI の右上には、カーソルの下にあるテキストのタイプが表示されます。
文字の色で示されます。 オプションは「変更なし」、「変更済み」、「一致しない」、
無関係、すでに適用されている、競合している。 これらの意味が少しでもわかったら
実験が役立つはずです。

中には限られた量の編集が許可されます ブラウズ モード。 現在のテキストは
不要なものは次のように破棄できます x。 これにより、競合または変更が未変更に変換されます。
Unmatched から Changed (実質的に空の文字列に変更されます)。 同様に
テキストは必要に応じてマークできます c。 これにより、競合または無関係が次のように変換されます。
かわった。 同じキーを再度使用すると、変更が元に戻ります。

最後に大文字 X 現在の行のすべての変更を元に戻します。

より大幅な変更を加えるには、次のように使用できます v エディターを実行します。 $ VISUAL or
$編集者 環境に設定されている場合。

変更を加えた場合、wiggle は変更を保存するかどうかを尋ねます。
- 交換 与えられなかった。

警告


拒否されたパッチを適用する場合は、常に注意が必要です。 ぐらつき。 時 patch
パッチを拒否する場合、それには正当な理由があります。 それでも ぐらつき を見つけることができるかもしれません
各テキストの変更を適用する信頼できる場所ですが、結果が適切であるという保証はありません。
意味的には正しい。 結果は常に検査して、次のとおりであることを確認する必要があります。
正しい。


ぐらつき - 交換 file ファイル.rej
これが通常の使い方です ぐらつき そして、あらゆる変更を受け入れます ファイル.rej それ patch 可能性
適用せず、それらをマージします file.

ぐらつき -dp1 file ファイル.rej
これにより、 file の枝
差分 ファイル.rej そして違いを表示します。 これにより、特定のパッチがどこにあるかを確認できます
適用されます。

ぐらつき - マージ - 助けて
のマージ機能に関するヘルプを表示する ぐらつき.

ぐらつき - ブラウズ - パッチ アップデート.パッチ
解析する アップデート.パッチ パッチのファイルを選択し、パッチが適用されたファイルのリストを表示します。
参照して各パッチを詳細に調べます。

ぐらつき と統合することができます git デフォルトのマージツールと diff として使用されるようにします。
道具。 これは、次の行を追加することで実現できます。 .gitconfig ユーザーの家で
ディレクトリにあります。
[「ウィグル」をマージ]
name = "Wiggle 柔軟なマージ"
ドライバー = ウィグル -o %A %A %O %B
再帰的 = バイナリ
[マージ]
ツール = 小刻みに動く
[マージツール「ウィグル」]
cmd = wiggle -B -o $MERGED $LOCAL $BASE $REMOTE
[difftool「ウィグル」]
cmd = wiggle -Bd $LOCAL $REMOTE
これは git マージツール および git 差分ツール つかいます ぐらつき.

したい場合は git いつも使うために ぐらつき マージの場合 (危険な可能性があります)、次のように追加できます。
* マージ=小刻みに動かす
適切なところへ git属性 のようなファイル $HOME/.config/git/attributes.

見積もり


の名前 ぐらつき 以下の引用からインスピレーションを受けました。

私が見つけた問題は、私がしばしば撮りたいと思うことです
(ファイル1+パッチ) -> ファイル2、
file1がないとき。 しかし、マージツールが取りたいのは、
(ファイル1|ファイル2) -> ファイル3。
パッチを変更するのに役立つグラフィカル ツールを見たことがありません
ファイルに。
-- アンドリュー・モートン - 2002

欠点


- ぐらつき --diff に対して生成される拡張 unified-diff 出力を読み取ることができません
――言葉。

- ぐらつき --merge に対して生成されるワードベースのマージ形式を読み取ることができません
――言葉。

- ぐらつき Unicode を理解していないため、すべての非 ASCII 文字を多く扱います。
句読点を扱うのと同じように、それぞれを別の単語として扱います。 の
ブラウザでは非 ASCII 文字が適切に表示されません。

onworks.net サービスを使用して Wiggle オンラインを使用する



最新のLinuxおよびWindowsオンラインプログラム