ターミナルフライデー:パッチとデフ

ソフトウェア開発において欠かせないツールは、PatchDiffの2つです。その仕組みは周知の事実ですが、今回の記事はきっと面白いものになるでしょう。😉

どちらも非常に強力で、これは表面に触れるのと同じで、より多くのユーティリティやその他の機能を備えています。 基本的に、これらXNUMXつのツールを使用して、バージョン管理を作成できます。


デフ

比較とは、「元の」ファイルと「新しい」ファイルを比較し、それらの間に存在する違いを通知するものです。 このツールを使用すると、プログラムのパッチを作成するために使用する.patchファイルを作成することもできます。


パッチ

これは、元のファイルに文字通り「パッチを適用」し、.patchファイルに含まれている指示に従って行を追加および/または削除するコマンドです。


また、 vimdiffという視覚的なツールもあります。これは、.patchファイルを使わずにパッチを適用できるツールで、「オリジナル」バージョンと「新しい」バージョンを比較し、同じファイル内で1行ずつ、あるいはドキュメント全体を編集できます。ここでは説明しませんが、言及する価値はあると思います。


Ejemplo

今の楽しみはです。 例!

これは事実です。私たちはあなたの名前と年齢を尋ねる素晴らしいスクリプトを持っています。あなたが18歳以上の場合は投票できることを示し、そうでない場合は投票できないことを示します。

オリジナル.sh

#!/ bin / bash echo "Enter your name:" read name echo "Enter your age:" read age if [[18 -lt $ age]] then echo "Hello $ name、you are $ old and you can go! 「」 else echo "こんにちは$名前、あなたは$歳で、投票できません..." fi
Vimのコードの画像

Vimのコードの画像

完了しました。実行中のスクリプトは次のとおりです。

すべてが正常に機能しているようです

すべてが正常に機能しているようです

ですから、私たちは良いユーザーとして、スクリプトを友人と共有しています:)が、欠陥があるというメッセージが表示されます。18歳になると、必要なときに投票できないというメッセージが表示されます。

論理エラー:(

論理エラー ○

ここで、小さなエラーの修正を開始し、いくつかの変更を加えます...

new.sh

#!/ bin / bash maxAge = 18 echo "名前を入力してください:"; 名前を読むecho "年齢を書いてください:"; 年齢を読み取るif [[$ maxAge -le $ age]]; 次に、「こんにちは$ name、あなたは$歳で、投票できます!」とエコーします。 else echo "こんにちは$名前、あなたは$歳で、投票できません..." fi exit 0
Vimで書かれた新しいコード

Vimで書かれた新しいコード

スクリプトが非常に重いとします。したがって、スクリプト全体を再度送信することを避けるために、.patch を作成します 

$ diff -u original.sh new.sh> patch.patch

これでパッチが完成しました。Vimでの表示は以下のとおりです。

これは、.patchの手順がどのように見えるかです。 白は変更されていない線、青は削除された線、オレンジは追加された線です。

これは、.patchの手順がどのように見えるかです。 白は変更されていない線、青は削除された線、オレンジは追加された線です。

適用するには、パッチを適用するスクリプト内の.patchファイルを使用するだけです。ここではoriginalAmigo.shというファイルを使用しますが、これはoriginal.shスクリプトの完全なコピーです。

フレンドスクリプト

フレンドスクリプト

$ patch originalFriend.sh <patch.patch

そして、元のAmigo.shファイルは次のようになります。

パッチ適用後のフレンドスクリプト

パッチ適用後のフレンドスクリプト

ご覧のとおり、差分を取得してパッチを適用するのは非常に簡単です。 それはすべて私からです。

皆さん、こんにちは。来週の金曜日に読みます。


Googleで優先ソースとして追加する