Không thể áp dụng bản vá!

Tất cả các bản vá do eCosCentric cung cấp sẽ áp dụng hoàn toàn cho phiên bản eCosPro cụ thể của bạn. Trong một số trường hợp hiếm hoi mà một bản vá không áp dụng hoàn toàn, đây là danh sách các thông báo lỗi và cách xử lý chúng. Nếu bạn vẫn không thể áp dụng bản vá hoặc không thấy thông báo lỗi được liệt kê ở đây, vui lòng báo cáo vấn đề này trên trang web eCosCentric Bugzilla

can't find file to patch at input line nnn. File to patch:
No file to patch. Skipping patch. n out of n hunks ignored.

Trước tiên, hãy đảm bảo rằng bạn đã sử dụng đúng dòng lệnh vá lỗi, như được hiển thị ở trên. Nếu điều đó vẫn không hiệu quả, hãy thử với n cao hơn trong -pn, cho đến khi có thể là 6. Để thử mà không thực sự áp dụng bản vá, hãy thêm --dry-run vào dòng lệnh. Với tùy chọn này, bản vá không thực sự được áp dụng nhưng bạn nhận được tất cả các thông báo như thể bản vá đã được áp dụng thực sự. Điều này cho phép bạn xác định liệu có bất kỳ lỗi nào hay không mà không cần phải sao lưu các tệp mỗi lần

Khi bạn không còn nhận được thông báo lỗi về việc không tìm thấy tệp để vá, thì bạn đã tìm đúng số cho -p và bạn có thể lặp lại lệnh mà không cần --dry-run để thực sự áp dụng bản vá

Hunk #n FAILED at nnn. n out of n hunks FAILED - saving rejects to file file.rej

Điều này có nghĩa là một hoặc nhiều thay đổi, được gọi là hunks, không thể được đưa vào tệp. Đôi khi, điều này có thể là do bản vá đã được gửi qua email hoặc được sao chép vào một tệp và khoảng trắng đã được thêm hoặc xóa. Hãy thử thêm

Hunk #n FAILED at nnn. n out of n hunks FAILED - saving rejects to file file.rej
1 vào dòng lệnh để giải quyết vấn đề này

Nếu bạn vẫn gặp lỗi, rất có thể

Hunk #n FAILED at nnn. n out of n hunks FAILED - saving rejects to file file.rej
0 đã được tạo cho phiên bản eCosPro khác biệt đáng kể so với phiên bản bạn đang sử dụng. Trong trường hợp này, vui lòng báo cáo vấn đề này trên trang web eCosCentric Bugzilla

Hunk #n succeeded at nnn [offset n lines] and
Hunk #n succeeded at nnn with fuzz n.

Thông thường không có vấn đề gì ở đây và bản vá có thể được áp dụng hoàn toàn. Thông báo này thường có nghĩa là một thay đổi trong bản vá đã có trong tệp. Lý do phổ biến nhất cho điều này là phiên bản eCosPro bạn đang sử dụng đã có bản vá đó hoặc bản vá đã được áp dụng. Trong trường hợp này không áp dụng bản vá

Nếu dòng lệnh hiển thị.

Hunk #n FAILED at nnn. n out of n hunks FAILED - saving rejects to file file.rej
2, điều đó có nghĩa là nó không thể xác định vị trí tệp mong muốn, ngay cả khi đường dẫn có vẻ đúng. Trong hộp được hiển thị trong thiết bị đầu cuối dòng lệnh, dòng đầu tiên hiển thị tệp sẽ được vá. Sao chép đường dẫn tệp và dán vào dấu nhắc
Hunk #n FAILED at nnn. n out of n hunks FAILED - saving rejects to file file.rej
2 và nhấn
Hunk #n FAILED at nnn. n out of n hunks FAILED - saving rejects to file file.rej
4 và bản vá sẽ hoàn tất

Tôi đã viết một bài đăng trên blog cách đây vài năm về việc vá các phụ thuộc bằng Trình soạn thảo. Đây vẫn là một phần quan trọng trong quy trình phát triển VÀ lập trình của cá nhân tôi [và được đề xuất]. Tuy nhiên, rất hiếm khi tôi gặp phải sự cố không áp dụng bản vá. Và sau đó tôi bắt đầu vò đầu bứt tai [như một người vẫn làm khi một thói quen thông thường đột nhiên làm họ thất bại]. Điều khó chịu hơn nữa là đây thường là một lỗi thầm lặng… có nghĩa là tôi không nhận được bản vá mình muốn, nhưng tôi cũng không gặp phải bất kỳ lỗi nghiêm trọng nào có thể cho biết lý do tại sao

