Tôi hiện đang cố gắng kiểm tra kiểu mã trên PR của kho lưu trữ (github) và tôi muốn phân phối các bản vá cho người gửi mà họ có thể dễ dàng sửa chữa kiểu mã. Để kết thúc này, tôi kéo PR của họ xuống, chạy tập lệnh uncrustify của chúng tôi để sửa bất kỳ lỗi kiểu nào và muốn tạo tệp .patch mà họ có thể dễ dàng áp dụng. Tuy nhiên, nó liên tục phá vỡ trên một số tệp.git-apply không thành công một cách bí ẩn, làm cách nào để khắc phục sự cố/sửa lỗi?
tôi làm (git phiên bản 1.7.10.4 với core.autocrlf=input
, core.filemode=false
):
$ git checkout pr-branch
$ git log -1 (shows: commit dbb8d3f)
$ git status (nothing to commit, working directory clean)
$ <run the code styler script, which modifies some files>
$ git diff > ../style.patch (so the patch file lands outside the repo)
$ git reset --hard HEAD (to simulate the situation at the submitter's end)
$ git log -1 (shows: commit dbb8d3f)
$ git status (nothing to commit, working directory clean, so we are where we started)
$ git apply ../style.patch
error: patch failed: somefile.cpp:195
error: somefile.cpp: patch does not apply (same output using the --check option)
này chỉ áp dụng cho một số tác phẩm, không phải tất cả trong số họ. Tôi không biết làm thế nào để khắc phục sự cố này, tức là làm thế nào để có được git để cho tôi biết chính xác nơi nó đi sai - nó chỉ nói với tôi một hunk # khi tôi đào, nhưng đó vẫn còn khá lớn.
Những gì tôi đã cố gắng cho đến nay (không thành công):
apply --reverse
,apply --whitespace=nowarn
diff HEAD
thay vì một mìnhdiff
- tạo ra một hình nộm cam (! Cam kết tác phẩm mà không vấn đề), sử dụng
format-patch
, xóa cam kết giả, áp dụng bản vá vớigit-am
có hoặc không có-3
hoặc áp dụng vớigit-apply
- Có tệp bản vá trong lo cal dir thay vì lên (nắm tại ống hút, ở đây)
- Kiểm tra người đàn ông-trang-git diff, -apply, -format-vá, -am cho bất cứ điều gì hữu ích
- vá với linux
patch
lệnh - ....
Tôi không biết điều gì có thể sai với điểm khác biệt. Những khoảng trắng chỉ nên cảnh báo, đúng không? Trong mọi trường hợp, tôi sẽ không muốn bỏ qua chúng, vì nó là một kiểu sửa chữa rõ ràng liên quan đến khoảng trắng.
Làm thế nào tôi có thể sửa chữa/chẩn đoán điều này hoặc thậm chí tìm ra nơi nó bails chính xác? Nó sẽ giúp ích nếu tôi đăng sự khác biệt của một trong những tập tin thủ phạm? Điều gì khiến tôi bối rối cũng là ủy ban hoạt động mà không có vấn đề gì, nhưng bản vá được tạo ra từ cam kết không ??
Sau khi vật lộn với điều này trong vài giờ tôi đang ở cuối hiểu biết của tôi ...
'git áp dụng - -reject' để xem các thay đổi bị từ chối. – aragaer
Đã thử rằng ... điều này chỉ hiển thị cho bạn toàn bộ hunk bị lỗi (khoảng 2-300 dòng trong một trường hợp đó), vì vậy không quá thông tin – Christoph
Một giả định khác - có thể có một số tên tệp và có thể đã trở thành 'gitignored' là kết quả. – aragaer