Phiên bản nào của X giới thiệu tính năng Y?


10

Một phần quan trọng trong công việc hàng ngày của tôi là phát triển phần mềm để sử dụng trên máy với các phiên bản khác nhau của cùng một phần mềm, như bash, find, và grep. Khi gặp một tính năng hữu ích chẳng hạn để đơn giản hóa mã, điều quan trọng là phải biết liệu tính năng này có sẵn trong các công cụ được cài đặt lâu đời nhất hay không. Đối với những thứ quan trọng, cũng sẽ hữu ích khi biết tính năng này là mới hay đã tồn tại nhiều năm trong các công cụ được cài đặt lâu đời nhất.

Các cách nhanh chóng để trả lời chính thức này cho các công cụ Linux, đặc biệt là các Công cụ GNU Core là gì? Một số khả năng theo thứ tự giảm độ chính xác:

  • Tìm kiếm nhị phân nhị phân (sic) bằng cách chạy các phiên bản khác nhau tất nhiên là câu trả lời cuối cùng, nhưng cho đến nay là tốn thời gian nhất. Cài đặt cũ hơn thường không có sẵn vì lý do bảo mật.
  • Đọc mã gần như là tốt, nhưng nó có thể gây tốn thời gian nếu tính năng này được đặt tên một cách mơ hồ, tên không tương ứng trực tiếp với tên biến / hàm / đối tượng hoặc được triển khai trước khi được bật.
  • Thay đổi nhật ký , khi có sẵn, thường kết nối các thay đổi tính năng với các phiên bản phần mềm.
  • Nhật ký cam kết có thể cung cấp gợi ý, nhưng không biết chúng sẽ được đưa vào phiên bản nào.
  • trang người đàn ông hiếm khi đề cập đến ngày.
  • Điều tương tự cũng áp dụng cho Google , và bạn cũng sẽ gặp khó khăn khi loại trừ tất cả các nguồn không có thẩm quyền.

Có lẽ bạn có thể giải thích về lý do đằng sau câu hỏi này?
Faheem Mitha

ISTM rằng nếu bạn phải chuyển phần mềm sang các nền tảng khác nhau này, bạn phải có bản cài đặt "cũ nhất" ở đâu đó. Vì vậy, một câu trả lời khá nhanh và có thẩm quyền sẽ là dùng thử trên nền tảng đó. Lý tưởng nhất trên tất cả các nền tảng (nếu bạn đã viết một trường hợp thử nghiệm dưới dạng tập lệnh, bạn có thể đẩy nó tới tất cả các nền tảng chuyển của bạn và nhận được một loạt các phản hồi có / không).
roaima

Câu trả lời:


7

Nói chung, có một thay đổi. Trên thực tế, điều này (hoặc "thông báo nổi bật" khác về các thay đổi) được yêu cầu bởi GPL! (Ít nhất, hiệu quả như vậy đối với mọi thứ có nhiều người đóng góp - xem GPLv2 phần 2a.)

Đối với gói GNU coreutils - và đối với hầu hết mọi thứ khác từ dự án GNU - tệp này chắc chắn là nơi đầu tiên để xem và sẽ trả lời 95% câu hỏi của bạn.


Bạn có một tài liệu tham khảo cho nhật ký thay đổi coreutils? Cái mới nhất tôi có thể tìm thấy là từ năm 2007
l0b0

2
GNU Coreutils ChangeLog đã không được cập nhật kể từ năm 2007 cvs.savannah.gnu.org/viewvc/coreutils/ mẹo Bạn phải xem nhật ký git ngay bây giờ.
Mikel

2
Nó có thể được tạo tự động từ nhật ký git. Có một ChangeLog.bz2trong /usr/share/doc/coreutils-8.10trên hệ thống Fedora của tôi, và mục trên cùng là từ 2011-02-04. Cũng có thể đây là một ngã ba RH - tôi sẽ kiểm tra nó sau ngày hôm nay.
mattdm

@mattdm: Có /usr/share/doc/coreutils/changelog.gz trên Ubuntu - Cảm ơn! Thật không may, nó chỉ quay trở lại năm 2008, quá gần đây đối với một số công cụ có liên quan. Tôi đoán rằng nó sẽ qua nơi cuối cùng kết thúc.
l0b0

3
Dưới đây là bằng chứng: git.savannah.gnu.org/cgit/coreutils.git/tree/HACKING Di chuyển đến dòng 131.
Shinnok

4

Tại sao không sử dụng điều khiển nguồn liên kết với X để tìm kiếm tính năng Y? Repo nguồn là cách tốt nhất để xác định khi một tính năng cụ thể được giới thiệu.

Đối với coreutils, bạn có thể truy cập http://git.savannah.gnu.org/cgit/coreutils.git và tìm kiếm các từ khóa liên quan đến Y trong thông điệp tường trình hoặc các dòng mã cụ thể mà bạn xác định là thuộc về Y. Bạn có thể làm điều đó trên giao diện web trực tiếp hoặc thậm chí tốt hơn, sao chép repo nguồn vào trạm của bạn và tìm kiếm bằng git-bisect , git-blamegit-log --grep .

Sau đó, sử dụng git- description để tìm ra thẻ gần nhất với một xác nhận cụ thể. Các thẻ được sử dụng cho số phiên bản là chủ yếu, do đó nó sẽ cung cấp cho bạn phiên bản giới thiệu cam kết.

Bạn có thể điều chỉnh phương pháp trên, tùy thuộc vào X và đó là kiểm soát nguồn.


Làm thế nào bạn xác định được cam kết / dòng nào đi vào phiên bản phần mềm nào? Ngoài ra, tìm kiếm Savannah bị hỏng nặng - Không có kết quả cho các chuỗi rõ ràng trong cùng một thông điệp tường trình.
l0b0

Sử dụng git- description để tìm ra thẻ là gần nhất với một xác nhận cụ thể. Thẻ được sử dụng cho số phiên bản là chủ yếu. Đối với Savannah bị phá vỡ, bạn không thể làm gì nhiều về nó. Git sao chép kho lưu trữ vào hộp của bạn và làm việc theo cách của bạn bằng cách sử dụng các lệnh git mà tôi đã mô tả trong bài viết.
Shinnok

1

Trên các nền tảng có nguồn gốc từ Debian và Debian như Ubuntu :

sudo apt-get changelog coreutils > changelog.txt 

cung cấp thay đổi của GNU Core Utility hoàn toàn trở lại phiên bản 4.5.1-1.

Không chắc chắn nếu có các giải pháp thuận tiện tương tự trên các nền tảng khác.


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.