Điểm:1

Cách nhắm mục tiêu phiên bản cụ thể của bản vá yêu cầu hợp nhất (MR) dựa trên ngã ba

lá cờ br

Tôi đang nâng cấp lõi từ 9.1.7 đến 9.2.5, tuy nhiên có một bản vá tôi không biết cách nâng cấp.

Đây là vấn đề tương đối. Tập tin 2897638-48.patch hiện đang được sử dụng. Trong khi đó, công việc của bản vá vẫn tiếp tục và được tích hợp trong hệ thống "yêu cầu hợp nhất dựa trên ngã ba (MR)".

Trước đây tôi đã mở một vấn đề về việc sử dụng chung hệ thống MR, hãy đọc cái này và tài liệu của trang Drupal, vì vậy ít nhất tôi biết cách lấy tập tin vá lỗi mới nhất. Tuy nhiên, nó không hoàn toàn đúng, bởi vì tôi cho rằng nó đã được nhắm mục tiêu cho 9.3 phiên bản.

đọc các danh sách cam kết Tôi muốn thử cài đặt bản vá tại cam kết eaa43b0c10c6fff8595d72d23c0f40a028bf0a71 ("Dọn dẹp phần còn lại."), Bởi vì đối với tôi, nó là cái cuối cùng trước khi chuyển sang nhánh 9.3.

Tuy nhiên, tôi không biết liệu tôi có thể lấy tệp .patch của bản sửa đổi cụ thể đó hay không và bằng cách nào.

Điểm:2
lá cờ nr

Có nhiều cách để áp dụng bản vá một lần cho dự án PHP dựa trên Composer. Cách cổ điển là sử dụng cweagans/composer-patches, đó là cách bạn đã học.

bài viết này giải thích chi tiết cách sử dụng Composer Patches để vá lõi Drupal.

