Terminal Friday: Patch και Diff

Δύο από τα βασικά εργαλεία στην ανάπτυξη λογισμικού είναι Patch y Diff. Δεν είναι μυστήριο πώς λειτουργούν, αλλά νομίζω ότι αυτή θα είναι μια ενδιαφέρουσα ανάρτηση. 

Και τα δύο είναι πολύ ισχυρά, και αυτό είναι ακριβώς όπως το άγγιγμα της επιφάνειας, έχουν περισσότερα βοηθητικά προγράμματα και άλλες λειτουργίες. Βασικά με αυτά τα δύο εργαλεία μπορούμε να δημιουργήσουμε έλεγχο έκδοσης,


Diff

Αναφερόμαστε στη σύγκριση, συγκρίνει ένα "πρωτότυπο" αρχείο με το "νέο" και μας ενημερώνει για τις διαφορές που υπάρχουν μεταξύ τους. Αυτό το εργαλείο μας επιτρέπει επίσης να δημιουργήσουμε αρχεία .patch που χρησιμοποιούμε για να δημιουργήσουμε ενημερώσεις κώδικα για τα προγράμματά μας.


Patch

Είναι η εντολή με την οποία κυριολεκτικά "διορθώνουμε" το αρχικό μας αρχείο, προσθέτοντας ή / και αφαιρώντας γραμμές σύμφωνα με τις οδηγίες που περιέχονται στο αρχείο .patch


Υπάρχει επίσης vimdiff, το οποίο είναι ένα οπτικό εργαλείο για την εφαρμογή ενημερώσεων κώδικα χωρίς την ανάγκη ενός αρχείου .patch, καθώς συγκρίνει "πρωτότυπο" και "νέο" και στο ίδιο αρχείο είναι δυνατή η επεξεργασία γραμμής κατά γραμμή ή ολόκληρου του εγγράφου. Αυτό δεν θα το εξηγήσω, αλλά νομίζω ότι αξίζει μια αναφορά.


Παράδειγμα

Τώρα η διασκέδαση είναι. Παράδειγμα!

Αυτό συμβαίνει, έχουμε ένα υπέροχο σενάριο που ζητά το όνομά σας και την ηλικία σας, εάν είστε άνω των 18 ετών, σας λέει ότι μπορείτε να ψηφίσετε, διαφορετικά σας λέει ότι δεν μπορείτε να ψηφίσετε.

πρωτότυπο.σ

#! / bin / bash echo "Εισαγάγετε το όνομά σας:" read name echo "Enter your age:" read age if [[18 -lt $ age]] και στη συνέχεια "echo" Γεια σας $ name, είστε $ $ και μπορείτε να ψηφίσετε! " αλλιώς ηχώ "Γεια σας $ name, είστε $ $ και δεν μπορείτε να ψηφίσετε ..." fi
Εικόνα του κωδικού στο Vim

Εικόνα του κωδικού στο Vim

Έγινε, εδώ είναι το σενάριο που εκτελείται:

Όλα φαίνεται να λειτουργούν καλά

Όλα φαίνεται να λειτουργούν καλά

Έτσι, ως καλοί χρήστες είμαστε, μοιραζόμαστε το σενάριό μας με έναν φίλο :), αλλά λαμβάνουμε ένα μήνυμα που λέει ότι έχει ένα ελάττωμα, ότι όταν είναι 18, λέει ότι δεν μπορεί να ψηφίσει πότε πρέπει.

Σφάλμα λογικής :(

Λογικό λάθος 

Τώρα αρχίζουμε να διορθώνουμε το μικρό σφάλμα και να κάνουμε μερικές τροποποιήσεις ...

new.sh

#! / bin / bash maxAge = 18 echo "Πληκτρολογήστε το όνομά σας:"; διαβάστε το όνομα echo "Γράψτε την ηλικία σας:"; διαβάστε την ηλικία εάν [[$ maxAge -le $ age]]; στη συνέχεια, ηχώ "Γεια σας $ name, είστε $ ετών και μπορείτε να ψηφίσετε!" αλλιώς ηχώ "Γεια σας $ name, είστε $ ετών και δεν μπορείτε να ψηφίσετε ..." έξοδος 0
Νέος κωδικός γραμμένος στο Vim

Νέος κωδικός γραμμένος σε ζωτικότητα

Ας υποθέσουμε ότι το σενάριο είναι πολύ βαρύ. Έτσι, για να μην ξαναστείλουμε ολόκληρο το σενάριο, δημιουργούμε ένα .patch 

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

Και τώρα έχουμε το έμπλαστρο μας. Εδώ είναι μια προβολή ζωτικότητα:

Έτσι είναι οι οδηγίες για ένα .patch. Σε λευκό οι γραμμές που δεν τροποποιήθηκαν, με μπλε αυτές που αφαιρέθηκαν, με πορτοκαλί αυτές που προστέθηκαν.

Έτσι είναι οι οδηγίες για ένα .patch. Σε λευκό οι γραμμές που δεν τροποποιήθηκαν, με μπλε αυτές που αφαιρέθηκαν, με πορτοκαλί αυτές που προστέθηκαν.

Και για να το εφαρμόσουμε απλά χρησιμοποιούμε το αρχείο .patch στο σενάριο που θα διορθωθεί. Εδώ λέγεται originalAmigo.sh, το οποίο είναι ένα ακριβές αντίγραφο του σεναρίου πρωτότυπο.σ

Σενάριο φίλου

Σενάριο φίλου

$ patch originalFriend.sh <patch.patch

Και αυτό μας αφήνει το αρχείο μας originalAmigo.sh Ετσι:

Σενάριο φίλου μετά την εφαρμογή ενημέρωσης κώδικα

Σενάριο φίλου μετά την εφαρμογή ενημέρωσης κώδικα

Όπως μπορείτε να δείτε, είναι πολύ εύκολο να λάβετε τις διαφορές και να εφαρμόσετε τα μπαλώματα. Είναι όλα από μένα.

Χαιρετισμούς, θα διαβάσουμε την επόμενη Παρασκευή.


Προσθήκη ως προτιμώμενης πηγής στην Google