มีหลายวิธีในการใช้แพตช์แบบครั้งเดียวกับโปรเจ็กต์ PHP ที่ใช้นักแต่งเพลง วิธีคลาสสิกคือการใช้ cweagans/composer-แพทช์
ซึ่งเป็นวิธีที่คุณได้เรียนรู้
บทความนี้ อธิบายรายละเอียดวิธีใช้ Composer Patches เพื่อแก้ไข Drupal core
คุณอาจนำวิธีนี้ไปประยุกต์ใช้ได้ แพทช์นี้ซึ่งเป็นแนวทางที่ @catch in แนะนำ ความคิดเห็นนี้โดยรวมสิ่งนี้ไว้ในของคุณ ผู้แต่ง.json
:
"พิเศษ": {
"เปิดใช้งานการแพตช์": จริง
"แพตช์": {
"drupal/คอร์": {
"อนุญาตให้กำหนดค่าตัวระบุการจัดเรียงที่เปิดเผย Views": "https://git.drupalcode.org/project/drupal/-/merge_requests/54.diff"
}
ตามที่ @catch กล่าวถึง:
@ Giuseppe87 คุณสามารถใช้ https://git.drupalcode.org/project/drupal/-/merge_requests/54.diff - แม้ว่าจะต้องใช้แพตช์ที่เสถียร แต่ควรดาวน์โหลดสิ่งนี้ไปยังไดเร็กทอรี /patches ใน codebase ของคุณ จากนั้นจึงเพิ่มพาธแพตช์ในเครื่องให้กับผู้แต่ง
หากต้องการทำตามคำแนะนำเหล่านี้ ให้เปิด Terminal และ ซีดี
ไปยังไดเร็กทอรีรูทของโปรเจ็กต์ Drupal 9.2 ของคุณ จากนั้นดำเนินการคำสั่งต่อไปนี้:
แพทช์ $ mkdir
แผ่นซีดี $
$ wget https://git.drupalcode.org/project/drupal/-/merge_requests/54.diff
$ mv 54.diff กำหนดค่า-ดู-เปิดเผย-จัดเรียง-identifiers.patch
หากต้องการใช้ไฟล์แพตช์ในเครื่องในโครงการของคุณ แทนที่จะใช้แพตช์ที่โฮสต์จากระยะไกลบน Drupal.org ผู้แต่ง.json
จะมีลักษณะดังนี้:
"พิเศษ": {
"เปิดใช้งานการแพตช์": จริง
"แพตช์": {
"drupal/คอร์": {
"อนุญาตให้กำหนดค่าตัวระบุการเรียงลำดับที่เปิดเผยมุมมอง": "แพทช์/กำหนดค่า-มุมมอง-เปิดเผย-เรียงลำดับ-identifiers.patch"
}
การใช้ไฟล์ในเครื่องถือเป็นแนวทางปฏิบัติที่ดีที่สุด เนื่องจากมีข้อดีกว่าการใช้ไฟล์ระยะไกล ทั้งปลอดภัยและมีประสิทธิภาพมากขึ้น
มีอีกวิธีที่ค่อนข้างใหม่ในการใช้แพตช์โดยการเปิดไฟล์ ปัญหาส้อม และคำตอบเริ่มต้นของฉันแนะนำวิธีการนั้น แต่ไม่จำเป็นที่นี่
แก้ไข: หลังจากอ่านความคิดเห็นของคุณด้านล่างแล้ว ดูเหมือนว่าปัญหาของคุณก็คือ !54 ไม่เคยนำไปใช้กับสาขา 9.2 ก่อนทำการรีเบส
ย้อนกลับไปที่ MR บน GitHub คุณสามารถย้อนกลับการคอมมิตสองรายการล่าสุดได้โดยเลือก MR "เวอร์ชัน 9":
แต่ถึงอย่างนั้น เป้าหมายก็ตั้งไว้ที่ 9.3 และยังไม่ชัดเจนว่าจะเปลี่ยนอย่างไรโดยใช้ UI บนเว็บ
คุณจะต้องปฏิบัติตาม คำแนะนำ Git เพื่อโคลน Drupal core เข้ากับสภาพแวดล้อมการพัฒนาท้องถิ่น:
$ git โคลน https://git.drupalcode.org/project/drupal.git
$ ซีดีดรูปาล
จากนั้น กลับไปที่ Issue Queue ของคุณและดูคำแนะนำเพื่อตรวจสอบสาขาสำหรับการ Fork ปัญหา:
$ git เพิ่มระยะไกล drupal-2897638 [email protected]:issue/drupal-2897638.git
$ git เรียก drupal-2897638
ตรวจสอบสาขา 9.2.x ด้วย:
$ git ชำระเงิน -b '9.2.x' --track drupal-2897638/'9.2.x'
ตอนนี้ คุณต้องการสร้างความแตกต่างระหว่างสถานะของโครงการที่กระทำ eaa43b0c
และ 9.2.x
สาขา:
$ git ชำระเงิน eaa43b0c
$ git diff drupal-2897638/9.2.x > configuration-views-exposed-sort-identifiers.patch
สิ่งนี้จะสร้างแพทช์ระหว่างคอมมิชชันที่คุณระบุและสาขา 9.2.x
อย่างไรก็ตาม นี่อาจยังไม่ใช่สิ่งที่คุณต้องการ โปรแกรมแก้ไขที่สร้างขึ้นโดยวิธีนี้มีรหัสมากกว่า 230,000 บรรทัด:
$ wc -l กำหนดค่า-ดู-เปิดเผย-จัดเรียง-identifiers.patch
230134 กำหนดค่า-ดู-เปิดเผย-จัดเรียง-identifiers.patch
เป็นไปได้ว่าคอมมิชชันคอมไพล์ที่คุณระบุนั้นอ้างอิงจากแบรนช์ 9.3.x เสมอ ดูเหมือนว่ายังมีงานที่ต้องทำอีกมากเพื่อสร้างงานที่จำเป็นสำหรับแพตช์นี้ใหม่ และนำไปใช้กับสาขา 9.x อย่างสมบูรณ์
มันยากที่จะพูดอย่างแน่นอนเพราะ eaa43b0c
มีโค้ด 93,000 บรรทัดก่อนหน้าสาขา 9.3.x แล้ว:
$ git diff 9.3.x |wc -l
93794
เป็นเรื่องง่ายที่จะประเมินว่าผู้คนทุ่มเทให้กับซอฟต์แวร์โอเพ่นซอร์สที่เราพึ่งพากันมากแค่ไหน หากคุณต้องการฟังก์ชันการทำงานที่มาจากแพตช์นี้ วิธีที่ง่ายที่สุดในการรับคือการอัปเกรดโครงการ Drupal ของคุณเป็นสาขา 9.3.x เร็วกว่าที่คุณต้องการเล็กน้อย จากนั้นโปรแกรมแก้ไขจะใช้อย่างสมบูรณ์ และคุณไม่จำเป็นต้องเข้าใจรหัส 93,000 บรรทัดเหล่านั้น
หมายเหตุสุดท้าย - ส่วนต่างที่สร้างโดย Merge Request 54 น้อยกว่า 1,000 บรรทัดของโค้ด:
$ wc -l 54.diff
936 54.ส่วนต่าง
คุณอาจตรวจสอบสาขา 9.x และใช้การเปลี่ยนแปลง 936 แต่ละรายการด้วยมือเพื่อสร้าง patchfile ในเครื่องของคุณ จะยังคงทำงานมาก แต่อาจทำงานน้อยกว่าตัวเลือกอื่น ๆ
นี่ไม่ใช่สถานการณ์ทั่วไป แพทช์นักแต่งเพลงส่วนใหญ่มีขนาดเล็กกว่าสัตว์ประหลาดตัวนี้ตามลำดับความสำคัญ
ขอให้โชคดี!