Score:1

วิธีกำหนดเป้าหมายเวอร์ชันเฉพาะของแพตช์คำขอผสานตามส้อม (MR)

ธง br

ฉันกำลังอัพเกรดคอร์จาก 9.1.7 ถึง 9.2.5อย่างไรก็ตาม มีแพตช์ที่ฉันไม่สามารถอัปเกรดได้

นี่คือปัญหาที่เกี่ยวข้อง. ไฟล์ 2897638-48.patch ปัจจุบันใช้อยู่ การทำงานของแพตช์ก็ดำเนินต่อไปและรวมอยู่ในระบบ "คำขอผสานตามทางแยก (MR)"

ฉันเปิดประเด็นเกี่ยวกับการใช้งานทั่วไปของระบบ MR ในอดีตให้อ่าน อันนี้ และเอกสารประกอบของไซต์ Drupal อย่างน้อยฉันก็รู้วิธีรับ ไฟล์แพทช์ล่าสุด. อย่างไรก็ตาม มันใช้ไม่ได้ เพราะฉันคิดว่ามันเป็นเป้าหมายสำหรับ 9.3 รุ่น.

การอ่าน รายการคอมมิชชัน ฉันต้องการลองติดตั้งแพตช์ที่คอมมิชชัน eaa43b0c10c6fff8595d72d23c0f40a028bf0a71 ("การล้างข้อมูลที่เหลือ") เพราะสำหรับฉันแล้ว ดูเหมือนว่าจะเป็นรายการสุดท้ายก่อนที่จะเปลี่ยนไปใช้สาขา 9.3

อย่างไรก็ตาม ฉันไม่รู้ว่าฉันจะรับไฟล์ .patch ของการแก้ไขนั้นได้อย่างไรและอย่างไร

Score:2
ธง nr

มีหลายวิธีในการใช้แพตช์แบบครั้งเดียวกับโปรเจ็กต์ 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 ของคำขอผสาน 54

แต่ถึงอย่างนั้น เป้าหมายก็ตั้งไว้ที่ 9.3 และยังไม่ชัดเจนว่าจะเปลี่ยนอย่างไรโดยใช้ UI บนเว็บ

คุณจะต้องปฏิบัติตาม คำแนะนำ Git เพื่อโคลน Drupal core เข้ากับสภาพแวดล้อมการพัฒนาท้องถิ่น:

$ git โคลน https://git.drupalcode.org/project/drupal.git
$ ซีดีดรูปาล

จากนั้น กลับไปที่ Issue Queue ของคุณและดูคำแนะนำเพื่อตรวจสอบสาขาสำหรับการ Fork ปัญหา:

คำแนะนำในการตรวจสอบสาขาสำหรับ Issue 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 ในเครื่องของคุณ จะยังคงทำงานมาก แต่อาจทำงานน้อยกว่าตัวเลือกอื่น ๆ

นี่ไม่ใช่สถานการณ์ทั่วไป แพทช์นักแต่งเพลงส่วนใหญ่มีขนาดเล็กกว่าสัตว์ประหลาดตัวนี้ตามลำดับความสำคัญ

ขอให้โชคดี!

Giuseppe avatar
br flag
ขออภัย คำตอบของคุณไม่ชัดเจนสำหรับฉัน: ฉันจะใช้โปรแกรมแก้ไขกับสาขาเฉพาะได้อย่างไร ถ้าฉันไม่มีไฟล์สำหรับเวอร์ชันนั้น
hotwebmatter avatar
nr flag
@Giuseppe ฉันได้อัปเดตคำตอบแล้ว แจ้งให้เราทราบหากเหมาะกับคุณ!
Giuseppe avatar
br flag
ขอบคุณสำหรับคำตอบโดยละเอียด แต่ไม่ตอบปัญหาของฉัน ฉันรู้วิธีใช้โปรแกรมแก้ไขที่ "https://git.drupalcode.org/project/drupal/-/merge_requests/54.diff" แล้วเมื่อฉันเชื่อมโยงกับคำถามเดิม ปัญหาคือไฟล์นั้นใช้งานได้กับ `9.3` ฉันต้องทำให้มันใช้งานได้กับ `9.2` และฉันไม่รู้ว่า (หรือถ้าเป็นไปได้) ขอผสานรวมไฟล์ที่อย่างน้อยก็มีอยู่ในบางจุด เข้ากับรุ่นนั้นๆ
hotwebmatter avatar
nr flag
@Giuseppe ในกรณีนั้น คุณมีสองทางเลือก: คุณสามารถเปิด [Issue Fork](https://www.drupal.org/project/drupalorg/issues/3152637) ใหม่และสร้างคำขอผสานโดยมี 9.2 เป็นสาขาหลัก หรือคุณสามารถ (อาจจะง่ายกว่านั้น) `git clone` repo และใช้ `git diff` เพื่อสร้างไฟล์ patch ที่ถูกต้อง ฉันไม่มีเวลาอัปเดตคำตอบในตอนนี้ แต่ฉันอาจทำได้ในภายหลัง ปัญหาที่แท้จริงของคุณคือแพตช์นี้มีขนาดใหญ่มาก ยากที่จะตรวจสอบ

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา