Terminal Cuma: Yama ve Fark

Yazılım geliştirmede iki temel araç Patch ve Diff'tir . Nasıl çalıştıkları bir sır değil, ama bence bu ilginç bir yazı olacak. 😉

Her ikisi de çok güçlüdür ve bu aynı yüzeye dokunmak gibidir, daha fazla yardımcı programa ve başka işlevlere sahiptirler. Temel olarak bu iki araçla sürüm kontrolü oluşturabiliriz,


Diff

Karşılaştırmaya atıfta bulunuruz, "orijinal" bir dosyayı "yeni" dosya ile karşılaştırır ve aralarında var olan farklılıklar hakkında bizi bilgilendirir. Bu araç aynı zamanda programlarımız için yamalar oluşturmak için kullandığımız .patch dosyalarını oluşturmamıza olanak tanır.


Patch

Bu, orijinal dosyamıza "yama" uyguladığımız, .patch dosyasındaki talimatlara göre satır ekleyip / veya kaldırdığımız komuttur.


Ayrıca, .patch dosyasına ihtiyaç duymadan yama uygulamak için kullanılan görsel bir araç olan vimdiff de var ; bu araç "orijinal" ve "yeni" sürümleri karşılaştırıyor ve aynı dosya içinde satır satır veya tüm belgeyi düzenlemenize olanak tanıyor. Bunu açıklamayacağım, ancak bahsetmeye değer olduğunu düşünüyorum.


örnek

Şimdi eğlence. Misal!

Durum böyle, isminizi ve yaşınızı soran harika bir senaryomuz var, 18 yaşın üzerindeyseniz size oy verebileceğinizi söylüyor, aksi takdirde oy veremeyeceğinizi söylüyor.

orijinal.sh

#! / bin / bash echo "Adınızı girin:" adı oku echo "Yaşınızı girin:" [[18 -lt $ yaş]] ise yaşı okuyun ve ardından "Merhaba $ isim, $ yaşındasınız ve oy verebilirsiniz! " else echo "Merhaba $ isim, $ yaşındasın ve oy kullanamazsın ..." fi
Kodun Vim'deki görüntüsü

Kodun Vim'deki görüntüsü

Bitti, işte çalışan komut dosyası:

Her şey yolunda görünüyor

Her şey yolunda görünüyor

Yani iyi kullanıcılar olduğumuz için senaryomuzu bir arkadaşımızla paylaşıyoruz :) ama bir kusuru olduğunu, 18 yaşındayken olması gerektiğinde oy kullanamayacağını söyleyen bir mesaj alıyoruz.

Mantık hatası :(

Mantık hatası 

Şimdi küçük hatayı düzeltmeye ve birkaç değişiklik yapmaya başlıyoruz ...

new.sh

#! / bin / bash maxAge = 18 echo "Adınızı girin:"; adı oku echo "Yaşınızı yazın:"; [[$ maxAge -le $ yaş]] ise yaşı oku; then echo "Merhaba $ name, $ yaşındasın ve oy verebilirsin!" else echo "Merhaba $ isim, $ yaşındasın ve oy kullanamazsın ..." fi çıkış 0
Vim'de yazılmış yeni kod

Vim'de yazılmış yeni kod.

Diyelim ki senaryo çok ağır. Yani betiğin tamamını tekrar göndermemek için bir .patch oluşturuyoruz 

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

Ve şimdi yama dosyamız hazır. İşte Vim'de bir görünüm :

Bir .patch dosyasıyla ilgili talimatlar böyle görünür. Beyazda değiştirilmemiş çizgiler, mavi ile çıkarılanlar, turuncu renkte eklenenler.

Bir .patch dosyasıyla ilgili talimatlar böyle görünür. Beyazda değiştirilmemiş çizgiler, mavi ile çıkarılanlar, turuncu renkte eklenenler.

Bunu uygulamak için, yamalanacak betikteki .patch dosyasını kullanmamız yeterlidir. Burada bu dosya originalAmigo.sh olarak adlandırılmıştır ve original.sh betiğinin birebir kopyasıdır .

Arkadaş senaryosu

Arkadaş senaryosu

$ patch originalFriend.sh <patch.patch

Ve bu da orijinalAmigo.sh dosyamızı şu şekilde bırakıyor :

Yamayı uyguladıktan sonra arkadaş komut dosyası

Yamayı uyguladıktan sonra arkadaş komut dosyası

Gördüğünüz gibi, farkları almak ve yamaları uygulamak çok kolay. Hepsi benden.

Selam millet, önümüzdeki Cuma okuyacağız.


Google'da tercih edilen kaynak olarak ekleyin.