これは、Ubuntu Online、Fedora Online、Windowsオンラインエミュレーター、MAC OSオンラインエミュレーターなどの複数の無料オンラインワークステーションのいずれかを使用して、OnWorks無料ホスティングプロバイダーで実行できるコマンドwiggleです。
プログラム:
NAME
wiggle - 拒否されたパッチを適用し、単語ごとの差分を実行します
SYNOPSIS
ぐらつき [関数] [オプション] file [ファイル]
DESCRIPTION
の主な機能 ぐらつき ファイルにパッチを適用する方法は、
patch(1)プログラム。
の際立った違いは ぐらつき パッチを適用しようとすると、
パッチの「前」の部分はターゲットファイルと完全に一致しません。これは次のように実現されます。
ファイルとパッチを単語に分割し、ファイル内の単語の最適な配置を見つける
パッチ内の単語と一致する。このアラインメントが見つかったら、単語ごとの差異は
パッチ内の変更は可能な限りファイルに適用されます。
だから、 ぐらつき (場合によっては)すでに適用された変更を検出し、
それらを無視してください。
ぐらつき パッチ内のすべての変更が何らかの方法でターゲットファイルに適用されることを保証します。
ファイルに特定の変更を加えることができない場合は、ファイルに注釈が付けられ、
変更は、 マージ(1)プログラム -A オプション。各
注釈には3つの要素が含まれます。変更を加えるべき元のファイルの一部です。
適用できないパッチの一部、ファイル内で正確に一致しなかったパッチ、および
パッチのその部分を置き換えるテキスト。これらは行で区切られています
正確に7つの同一の文字(「<」、「|」、「=」、「>」のいずれか)を含む。
後に説明的な単語が続きます。
<<<<<<< 見つかりました
元のファイルの一部
||||||| 予想される
置き換えるテキスト
=======
置き換えるテキスト
>>>>>>> 交換
「置換するテキスト」を「置換後のテキスト」に置き換える必要があることを示します。
元のファイルの一部です。しかし ぐらつき 作る場所が見つからなかった
この変更。
ぐらつき 関連する単語のみを表示する競合レポートも作成できます。
行全体を表示するよりも、出力は次のようになります。
<<<---オリジナル|||旧===新--->>>
一つの使用法としては ぐらつき 走ることです patch パッチを適用し、リストを収集する
パッチからのエラーメッセージを監視して拒否します。その後、
拒否が見つかりました。実行
wiggle --replace オリジナルファイル originalfile.rej
最後に、各ファイルを調べて、未解決の競合を解決し、
適用されたパッチは意味的に正しいです。
あるいは、元のパッチファイルを ブラウズ モードとして
wiggle -B < パッチファイル
これにより、変更と競合を検査し、ある程度修正できるようになります。
そして結果を保存することができます。
OPTIONS
次のオプションは次のように理解されます。 ぐらつきこれらのいくつかは、さらに詳しく説明されています
詳細については、MERGE、DIFF、EXTRACT、BROWSE の次のセクションを参照してください。
-m, - マージ
「マージ」機能を選択します。これがデフォルトの機能です。
-d, --差分
「diff」機能を選択します。ファイル間の相違点が表示されます。
後に与えられる - ブラウズ (下記参照)その場合、2つのファイルのパッチまたは差分は
オリジナルなしでも閲覧できます。
-x, - エキス
「抽出」機能を選択します。これにより、パッチまたはマージ ファイルの 1 つのブランチが抽出されます。
-B, - ブラウズ
「参照」機能を選択します。これは「マージ」(または「差分」)に似ていますが、
異なるプレゼンテーション。結果を単に標準に送信するのではなく、
出力はncursesベースのGUIを使用して表示されるため、パッチの各部分は
どのような紛争が関与していたか、何が必要だったかを理解するために調査することができます
パッチを所定の位置に動かす順序は無視されます。
-w, -言葉
すべての操作と表示を単語ベースにするよう要求します。これは、
「diff」機能。
-l, -行
すべての操作と表示が行ベースになるように要求します。
-b, -無視-空白
空白(スペース、タブ、改行)を強調しないことで違いがわかり、
変更。
通常、空白は単語のように扱われ、
パッチ。このフラグが有効な場合、空白は
言い換えれば、それ自体は一致しません。この影響は、
空白の量は重要視されません。
正確に言うと、空白は前の単語と結合されるか、
行頭のスペースを次の単語とつなげる。ただし、
その単語の比較は行われません。パッチが単語を削除すると、その単語に付随する空白は
も削除されます。パッチが単語を追加する場合、付加された空白は次のように追加されます。
よく。
空行、または空白のみの行は、1つの単語として扱われます。
スペースの数に関係なく、他の空白行と一致します。
-b 効果はありません - ライン モード。
-p, - パッチ
最後に指定されたファイルをファイル(--diff を使用)またはマージではなくパッチとして扱います。
(--extract)。 マージ or ブラウズ モード、 -p 正確に1つのファイルが必要です
パッチであり、複数のファイルへのパッチを含むことができます。パッチはマージされます
各ファイルに追加します。 マージ このモードでは、 - 交換 オプション
多数のマージされたファイルを標準出力に書き込むのは非現実的です。
複数ファイルのパッチを処理する場合、 -p 数値引数を続けることができる
ファイル名からいくつのファイル名要素を削除するかを示す。
パッチファイル。数値引数が指定されていない場合は、 ぐらつき 適切な
ファイルシステム内に存在するファイルに基づく番号。
-r, - 交換
通常、マージされた出力は標準出力に書き込まれます。 - 交換
元のファイルはマージ出力に置き換えられます。 ブラウズ モードでは、これは
ぐらつき 終了時に常に結果のマージを保存します。
-o, --output =
結果をstdoutに書き込んだり、元のファイルを置き換えたりするのではなく、
出力を指定されたファイルに書き込むように要求します。これは意味を持ちます
- マージ or - ブラウズ 参照するマージが 1 つだけ指定されている場合。
このオプションはオーバーライドします -r.
-R, - 逆行する
と一緒に使用する場合 差分 関数を計算する前にファイルを交換します
違い。 マージ or ブラウズ 機能、 ぐらつき を企てる
変更を適用するのではなく元に戻します。
-i, --無視しない
通常、wiggleは既に適用されていると思われるパッチの変更を無視します。
元のファイルに適用されている。このフラグを使用すると、それらの変更は競合として報告される。
無視されるのではなく。
-W, --ウィグルを表示
と一緒に使用する場合 - マージ調整可能な競合は次のように報告されます。
このフラグが使われた場合の結果を示す追加の節と競合します
使われていなかった。追加の節は7行で始まる。
アンパサンド(&) 文字は次のようになります。
<<<<<<< 見つかりました
元のファイルの一部
||||||| 予想される
置き換えるテキスト
=======
置き換えるテキスト
&&&&&&& 解決
ウィグルが成功した場合に表示されるテキスト
>>>>>>> 交換
--レポートウィグル
マージがすべての変更を適用して成功した場合、通常は
成功ステータス(0)、競合が発生し、
注釈付き。 --レポートウィグル ぐらつき 変更があった場合も失敗を報告します
これは、 ぐらつき 自動マージに使用されます
のように git揺れが起こったら、 git 失敗とその結果を報告する
検査して、許容できるかどうかを確認できます。
-h, - 助けて
簡単なヘルプメッセージを出力します。関数セレクタの1つの後に指定すると
(- マージ, --差分, - エキス, - ブラウズ)その機能に固有のヘルプが表示されます。
-V, - バージョン
のバージョン番号を表示します ぐらつき.
-v, -詳細
詳細モードを有効にします。現時点では、これによって違いはありません。
-q, - 静かな
サイレントモードを有効にします。これにより、マージ関数からのメッセージが表示されなくなります。
解決不可能な対立です。
WORDS
ぐらつき タスクを実行する際にテキストを行または単語に分割できます。行は単純に
改行で終わる文字列。単語は最大連続文字か
英数字の文字列(アンダースコアを含む)、最大連続スペース文字列、または
タブ文字、またはその他の単一文字。
MERGE
マージ機能は、他の2つのテキスト間のすべての変更を見つけて、指定されたテキストを変更します。
そして、それらの変更を指定されたテキストに適用します。
通常は ぐらつき どの単語が変化したかに焦点を当て、
与えられたテキストから、与えられた変更の文脈によく一致するものを見つけること。しかし、
代わりに行全体だけを考慮してください。
ぐらつき コマンドラインにリストされたファイルから必要な 3 つのテキストを抽出します。
1、2、または3つのファイルがリストされ、そのうちのXNUMXつがハイフンXNUMXつで、
標準入力。
1つのファイルが指定され、 -p オプションが指定されていない場合、ファイルは マージ
ファイル、つまり「merge -A」または「wiggle」の出力。このようなファイルには暗黙的に3つの
ストリームが抽出され、比較されます。
2つのファイルが与えられた場合、最初のファイルには単に主要なテキストが含まれ、2番目のファイルには
パッチファイルとして扱われます(「diff -u」または「diff -c」の出力、または「.rej」ファイル)
patch) から抽出された他の 2 つのテキストです。
1つのファイルが -p オプションを指定すると、ファイルはパッチファイルとして扱われます
パッチを適用するファイルの名前が含まれます。この場合、複数のマージ操作
それぞれがパッチで指定されたファイルから1つのストリームを取得し、他の2つは
パッチ自体から。 - 交換 オプションは必須であり、結果が書き戻されます
ターゲットファイルに。
最後に、3つのファイルがリストされている場合、それらは指定されたテキストと2つの
その他のテキストは順番に。
通常、マージの結果は標準出力に書き込まれます。 -r フラグが与えられ、
出力は元のファイルを置き換えるファイルに書き込まれます。この場合、
元のファイルは、 .ポリグ 接尾辞(「パッチを当てたオリジナル」の意味)
初めて使用する場合 patch パッチを適用し、 ぐらつき 不良品をかき混ぜるため。
さらに、 -o オプションにファイル名が指定されている場合、出力はそのファイルに書き込まれます
ファイル。この場合、バックアップは作成されません。
エラーが発生しない場合(ファイルアクセスエラーなど) ぐらつき すべて終了した場合はステータス0で終了します
変更は正常にマージされ、終了ステータスは1で、簡単なメッセージがあれば表示されます。
変更は完全にマージできず、代わりに注釈として挿入されました。ただし、
どちら --レポートウィグル or --ウィグルを表示 選択肢が与えられた、 ぐらつき も存在する
成功したにもかかわらず、何らかの変更を加える必要があった場合のステータスは 1 です。
マージ機能は、行または単語に関して 3 つの異なるモードで動作できます。
-行 オプションでは、行全体が比較され、競合があれば全体として報告されます。
置き換える必要がある行。
-言葉 オプションでは、個々の単語が比較され、競合があればすぐに報告されます
影響を受ける単語をカバーします。これは、<<<|||===>>> 競合形式を使用します。
どちらのオプションもない場合は、ハイブリッドアプローチが採用されます。個々の単語は
比較してマージされますが、競合が見つかった場合は周囲の行全体が報告されます
対立しているように。
ぐらつき 他の2つのテキスト間のすべての変更が、
マージの結果が何らかの形で反映される。変更が反映される方法は4つある。
反映。
1 変更によって A 〜へ B A 元の適切な場所に見つかります
ファイルに置き換えられます Bこれには、 B 空ですが
しないこと A 空です。
2 単に B そして直前のテキストと
挿入後の部分は、元のファイル内の適切な場所に隣接して存在する。
場所、その後 B 隣接するテキストの間に挿入されます。
3 変更が見つかった場合 A 〜へ B そしてこれは(文脈に基づいて)
と協調する B オリジナルでは、この変更はすでに行われていると想定されます
適用されず、変更は無視されます。この場合、
無視された変更の数は次のように表示されます ぐらつきこの最適化は
で抑制された -i フラグ。
4 上記のいずれの可能性にも当てはまらない変更が見つかった場合は、
前述のように競合が報告されます。
違い
diff関数は、主に、 ぐらつき
テキスト間で計算され、マージを実行するために使用されます。
diff関数の出力は、diffの統合出力に似ています。しかし、
diffは長い共通テキストを出力しません。 ぐらつきの diff モードはすべてを出力します。
単語ベースのアライメントを計算する場合(デフォルト)、 ぐらつき これらの単語を表示する必要があるかもしれません
ベースの差異。これは、unified-diff形式の拡張を使用して行われます。行が
縦棒で始まり、その後に特殊なマルチバーで囲まれたセクションが含まれる場合があります。
文字括弧。括弧「<<<++」と「++>>>」は追加されたテキストを囲み、「<<<--」は
削除されたテキストは「-->>>」で囲まれます。
ぐらつき 2 つのテキストを 3 つの方法のいずれかで比較することができます。
ファイルが1つだけ指定されている場合は、パッチとして扱われ、その2つのブランチは
パッチが比較されます。これにより、行ベースのパッチからパッチを改良することができます。
単語ベースのパッチに。
2 つのファイルが指定された場合、通常は比較対象となる単純なテキストであると見なされます。
--patchオプションとともに2つのファイルが指定された場合、2番目のファイルは
パッチであり、最初のブランチ(-1)または2番目のブランチ(-XNUMX)が抽出され、
最初のファイルで見つかったテキストと比較します。
この最後の選択肢は ぐらつき パッチハンクを整列させるための「ベストフィット」アルゴリズムを適用する
差分を計算する前にファイルと比較する。このアルゴリズムは、
パッチをファイルに当てはめ、その値を確認できるのは、このようにして生成された差異を比較するためである。
パッチの1つのブランチをファイルに抽出することによって生成された違いと、
次に、そのファイルとメイン ファイルの差分を計算します。
エキス
抽出機能 ぐらつき 抽出するための内部機能を公開するだけです
パッチまたはマージ ファイルの 1 つのブランチ。
正確に1つのファイルを指定する必要があり、それがマージファイルであるとみなされます。
- パッチ が指定されている場合は、パッチが想定されます。
ブランチの選択は、次のいずれかを提供することによって行われます。 -1, -2または -3 明らかな意味をもって。
ブラウズ
ブラウズ機能 ぐらつき マージの結果を表示するか、( -d) 差分
同様のキー操作で操作できるテキストベースのGUI vi(1)または エマックスとします。
ブラウザでは、2つまたは3つのストリームをそれぞれ個別に表示できます。
さまざまな種類のテキストを強調表示するために使用される色 - 追加されたテキストは緑、削除されたテキストは赤
テキストなどを表示できます。また、パッチ自体、マージの完全な結果、または
マージとパッチを並べて表示します。
ブラウザには、コンテキストに応じたヘルプページが多数用意されており、
「?」と入力
GUIの右上にはカーソル下のテキストの種類が表示されます。
テキストの色で示されます。オプションは、変更なし、変更あり、一致なし、
余分なもの、すでに適用されているもの、そして矛盾。これらの意味が少し明確になれば
実験が役に立つはずです。
編集は制限付きで許可されます。 ブラウズ モード。現在、
不要なものは捨てることができる xこれにより、競合または変更が未変更に変換されます。
そして、Unmatched を Changed に変更します(これにより、実質的に空の文字列に変更されます)。同様に
テキストは次のようにマークすることができます cこれによって、競合または無関係な状態が
変更されました。同じキーを再度使用すると、変更が元に戻ります。
最後に、大文字 X 現在の行のすべての変更を元に戻します。
より抜本的な変更を行うには、 v エディタを実行すると、 $ VISUAL or
$編集者 環境に設定されている場合は。
変更を加えた場合、wiggleは変更を保存するかどうか尋ねてきます。
- 交換 与えられなかった。
警告
拒否されたパッチを適用するときは常に注意が必要です。 ぐらつき。 時 patch
パッチを拒否する理由は、正当な理由があるからです。 ぐらつき 見つけることができるかもしれない
それぞれのテキスト変更を適用する信頼できる場所がないため、結果が
意味的に正しいかどうかは常に検査されるべきである。
正しい。
例
ぐらつき - 交換 file ファイル.rej
これは通常の使用法です ぐらつき そして、 ファイル.rej それ patch 可能性
適用されず、統合される file.
ぐらつき -dp1 file ファイル.rej
これは、 file と の枝
差分 ファイル.rej 差分を表示します。これにより、特定のパッチが
適用されます。
ぐらつき - マージ - 助けて
マージ機能に関するヘルプ ぐらつき.
ぐらつき - ブラウズ - パッチ アップデートパッチ
解析する アップデートパッチ パッチファイルを検索し、パッチを適用したファイルのリストを表示します。
各パッチを詳細に調べるために参照します。
ぐらつき と統合することができます git デフォルトのマージツールと差分ツールとして使用される
ツール。これは、次の行を追加することで実現できます。 .gitconfig ユーザーの家で
ディレクトリにあります。
[「ウィグル」をマージ]
name = "ウィグルフレキシブルマージ"
ドライバー = ウィグル -o %A %A %O %B
再帰的 = バイナリ
[マージ]
ツール = 揺らす
[マージツール「ウィグル」]
cmd = wiggle -B -o $MERGED $LOCAL $BASE $REMOTE
[difftool "ウィグル"]
cmd = ウィグル -Bd $LOCAL $REMOTE
これは git マージツール git 差分ツール つかいます ぐらつき.
したい場合は git 常に使用する ぐらつき マージ(危険な場合がある)の場合は、以下を追加できます。
* マージ=ウィグル
適切な git属性 のようなファイル $HOME/.config/git/属性.
見積もり
の名前 ぐらつき 次の引用文に触発されました。
私が問題に思うのは、
(ファイル1+パッチ) -> ファイル2、
ファイル1がないのに、マージツールは
(ファイル1|ファイル2) -> ファイル3。
パッチを揺らすのに役立つグラフィカルツールを見たことがない
ファイルに。
-- アンドリュー・モートン - 2002
欠点
- ぐらつき --diff で生成される拡張 unified-diff 出力を読み取ることができません
--言葉。
- ぐらつき --merge で生成される単語ベースのマージ形式を読み取ることができません
--言葉。
- ぐらつき Unicodeを理解しないので、ASCII以外の文字はすべて
句読点と同じように、それぞれを別の単語として扱います。
ブラウザは非 ASCII 文字を正しく表示しません。
onworks.net サービスを使用して Wiggle をオンラインで使用する