Uma grande parte do meu trabalho diário é o desenvolvimento de software para uso em máquinas com diferentes versões do mesmo software, como bash
, find
, e grep
. Ao encontrar um recurso que seria útil, por exemplo, para simplificar o código, é importante saber se esse recurso está disponível nas ferramentas mais antigas instaladas. Para coisas críticas, também seria útil saber se esse recurso era novo ou existe há anos nas ferramentas instaladas mais antigas.
Quais são as maneiras rápidas de responder a isso com autoridade nas ferramentas Linux, especialmente nos GNU Core Utils? Algumas possibilidades em ordem decrescente de precisão:
- A pesquisa binária binária (sic), executando as diferentes versões, é obviamente a resposta final, mas é, de longe, a que consome mais tempo. Instalações mais antigas geralmente não estão disponíveis por razões de segurança.
- Ler o código é quase tão bom, mas pode ser demorado proibir se o recurso for nomeado vagamente, o nome não corresponder diretamente aos nomes das variáveis / funções / objetos ou foi implementado antes de ser ativado.
- Os logs de alterações , quando disponíveis, geralmente conectam alterações de recursos às versões de software.
- Os registros de confirmação podem fornecer dicas, mas não sabem em qual versão eles serão incluídos.
- as páginas de manual raramente mencionam datas.
- O mesmo se aplica a Googling , e você também teria um tempo difícil excluindo todas as fontes não-autorizadas.
Respostas:
Geralmente, há um changelog. De fato, este (ou outros "avisos importantes" de mudanças) é exigido pela GPL! (Pelo menos, efetivamente para qualquer coisa com vários colaboradores - consulte a seção 2a da GPLv2.)
Para o pacote coreutils do GNU - e para praticamente todo o resto do projeto GNU diretamente - este arquivo é definitivamente o primeiro lugar a procurar e deve responder à sua pergunta 95% do tempo.
fonte
ChangeLog.bz2
no/usr/share/doc/coreutils-8.10
meu sistema Fedora, e a entrada principal é de2011-02-04
. Também é possível que este seja um garfo de RH - vou verificar isso mais tarde hoje.Por que não usar o controle de origem aferente a X para procurar o recurso Y? O repositório de origem é a melhor maneira de identificar quando um recurso específico foi introduzido.
Para coreutils, acesse http://git.savannah.gnu.org/cgit/coreutils.git e procure por palavras-chave relacionadas a Y em mensagens de log ou linhas de código específicas que você identificou como pertencentes a Y. Você pode fazer isso em a interface web diretamente, ou melhor ainda, clone do repo fonte à sua estação e pesquisar usando git-bisect , git-culpa e git-log --grep .
Em seguida, use git-description para descobrir que a tag é a mais próxima de um commit específico. As tags são usadas principalmente para números de versão, portanto, você fornecerá a versão que introduziu o commit.
Você pode adaptar o método acima, dependendo do X e do seu controle de origem.
fonte
No Debian e plataformas como o Debian-derivado Ubuntu :
fornece o registro de alterações do GNU Core Utilities desde a versão anterior
4.5.1-1
.Não tenho certeza se existem soluções igualmente convenientes em outras plataformas.
fonte
Verifique o arquivo coreutils NEWS em seu repositório git .
fonte