Terminal Friday: Patch และ Diff

เครื่องมือสำคัญสองอย่างในการพัฒนาซอฟต์แวร์คือPatchและDiffวิธีการทำงานของมันไม่ใช่เรื่องลึกลับ แต่ผมคิดว่านี่จะเป็นบทความที่น่าสนใจ 😉

ทั้งสองมีประสิทธิภาพมากและนี่ก็เหมือนกับการสัมผัสพื้นผิวพวกมันมียูทิลิตี้และฟังก์ชั่นอื่น ๆ โดยพื้นฐานแล้วด้วยเครื่องมือทั้งสองนี้เราสามารถสร้างการควบคุมเวอร์ชัน


diff

เราอ้างถึงการเปรียบเทียบโดยเปรียบเทียบไฟล์ "ต้นฉบับ" กับไฟล์ "ใหม่" และแจ้งให้เราทราบถึงความแตกต่างระหว่างไฟล์เหล่านี้ เครื่องมือนี้ยังช่วยให้เราสามารถสร้างไฟล์. แพตช์ที่เราใช้ในการสร้างแพตช์สำหรับโปรแกรมของเรา


ปะ

เป็นคำสั่งที่เรา "แก้ไข" ไฟล์ต้นฉบับของเราอย่างแท้จริงเพิ่มและ / หรือลบบรรทัดตามคำแนะนำที่มีอยู่ในไฟล์. patch


นอกจากนี้ยังมีvimdiffซึ่งเป็นเครื่องมือแบบภาพสำหรับใช้แก้ไขโดยไม่ต้องใช้ไฟล์ .patch เพราะมันจะเปรียบเทียบเวอร์ชัน "ดั้งเดิม" และ "ใหม่" และช่วยให้คุณแก้ไขทีละบรรทัดหรือทั้งเอกสารภายในไฟล์เดียวกันได้ ผมจะไม่ขออธิบายรายละเอียด แต่ผมคิดว่ามันคุ้มค่าที่จะกล่าวถึง


ตัวอย่าง

ตอนนี้ความสนุกคือ ตัวอย่าง!

ในกรณีนี้เรามีสคริปต์ที่ยอดเยี่ยมที่ถามชื่อและอายุของคุณหากคุณอายุเกิน 18 ปีจะบอกคุณว่าคุณสามารถลงคะแนนได้มิฉะนั้นจะบอกคุณว่าคุณไม่สามารถลงคะแนนได้

ต้นฉบับ.sh

#! / bin / bash echo "Enter your name:" read name echo "Enter your age:" read age if [[18 -lt $ age]] จากนั้น echo "สวัสดี $ name คุณอายุ $ แล้วและคุณสามารถโหวตได้! " else echo "สวัสดี $ name คุณอายุ $ และคุณไม่สามารถโหวต ... " fi
รูปภาพของรหัสใน Vim

รูปภาพของรหัสใน Vim

เสร็จแล้วนี่คือสคริปต์ที่กำลังทำงานอยู่:

ทุกอย่างดูเหมือนจะทำงานได้ดี

ทุกอย่างดูเหมือนจะทำงานได้ดี

ดังนั้นในฐานะผู้ใช้ที่ดีเราจึงแชร์สคริปต์ของเรากับเพื่อน :) แต่เราได้รับข้อความแจ้งว่ามีข้อบกพร่องเมื่ออายุครบ 18 ปีมันบอกว่าไม่สามารถลงคะแนนได้เมื่อควร

ข้อผิดพลาดลอจิก :(

ข้อผิดพลาดทางลอจิก 

ตอนนี้เราเริ่มแก้ไขข้อผิดพลาดเล็ก ๆ น้อย ๆ และทำการแก้ไขเล็กน้อย ...

new.sh

#! / bin / bash maxAge = 18 echo "ป้อนชื่อของคุณ:"; อ่านชื่อก้อง "เขียนอายุของคุณ:"; อ่านอายุถ้า [[$ maxAge -le $ age]]; จากนั้นให้ก้อง "สวัสดีชื่อ $ คุณอายุ $ ปีและคุณสามารถลงคะแนนได้!" else echo "สวัสดีชื่อ $ คุณอายุ $ ปีและคุณไม่สามารถลงคะแนน ... " fi exit 0
รหัสใหม่ที่เขียนด้วย Vim

โค้ดใหม่ที่เขียนด้วยVim

สมมติว่าสคริปต์มีน้ำหนักมาก ดังนั้น เพื่อหลีกเลี่ยงการส่งสคริปต์ทั้งหมดอีกครั้ง เราจึงสร้าง .patch 

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

และตอนนี้เราก็ได้แพทช์ของเราแล้ว นี่คือตัวอย่างในVim :

นี่คือลักษณะของคำแนะนำสำหรับ. แพทช์ เส้นที่ไม่มีการแก้ไขเป็นสีขาวเป็นสีฟ้าเส้นที่ถูกลบออกเป็นสีส้ม

นี่คือลักษณะของคำแนะนำสำหรับ. แพทช์ เส้นที่ไม่มีการแก้ไขเป็นสีขาวเป็นสีฟ้าเส้นที่ถูกลบออกเป็นสีส้ม

ในการใช้งาน เราเพียงแค่ใช้ไฟล์ .patch ในสคริปต์ที่ต้องการแก้ไข ในที่นี้ชื่อว่าoriginalAmigo.shซึ่งเป็นสำเนาที่เหมือนกันทุกประการของ สคริปต์ original.sh

สคริปต์เพื่อน

สคริปต์เพื่อน

$ patch originalFriend.sh <patch.patch

และนี่จะทำให้ ไฟล์ originalAmigo.sh ของเรา มีสภาพดังนี้:

สคริปต์เพื่อนหลังจากใช้โปรแกรมแก้ไข

สคริปต์เพื่อนหลังจากใช้โปรแกรมแก้ไข

อย่างที่คุณเห็นมันง่ายมากที่จะได้รับความแตกต่างและใช้แพทช์ ทั้งหมดนี้มาจากฉัน

สวัสดีทุกคนเราจะอ่านในวันศุกร์หน้า


เพิ่มเป็นแหล่งข้อมูลที่ต้องการใน Google