Duża część mojej codziennej pracy jest rozwój oprogramowania do użytku na komputerach z różnymi wersjami tego samego oprogramowania, jak bash
, find
i grep
. W przypadku funkcji, która byłaby przydatna na przykład w celu uproszczenia kodu, ważne jest, aby wiedzieć, czy ta funkcja jest dostępna w najstarszych zainstalowanych narzędziach. W przypadku krytycznych rzeczy warto byłoby wiedzieć, czy ta funkcja była nowa, czy istnieje od lat w najstarszych zainstalowanych narzędziach.
Jakie są szybkie sposoby na autorytatywną odpowiedź na to w przypadku narzędzi Linux, szczególnie GNU Core Utils? Niektóre możliwości w kolejności malejącej dokładności:
- Binarne wyszukiwanie binarne (sic) poprzez uruchamianie różnych wersji jest oczywiście ostateczną odpowiedzią, ale jest zdecydowanie najbardziej czasochłonne. Starsze instalacje często nie są dostępne ze względów bezpieczeństwa.
- Czytanie kodu jest prawie tak samo dobre, ale może być zaborczo czasochłonne, jeśli funkcja ma niejasną nazwę, nazwa nie odpowiada bezpośrednio nazwie zmiennej / funkcji / obiektu lub została zaimplementowana przed jej włączeniem.
- Dzienniki zmian , jeśli są dostępne, zwykle łączą zmiany funkcji z wersjami oprogramowania.
- Dzienniki zatwierdzania mogą zawierać wskazówki, ale nie wiedzą, w której wersji zostaną uwzględnione.
- strony podręcznika rzadko wspominają o datach.
- To samo dotyczy Googlingu , a także miałbyś trudności z wykluczeniem wszystkich nieautorytatywnych źródeł.
Odpowiedzi:
Ogólnie istnieje dziennik zmian. W rzeczywistości GPL wymaga tego (lub innych „widocznych powiadomień” o zmianach)! (Przynajmniej tak skutecznie w przypadku czegokolwiek z wieloma współautorami - patrz sekcja 2a GPLv2).
W przypadku pakietu GNU coreutils - i prawie wszystkiego innego bezpośrednio z projektu GNU - ten plik jest zdecydowanie pierwszym miejscem do przeglądania i powinien odpowiadać na twoje pytanie w 95% przypadków.
źródło
ChangeLog.bz2
w/usr/share/doc/coreutils-8.10
na moim systemie Fedora, a wejście jest od góry2011-02-04
. Możliwe też, że jest to widelec z prawej strony - sprawdzę to później.Dlaczego nie skorzystać z kontroli źródła prowadzącej do X, aby wyszukać funkcję Y? Repozytorium źródłowe jest najlepszym sposobem na identyfikację, kiedy wprowadzono określoną funkcję.
W przypadku coreutils możesz udać się na http://git.savannah.gnu.org/cgit/coreutils.git i wyszukać słowa kluczowe związane z Y w komunikatach dziennika lub określonych wierszach kodu określonych jako należące do Y. Możesz to zrobić na interfejs sieciowy bezpośrednio, a nawet lepiej, klonuje repozytorium źródłowe do stacji i wyszukuje za pomocą git-bisect , git-blame i git-log --grep .
Następnie użyj git-opisz, aby dowiedzieć się, że tag jest najbliższy konkretnemu poleceniu. Znaczniki są używane głównie dla numerów wersji, dlatego daje wersję, która wprowadziła zatwierdzenie.
Możesz dostosować powyższą metodę, w zależności od X i jego kontroli źródła.
źródło
Na Debianie i platformach pochodnych Debiana, takich jak Ubuntu :
zapewnia dziennik zmian GNU Core Utilities aż do wersji
4.5.1-1
.Nie jestem pewien, czy istnieją równie wygodne rozwiązania na innych platformach.
źródło
Sprawdź plik NEWS coreutils z jego repozytorium git .
źródło