คู่มือนี้จะให้ภาพรวมพื้นฐานสำหรับการใช้แพทช์ในโปรแกรมหรือไฟล์
คำสั่งที่ใช้สำหรับการใช้แพทช์คือคำสั่ง patch แต่เพื่อที่จะใช้ patch คำสั่ง diff ก็ต้องใช้เพื่อระบุความแตกต่างที่จำเป็นต้อง patched
ทำไมคุณถึงสร้าง Patch
ลองนึกภาพคุณมีไฟล์ HTML ดังนี้:
ยินดีต้อนรับสู่ MySite
แหล่งข้อมูลข้างต้นเมื่อโหลดลงเว็บเบราเซอร์จะแสดงคำว่า "Welcome to MySite"
เป็นเรื่องปกติเมื่อเขียนโปรแกรมให้มีไฟล์เดียวกันหลายเวอร์ชัน ตัวอย่างเช่นจะมีเวอร์ชันหนึ่งซึ่งเป็นเวอร์ชันปัจจุบันที่มีอยู่จะมีเวอร์ชันอื่นอยู่ที่สาขาการพัฒนาซึ่งอาจมีการเปลี่ยนแปลงหลายอย่างในที่สุดอาจมีเวอร์ชันอื่นในสาขาออก
สาขาออกจะเป็นเวอร์ชันที่ผู้ใช้จริงใช้ (เช่นในกรณีนี้ผู้เข้าชมเว็บไซต์ MySite) สมมติว่า MySite อยู่ที่เวอร์ชัน 1.0 หลังจากระยะพัฒนาคุณจะสร้างสาขาออกซึ่งจะเป็นในกรณีนี้ 1.1 สาขาการพัฒนาจะอยู่ข้างหน้าสาขาออกเนื่องจากอาจมีการเปลี่ยนแปลงที่ไม่ได้มาจากเวอร์ชัน 1.2 แต่จะเป็นเวอร์ชัน 1.1
ลองนึกภาพว่ามีข้อบกพร่องที่ MySite ควรถูกเรียกว่า YourSite คุณสามารถไปที่แต่ละสาขาได้และทำการเปลี่ยนแปลงเวอร์ชันสดเวอร์ชันการพัฒนาและเวอร์ชันที่เผยแพร่คุณสามารถทำการเปลี่ยนแปลงเป็นโปรแกรมแก้ไขด่วนในแบบสดแล้วใช้แพทช์เพื่อพัฒนาและเผยแพร่สาขา
ตัวอย่างการทำงาน
สร้างไฟล์ที่เรียกว่า myfile.html พร้อมด้วยโค้ดต่อไปนี้:
ยินดีต้อนรับสู่ MySite
นี่เป็นตัวอย่างของ patching source code
สร้างไฟล์อื่นที่เรียกว่า myfile_v2.html พร้อมด้วยโค้ดต่อไปนี้
ยินดีต้อนรับสู่ YourSite
นี่เป็นตัวอย่างของ patching source code
ไฟล์แรกคือหน้าเว็บต้นฉบับที่มีหัวเรื่อง "ยินดีต้อนรับสู่ MySite" แฟ้มที่สองจะเหมือนกับแฟ้มแรกยกเว้น MyFile ถูกเปลี่ยนชื่อเป็น YourFile ในข้อความ
วิธีการสร้าง Diff File
ในการสร้างแพทช์เราจำเป็นต้องค้นหาความแตกต่างระหว่าง myfile.html และ myfile_v2.html
เราสามารถทำได้ด้วยคำสั่ง diff ดังนี้:
diff -u myfile.html myfile_v2.html> myfile.patch
คุณสามารถเปิดไฟล์ myfile.patch ในโปรแกรมแก้ไข nano ดังต่อไปนี้เพื่อดูไฟล์: nano myfile.patch
เส้นที่ไม่มีการเปลี่ยนแปลงจะแสดงเป็นสีน้ำเงิน เส้นที่ถูกลบจะแสดงเป็นสีแดงและเส้นที่มีการเพิ่มจะแสดงเป็นสีเขียว เมื่อต้องการใช้แพทช์เพื่อ myfile.html ใช้คำสั่งต่อไปนี้: patch <myfile.patch ซึ่งจะใช้การเปลี่ยนแปลงที่สร้างขึ้นโดยใช้คำสั่ง diff ไปยังไฟล์ต้นฉบับ myfile.html ถ้าคุณต้องการคืนค่าแพทช์เพื่อให้ myfile.html กลับมาสู่ขั้นตอนเดิมแล้วให้ใช้คำสั่งต่อไปนี้: แพทช์ -R <myfile.patch คำสั่ง patch สามารถใช้เพื่อใช้ patches ในโครงสร้างไดเร็กทอรีทั้งหมด มีเครื่องมือที่ดีกว่าคำสั่ง patch สำหรับการสร้างแพทช์และสร้างความมั่นใจในการควบคุมแหล่งที่มาได้ดี มีเหตุผลที่โครงการพัฒนาจำนวนมากใช้ GIT เพื่อควบคุมแหล่งที่มา GIT ทำให้ง่ายต่อการสร้างกลยุทธ์การแบ่งสาขาที่สอดคล้องกัน คำสั่ง patch สามารถใช้ได้กับการใช้สคริปต์ bash หรืออะไรง่ายๆ แต่คุณสามารถสร้างสำเนาสำรองของไฟล์ที่คุณต้องการแก้ไขได้โดยง่ายและเพียงแค่คัดลอกไฟล์ใหม่ไปยังที่เดียวกันเท่านั้น สำหรับข้อมูลเพิ่มเติมให้ใช้คำสั่ง man: แพทช์มนุษย์ วิธีการใช้ Patch โดยใช้ Patch Command
วิธีย้อนกลับ Patch
สรุป