Bài đăng này sẽ đi sâu vào vấn đề và đưa ra một vài giải pháp

Bối cảnh về các bản vá lỗi của nhà soạn nhạc

Tôi nghĩ rằng có hai kiến ​​thức quan trọng mà bạn cần biết về việc vá lỗi với nhà soạn nhạc và tôi có một cách thực hành tốt nhất để bổ sung chỉ để chúc bạn may mắn

Thứ nhất, bản thân Composer không hỗ trợ vá lỗi. Tuy nhiên, tính năng cực kỳ quan trọng này được thêm vào thông qua plugin cweagans/composer-patches [và nó hoạt động như mơ]. Tôi đưa nó vào mọi dự án như một phần của trình soạn nhạc cơ sở. json ngay cả khi tôi không vá bất cứ thứ gì [vì tôi biết sớm muộn gì tôi cũng sẽ phải vá một cái gì đó]

Thứ hai, vá qua trình soạn thảo về cơ bản giống như sử dụng git để vá. Vì vậy, nếu bạn đã từng chạy lệnh git apply hoặc tạo một bản vá git, thì bạn sẽ rất quen thuộc với những gì diễn ra đằng sau hậu trường.

Cuối cùng, tôi thực sự khuyên bạn không bao giờ lưu trữ các gói cục bộ trong cơ sở mã của bạn. Plugin bản vá của nhà soạn nhạc hoạt động tốt với các bản vá cục bộ, nhưng lưu trữ chúng trên hàng đợi sự cố trên Drupal. org hoặc Github giúp bạn trung thực. Bạn không nên phát triển tính năng, bạn không muốn duy trì các bản vá mãi mãi và khóa các bản vá trong cơ sở mã của bạn là một cách chắc chắn để thực hiện cả hai điều này

Khi vá thất bại

Thông thường, khi một bản vá không áp dụng được với trình soạn thảo, nó sẽ bị lỗi giống hệt như với git. Đây là một lỗi gần đây mà tôi gặp phải trong một dự án Drupal liên quan đến một bản vá mô-đun Google Analytics cũ

Gathering patches for dependencies. This might take a minute.   - Installing drupal/google_analytics [4.0.0]: Extracting archive   - Applying patches for drupal/google_analytics     //www.drupal.org/files/issues/2021-11-25/google_analytics-3246597-7.patch [//www.drupal.org/project/google_analytics/issues/3246597]     //www.drupal.org/files/issues/2021-11-25/google_analytics-3246597-7.patch [3246597 - Add dependency on drupal:path_alias]    Could not apply patch! Skipping. The error was: Cannot apply patch //www.drupal.org/files/issues/2021-11-25/google_analytics-3246597-7.patch 

Nhân tiện, điều này thật tuyệt. Khi một bản vá lỗi bạn muốn nó thất bại một cách ngoạn mục. Và trong trường hợp này, nó đã làm. Hóa ra, tôi không còn cần bản vá này nữa. Tuyệt quá. Tôi chỉ cần xóa nó khỏi cơ sở mã và cập nhật trình soạn thảo của mình. tập tin khóa. Trong các trường hợp khác, có thể bạn cần một bản vá mới hơn. Cũng tuyệt vời. Cực kỳ dễ dàng, hãy quay lại hàng đợi sự cố và lấy phiên bản mới hơn của bản vá và đăng ký lại

Điều gì sẽ xảy ra khi bản vá không lỗi, nhưng nó cũng không áp dụng. Đây là một tình huống đáng lo ngại và khó hiểu hơn nhiều. Dựa trên đầu ra của bạn, nó đáng lẽ phải được áp dụng, nhưng khi bạn xem mã được đề cập, bản vá đã không được áp dụng

Thật không may, không có một câu trả lời duy nhất cho vấn đề này. Nhưng theo kinh nghiệm của tôi, chỉ có hai tình huống có thể áp dụng điều này

Đổi tên tập tin

Kịch bản thất bại thầm lặng đầu tiên đến từ một loại bản vá thực sự cụ thể. một trong đó bản vá đổi tên một tập tin. Có một vấn đề mở trong dự án các bản vá của nhà soạn nhạc liên quan đến vấn đề này và đó là vấn đề gây ra sự kinh ngạc lớn [vì vậy tôi đang cố gắng giúp bạn bớt thất vọng]

