Làm thế nào để bao gồm một tập tin mới vào một bản vá


9

Tôi cố gắng thực hiện một bản vá như được giới thiệu ở đây .
Nói rằng tôi có hai thư mục pp1(modified version)pp0(clean version), tôi tạo một tệp vá pp0.patchbằng difflệnh:

 diff -crB pp0 pp1 > pp0.patch

Vấn đề là nếu chỉ có một tệp trong pp1, thì nó sẽ không được đưa vào bản vá. Làm thế nào để làm việc xung quanh nó?

CẬP NHẬT :
Trước tiên tôi thay đổi vào thư mục của pp0 và kiểm tra xem bản vá có thành công không

  patch --dry-run -p1 -i /path-to-pp0.patch

Mặc dù tôi đã thêm --new-filevào difflệnh, những chỉ ở pp1không được liệt kê trong kết quả

CẬP NHẬT :
Tôi đã vô tình vá các tập tin sai

  diff -crb --new-file pp1 pp0 > pp0.patch

hoặc là

  diff -crNb pp1 pp0 > pp0.patch

sẽ làm

Câu trả lời:


9

Bạn sẽ có thể làm điều này bằng cách sử dụng --new-filechuyển đổi. Lấy từ trang diff man :

 --new-file
          In directory comparison, if a file is found in only  one  direc-
          tory, treat it as present but empty in the other directory.

Thử cái này:

diff -crB --new-file pp0 pp1 > pp0.patch

Tôi không biết liệu tôi đã vá chính xác chưa nhưng tệp mới không được bao gồm
manuzhang

lời xin lỗi của tôi, nó hoạt động
manuzhang

3

Câu trả lời ngay lập tức : diff -N, như được giải thích bởi pootzko . Bạn sẽ thấy rằng rất nhiều bản vá ngoài kia được tạo ra bởi diff -urN.

Điều gì có thể làm cho cuộc sống của bạn tốt hơn: bắt đầu sử dụng một công cụ kiểm soát phiên bản. Nếu bạn không biết gì, hãy bắt đầu với một trong ba hệ thống kiểm soát sửa đổi phân tán chính , Bazaar , Git hoặc Mercurial . Kiểm tra phiên bản sạch, làm việc, kiểm tra công việc của bạn bao nhiêu lần tùy thích và yêu cầu hệ thống kiểm soát phiên bản của bạn cho khác biệt giữa phiên bản sạch và công việc của bạn.


thx, ước gì tôi có thể có một người trong đời thực và trở về quá khứ khi mắc lỗi :)
manuzhang
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.