Una gran parte de mi trabajo diario está desarrollando un software para su uso en máquinas con diferentes versiones del mismo software, como bash
, find
, y grep
. Al encontrar una característica que sería útil, por ejemplo, para simplificar el código, es importante saber si esta característica está disponible en las herramientas instaladas más antiguas. Para cosas críticas, también sería útil saber si esta característica era nueva o existía durante años en las herramientas instaladas más antiguas.
¿Cuáles son las formas rápidas de responder con autoridad a estas herramientas de Linux, especialmente GNU Core Utils? Algunas posibilidades en orden de precisión decreciente:
- La búsqueda binaria binaria (sic) ejecutando las diferentes versiones es, por supuesto, la respuesta final, pero es, con mucho, la que consume más tiempo. Las instalaciones más antiguas a menudo no están disponibles por razones de seguridad.
- Leer el código es casi igual de bueno, pero puede llevar mucho tiempo si la característica se nombra vagamente, el nombre no corresponde directamente a los nombres de variables / funciones / objetos, o si se implementó antes de habilitarse.
- Los registros de cambios , cuando están disponibles, generalmente conectan cambios de funciones a versiones de software.
- Los registros de confirmación pueden proporcionar sugerencias, pero no saben en qué versión se incluirán.
- Las páginas man rara vez mencionan fechas.
- Lo mismo se aplica a Google , y también tendrá dificultades para excluir todas las fuentes no autorizadas.
Respuestas:
En general, hay un registro de cambios. De hecho, ¡esta (u otras "notificaciones destacadas" de cambios) es requerida por la GPL! (Al menos, efectivamente para cualquier cosa con múltiples contribuyentes - ver GPLv2 sección 2a.)
Para el paquete GNU coreutils, y para casi todo lo demás desde el proyecto GNU directamente, este archivo es definitivamente el primer lugar para buscar, y debería responder a su pregunta el 95% del tiempo.
fuente
ChangeLog.bz2
en/usr/share/doc/coreutils-8.10
mi sistema Fedora, y la entrada superior es de2011-02-04
. También es posible que se trate de una bifurcación de humedad relativa. Lo comprobaré hoy más tarde.¿Por qué no utilizar el control de fuente aferente a X para buscar la función Y? El repositorio fuente es la mejor manera de identificar cuándo se introdujo una característica particular.
Para coreutils, puede dirigirse a http://git.savannah.gnu.org/cgit/coreutils.git y buscar palabras clave relacionadas con Y en los mensajes de registro o líneas de código particulares que identificó como pertenecientes a Y. Puede hacerlo en la interfaz web directamente, o incluso mejor, clone el repositorio de origen en su estación y busque usando git-bisect , git-blame y git-log --grep .
Luego use git-describe para descubrir que la etiqueta es la más cercana a una comisión específica. Las etiquetas se usan principalmente para los números de versión, por lo que le dará la versión que introdujo el commit.
Puede adaptar el método anterior, dependiendo de X y su control de fuente.
fuente
En Debian y plataformas derivadas de Debian como Ubuntu :
proporciona el registro de cambios de GNU Core Utilities hasta la versión
4.5.1-1
.No estoy seguro si hay soluciones igualmente convenientes en otras plataformas.
fuente
Verifique el archivo NEWS de coreutils desde su repositorio git .
fuente