TLDR nếu bạn đang cố đổi tên [hoặc thậm chí xóa] một tệp trong khi vá lỗi, hãy kiểm tra để đảm bảo rằng bạn đã cài đặt gpatch. Bạn có thể kiểm tra điều này trên máy Mac với homebrew

$ brew info gpatch | grep "gpatch:" gpatch: stable 2.7.5 [bottled]

Nếu bạn không có gpatch, hãy thử cài đặt nó và vá lại. Điều này đã ngay lập tức khắc phục sự cố cho tôi trong quá khứ

Thiếu các bản vá lỗi của nhà soạn nhạc/Sự phụ thuộc của nhà phát triển vào các bản vá lỗi của nhà soạn nhạc

Một phát hiện khác gần đây hơn cho tình huống này là một bản vá hoàn toàn không được áp dụng. Đây là một vấn đề nhỏ [có khả năng] nhỏ hơn một chút… nhưng tôi nghĩ đó là một sai lầm đủ dễ mắc phải, chúng ta nên gắn cờ nó ở đây

Hãy nhớ rằng, bạn không thể vá bằng trình soạn thảo mà không cài đặt các bản vá của trình soạn thảo. Vì vậy, trước tiên hãy xác nhận rằng nó nằm trong trình soạn nhạc của bạn. json. Câu hỏi tiếp theo là nếu bạn đang làm điều gì đó có thể loại bỏ các bản vá lỗi của nhà soạn nhạc. Tôi đã giúp một khách hàng trong tuần này gặp khó khăn với chính xác tình huống này. Họ đã cài đặt các bản vá lỗi của nhà soạn nhạc [tốt] nhưng họ có nó dưới dạng phụ thuộc yêu cầu nhà phát triển thay vì phụ thuộc yêu cầu. Vì vậy, khi quá trình triển khai diễn ra [và lệnh soạn thảo được chạy để sản xuất], nó đã loại trừ các phụ thuộc của nhà phát triển. Vì vậy, các bản vá của nhà soạn nhạc KHÔNG được bao gồm. Vì vậy, các bản vá KHÔNG áp dụng

composer install --no-dev --no-interaction --optimize-autoloader

Tôi thực sự khuyên bạn nên thêm các bản vá của nhà soạn nhạc như một phần phụ thuộc thông thường chứ không phải phần phụ thuộc của nhà phát triển

Một lần nữa, điều này ngay lập tức khắc phục sự cố

Tóm lại là

Lỗi thầm lặng rất khó gỡ lỗi và khắc phục sự cố bởi vì… chẳng có gì cả. Rất may, trong hơn 5 năm tôi đã sử dụng các bản vá của nhà soạn nhạc, tôi hiếm khi gặp phải những vấn đề này. Trong khi gây phiền nhiễu, chúng có thể dự đoán được. Hy vọng rằng những tình huống này sẽ giúp chỉ cho bạn đi đúng hướng nếu bạn cũng gặp lỗi với bản vá lỗi của nhà soạn nhạc thầm lặng

Nội dung liên quan

Đặc sắc

web dev quản lý phụ thuộc nhà soạn nhạc php

Làm việc trên các phụ thuộc ngược dòng

web dev quản lý phụ thuộc nhà soạn nhạc php

Cây phụ thuộc có thể rất lớn và với bản phát hành Drupal 10 sắp tới PHP 8. 1 có thể có tác động đáng kể đến dự án của bạn

web dev quản lý phụ thuộc nhà soạn nhạc php

web dev php cập nhật phát triển địa phương quản lý phụ thuộc nhà soạn nhạc

Kiểm tra PHP 8. 1 cập nhật

web dev php cập nhật phát triển địa phương quản lý phụ thuộc nhà soạn nhạc

Tổng quan về tất cả những điều tôi đã thử/thử nghiệm để sẵn sàng cho PHP 8. 1

web dev php cập nhật phát triển địa phương quản lý phụ thuộc nhà soạn nhạc

web dev quản lý phụ thuộc git bản vá nhà soạn nhạc

Các bản vá lỗi của nhà soạn nhạc không được áp dụng

web dev quản lý phụ thuộc git bản vá nhà soạn nhạc

Điều gì xảy ra với các bản vá của nhà soạn nhạc bị lỗi âm thầm?

Chủ Đề