Terminal Jumat: Patch dan Diff

Dua alat penting dalam pengembangan perangkat lunak adalah Patch dan Diff . Cara kerjanya bukanlah sebuah misteri, tetapi saya rasa ini akan menjadi postingan yang menarik. 😉

Keduanya sangat kuat, dan ini seperti menyentuh permukaan, mereka memiliki lebih banyak utilitas dan fungsi lainnya. Pada dasarnya dengan dua alat ini kita dapat membuat kontrol versi,


Diff

Kami mengacu pada perbandingan, ini membandingkan file "asli" dengan yang "baru", dan memberi tahu kami tentang perbedaan yang ada di antara mereka. Alat ini juga memungkinkan kita membuat file .patch yang kita gunakan untuk membuat tambalan untuk program kita.


tambalan

Ini adalah perintah yang secara harfiah kami "menambal" file asli kami, menambahkan dan / atau menghapus baris sesuai dengan instruksi yang terdapat dalam file .patch


Ada juga vimdiff , sebuah alat visual untuk menerapkan patch tanpa memerlukan file .patch, karena alat ini membandingkan versi "asli" dan "baru", dan memungkinkan Anda untuk mengedit baris demi baris atau seluruh dokumen dalam file yang sama. Saya tidak akan menjelaskannya, tetapi saya pikir ini layak disebutkan.


contoh

Sekarang kesenangannya adalah. Contoh!

Inilah masalahnya, kami memiliki skrip bagus yang menanyakan nama dan usia Anda, jika Anda berusia di atas 18 tahun, Anda dapat memilih, jika tidak maka Anda tidak dapat memilih.

asli.sh

#! / bin / bash echo "Masukkan nama Anda:" baca nama echo "Masukkan usia Anda:" baca usia jika [[18 -lt $ age]] kemudian echo "Halo $ nama, Anda $ tua dan Anda dapat memilih! " else echo "Halo $ nama, Anda $ tua dan tidak bisa memilih ..." fi
Gambar kode di Vim

Gambar kode di Vim

Selesai, berikut ini skrip yang sedang berjalan:

Semuanya sepertinya bekerja dengan baik

Semuanya sepertinya bekerja dengan baik

Jadi, sebagai pengguna yang baik, kami membagikan skrip kami dengan seorang teman :), tetapi kami mendapat pesan yang mengatakan bahwa skrip ini memiliki cacat, bahwa ketika berusia 18 tahun ia mengatakan bahwa ia tidak dapat memilih pada saat yang seharusnya.

Kesalahan logika :(

Kesalahan logika 

Sekarang kita mulai memperbaiki kesalahan kecil dan membuat beberapa modifikasi ...

new.sh

#! / bin / bash maxAge = 18 echo "Masukkan nama Anda:"; baca nama echo "Tulis umurmu:"; baca usia jika [[$ maxAge -le $ age]]; lalu gema "Halo $ nama, Anda $ tahun dan Anda dapat memilih!" else echo "Halo $ nama, Anda $ tahun dan tidak bisa memilih ..." fi keluar 0
Kode baru ditulis di Vim

Kode baru yang ditulis dalam Vim

Misalkan naskahnya sangat berat. Jadi, untuk menghindari pengiriman seluruh skrip lagi, kami membuat .patch 

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

Dan sekarang kita sudah punya patch-nya. Berikut tampilannya di Vim :

Seperti inilah instruksi untuk .patch. Dalam warna putih garis yang tidak dimodifikasi, dengan warna biru yang dihilangkan, dengan oranye yang ditambahkan.

Seperti inilah instruksi untuk .patch. Dalam warna putih garis yang tidak dimodifikasi, dengan warna biru yang dihilangkan, dengan oranye yang ditambahkan.

Untuk menerapkannya, kita cukup menggunakan file .patch di dalam skrip yang akan ditambal. Di sini namanya adalah originalAmigo.sh , yang merupakan salinan persis dari skrip original.sh .

Skrip teman

Skrip teman

$ patch originalFriend.sh <patch.patch

Dan ini membuat file originalAmigo.sh kita menjadi seperti ini:

Script teman setelah menerapkan tambalan

Script teman setelah menerapkan tambalan

Seperti yang Anda lihat, sangat mudah untuk mendapatkan diff dan menerapkan tambalan. Semuanya dariku.

Salam sekalian, kita akan baca Jumat depan.


Tambahkan sebagai sumber pilihan di Google