Đưa ra một hàm git commit, làm thế nào để tìm ra bản phát hành kernel nào chứa nó?


24

Giả sử tôi có một số vấn đề đã được sửa bởi một bản vá gần đây cho kho git Linux chính thức. Tôi có một công việc xung quanh, nhưng tôi muốn hoàn tác nó khi một bản phát hành xảy ra có chứa bản sửa lỗi của tôi. Tôi biết chính xác băm cam kết git, ví dụ f3a1ef9cee4812e2d08c855eb373f0d83433e34c .

Cách dễ nhất để trả lời câu hỏi: Những bản phát hành kernel nào cho đến nay có chứa bản vá này? Điểm thưởng nếu không có kho git Linux cục bộ là cần thiết.

( LWM thảo luận về một số ý tưởng, nhưng những điều này đòi hỏi phải có một kho lưu trữ cục bộ.)

Câu trả lời:



21

Như đã đề cập trên LWN , cách dễ nhất là:

git describe --contains f3a1ef9cee4812e2d08c855eb373f0d83433e34c

Nếu bạn không muốn một bản sao cục bộ, cam kết được định dạng "đơn giản" của gitweb chứa thông tin tương tự trong X-Git-Tagtiêu đề. Thật không may kernel.org đã chuyển sang cgit mà dường như không tiết lộ thông tin này. Trước đây có thể tìm thấy nó như thế này:

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff_plain;h=f3a1ef9cee4812e2d08c855eb373f0d83433e34c

Ở đây, X-Git-Tagthực sự bị thiếu tại thời điểm này bởi vì cam kết đó không nằm trong một bản phát hành được gắn thẻ trong kho lưu trữ đó. Nhưng bạn có thể xem một cam kết trước đó, như:

http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commitdiff_plain;h=dc0827c128c0ee5a58b822b99d662b59f4b8e970

Ở đây, bạn thấy:

X-Git-Tag: v3.4-rc1~184^2~10

cho tôi biết thẻ "v3.4-rc1" là thẻ đầu tiên theo dõi bản vá của tôi, vì vậy tôi hy vọng sẽ thấy nó trong v3.4.


1
Không chắc đây là câu trả lời có hợp lệ nữa không. X-Git-Tag không xuất hiện.
Ahmet Alp Balkan

Câu đầu tiên vẫn còn hiệu lực. Tìm câu trả lời qua gitweb không còn là một lựa chọn nữa, nhưng đó là lý do tại sao câu hỏi này đã được chỉnh sửa gần 3 năm trước để nói điều đó.
Jim Paris

1

Bạn có thể sử dụng một cái gì đó như thế này

git-show f3a1ef9cee4812e2d08c855eb373f0d83433e34c:Makefile \
         | head -4 | awk -vORS='.' '{print $3}' | sed 's/\.*$//'

Điều này đòi hỏi repo git địa phương.


-1

Bạn có thể thấy các cam kết trên gương nguồn github. Tôi cho rằng bạn có thể sửa các thẻ phát hành thành ngày cam kết (trong trường hợp này, cam kết của bạn là năm ngày, RC được gắn thẻ gần đây nhất masterlà bảy), nhưng thật lòng mà nói, điều này dễ dàng hơn nếu bạn sao chép nguồn cục bộ.


Tương quan ngày sẽ không hoạt động vì bản vá có thể chưa được hợp nhất vào bất kỳ bản phát hành nào hoặc có thể được viết ban đầu cho bản phát hành trước đó và chỉ không được hợp nhất cho đến gần đây.
psusi

1
Ngày nay, GitHub hiển thị tất cả các thẻ chứa một cam kết cụ thể ngay bên dưới thông điệp cam kết, do đó không cần phải tương quan theo ngày nữa.
Philipp Wendler
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.