Bạn có thể sử dụng phương pháp này để áp dụng bản vá này, đây là cách tiếp cận được đề xuất bởi @catch trong bình luận này, bằng cách bao gồm điều này trong của bạn nhà soạn nhạc.json:

    "thêm": {
      "bật bản vá": đúng,
        "bản vá lỗi": {
          "drupal/lõi": {
            "Cho phép định cấu hình số nhận dạng sắp xếp hiển thị Chế độ xem": "https://git.drupalcode.org/project/drupal/-/merge_requests/54.diff"
          }

Như @catch đề cập:

@ Giuseppe87 bạn có thể sử dụng https://git.drupalcode.org/project/drupal/-/merge_requests/54.diff - mặc dù để áp dụng một bản vá ổn định, tốt nhất bạn nên tải bản vá này xuống thư mục /patches trong cơ sở mã của bạn, sau đó thêm đường dẫn bản vá cục bộ vào tệp composer.

Để làm theo các hướng dẫn này, hãy mở Terminal và đĩa CD vào thư mục gốc dự án của dự án Drupal 9.2 của bạn, sau đó thực hiện các lệnh sau:

bản vá $ mkdir
bản vá $ cd
$ wget https://git.drupalcode.org/project/drupal/-/merge_requests/54.diff
$ mv 54.diff configure-views-exposed-sort-identifiers.patch

Để sử dụng tệp bản vá cục bộ trong dự án của bạn thay vì bản vá được lưu trữ từ xa trên Drupal.org, bạn nhà soạn nhạc.json sẽ trông như thế này:

    "thêm": {
      "bật bản vá": đúng,
        "bản vá lỗi": {
          "drupal/lõi": {
            "Cho phép định cấu hình số nhận dạng sắp xếp tiếp xúc với Chế độ xem": "patches/configure-views-exposed-sort-identifiers.patch"
          }

Sử dụng tệp cục bộ được coi là cách thực hành tốt nhất ở đây, vì nó có một số lợi thế so với sử dụng tệp từ xa. Nó vừa an toàn hơn vừa hiệu quả hơn.

Có một phương pháp khác, tương đối mới, để áp dụng các bản vá bằng cách mở một Phát hành ngã ba và câu trả lời ban đầu của tôi đã đề xuất phương pháp đó, nhưng không cần thiết ở đây.

CHỈNH SỬA: Sau khi đọc ý kiến ​​​​của bạn dưới đây, có vẻ như vấn đề của bạn là !54 chưa bao giờ được áp dụng cho nhánh 9.2 trước khi khởi động lại.

Quay lại MR trên GitHub, bạn có thể khôi phục hai lần xác nhận cuối cùng bằng cách chọn "Phiên bản 9" của MR:

Phiên bản 9 của Yêu cầu hợp nhất 54

Nhưng ngay cả khi đó, mục tiêu được đặt thành 9,3 và không rõ cách thay đổi mục tiêu đó bằng giao diện người dùng dựa trên web.

Bạn sẽ cần phải làm theo Hướng dẫn Git để sao chép lõi Drupal vào môi trường phát triển cục bộ:

$ git clone https://git.drupalcode.org/project/drupal.git
$ cd drupal

Sau đó, quay lại Hàng đợi phát hành của bạn và xem hướng dẫn để kiểm tra chi nhánh cho một Phân nhánh phát hành:

Hướng dẫn kiểm tra chi nhánh cho Issue Fork

$ git remote add drupal-2897638 [email protected]:issue/drupal-2897638.git
$ git lấy drupal-2897638

Ngoài ra, hãy kiểm tra nhánh 9.2.x:

$ git checkout -b '9.2.x' --track drupal-2897638/'9.2.x'

Bây giờ, bạn muốn tạo sự khác biệt giữa trạng thái của dự án khi cam kết eaa43b0c9.2.x chi nhánh:

$ git thanh toán eaa43b0c
$ git diff drupal-2897638/9.2.x > configure-views-exposed-sort-identifiers.patch

Điều này sẽ tạo ra một bản vá giữa cam kết mà bạn đã xác định và nhánh 9.2.x.

Tuy nhiên, đây có thể vẫn không phải là những gì bạn muốn. Bản vá được tạo bởi phương pháp này là hơn 230.000 dòng mã:

$ wc -l configure-views-exposed-sort-identifiers.patch                    
230134 configure-views-exposed-sort-identifiers.patch

Có thể cam kết git mà bạn đã xác định luôn dựa trên nhánh 9.3.x. Có vẻ như còn nhiều việc phải làm để tạo lại công việc thiết yếu cho bản vá lỗi này và áp dụng nó một cách rõ ràng cho nhánh 9.x.

Thật khó để nói chắc chắn, bởi vì eaa43b0c đã có 93.000 dòng mã trước nhánh 9.3.x:

$ git diff 9.3.x |wc -l
93794

Thật dễ dàng để chấp nhận bao nhiêu công việc mà mọi người đã bỏ ra cho phần mềm mã nguồn mở này mà tất cả chúng ta đều dựa vào. Nếu bạn yêu cầu chức năng được cung cấp bởi bản vá này, cách dễ nhất để có được nó là nâng cấp dự án Drupal của bạn lên nhánh 9.3.x sớm hơn một chút so với mong muốn của bạn. Sau đó, bản vá sẽ được áp dụng rõ ràng và bạn sẽ không cần phải hiểu 93.000 dòng mã đó.

Một lưu ý cuối cùng -- khác biệt được tạo bởi Yêu cầu hợp nhất 54 là ít hơn 1000 dòng mã:

$ wc -l 54.diff                                                          
936 54.diff

Bạn có thể kiểm tra nhánh 9.x và áp dụng thủ công từng thay đổi trong số 936 thay đổi đó để tạo tệp vá tại địa phương của bạn. Nó vẫn còn rất nhiều công việc, nhưng có thể ít công việc hơn một số tùy chọn khác.

Đây không phải là một tình huống phổ biến; hầu hết các Bản vá lỗi của Nhà soạn nhạc đều nhỏ hơn con quái vật này theo độ lớn.

Chúc may mắn!

Giuseppe avatar
lá cờ br
xin lỗi, câu trả lời của bạn không rõ ràng đối với tôi: làm cách nào tôi có thể áp dụng bản vá cho nhánh cụ thể nếu tôi không có tệp cho phiên bản đó?
hotwebmatter avatar
lá cờ nr
@Giuseppe Tôi đã cập nhật câu trả lời của mình. Hãy cho tôi biết nếu điều đó làm việc cho bạn!
Giuseppe avatar
lá cờ br
Cảm ơn bạn đã trả lời chi tiết nhưng nó không trả lời cho vấn đề của tôi. Tôi đã biết cách áp dụng bản vá tại "https://git.drupalcode.org/project/drupal/-/merge_requests/54.diff" khi tôi liên kết với câu hỏi ban đầu. Vấn đề là tệp đó hoạt động với `9.3`, tôi cần làm cho nó hoạt động với `9.2` và tôi không biết làm cách nào (hoặc thậm chí nếu có thể) đưa vào yêu cầu hợp nhất tệp mà ít nhất tại một thời điểm nào đó đã tồn tại tương thích với phiên bản đó.
hotwebmatter avatar
lá cờ nr
@Giuseppe Trong trường hợp đó, bạn có hai tùy chọn: bạn có thể mở một [Issue Fork](https://www.drupal.org/project/drupalorg/issues/3152637) mới và tạo một yêu cầu hợp nhất với 9.2 làm nhánh mẹ hoặc bạn có thể (có lẽ đơn giản hơn) `git clone` repo và sử dụng `git diff` để tạo tệp vá chính xác. Tôi không có thời gian để cập nhật câu trả lời của mình ngay bây giờ, nhưng tôi có thể làm như vậy sau. Vấn đề thực sự của bạn là bản vá cụ thể này quá lớn nên rất khó để xem lại.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.