어떤 버전의 X가 기능 Y를 도입 했습니까?


10

내 일상 작업의 큰 부분은 동일한 소프트웨어와 같은 다른 버전의 시스템에 사용하기위한 소프트웨어를 개발하고 bash, find하고 grep. 예를 들어 코드를 단순화하는 데 유용한 기능이 있으면 가장 오래된 설치된 도구에서이 기능을 사용할 수 있는지 알아야합니다. 중요한 기능의 경우이 기능이 새로운 기능인지 또는 가장 오래된 설치된 도구에서 수년 동안 존재했는지를 아는 것도 유용합니다.

이 답변을 빠른 방법은 무엇입니까 정식 리눅스 도구, 특히 GNU 코어의 Utils 위해는? 정확도가 떨어지는 순서는 다음과 같습니다.

  • 다른 버전을 실행하는 이진 이진 검색 (sic)은 물론 궁극적 인 답변이지만 시간이 가장 많이 걸립니다. 보안상의 이유로 이전 설치를 사용할 수없는 경우가 종종 있습니다.
  • 코드를 읽는 것이 거의 좋지만 기능의 이름이 모호하거나 이름이 변수 / 함수 / 객체 이름과 직접적으로 일치하지 않거나 활성화되기 전에 구현 된 경우 엄청나게 많은 시간이 소요될 수 있습니다.
  • 사용 가능한 경우 변경 로그 는 일반적으로 기능 변경을 소프트웨어 버전에 연결합니다.
  • 커밋 로그 는 힌트를 제공 할 수 있지만 포함 할 버전을 모릅니다.
  • 매뉴얼 페이지 는 날짜를 거의 언급하지 않습니다.
  • Googling 에도 동일하게 적용되며 신뢰할 수없는 모든 소스를 제외하는 데 어려움 을 겪을 수 있습니다.

이 질문의 이유에 대해 자세히 설명해 주시겠습니까?
Faheem Mitha

ISTM은 소프트웨어를 이러한 다른 플랫폼으로 이식해야하는 경우 어딘가에 "가장 오래된"설치가 있어야합니다. 따라서 상당히 빠르고 권위있는 답변은 해당 플랫폼에서 시도해 보는 것입니다. 이상적으로 모든 플랫폼에서 (테스트 케이스를 스크립트로 작성한 경우 모든 포팅 플랫폼으로 푸시하고 일련의 예 / 아니오 응답을 얻을 수 있음).
roaima

답변:


7

일반적으로 변경 로그가 있습니다. 실제로 이것은 GPL에 의해 요구됩니다 (또는 다른 "명시된 변경 사항"). (적어도, 여러 제공자가있는 모든 경우에 효과적입니다 (GPLv2 섹션 2a 참조).

GNU coreutils 패키지와 GNU 프로젝트의 다른 모든 것들은이 파일이 가장 먼저 찾아야하며 95 %의 질문에 답해야합니다.


coreutils 변경 로그에 대한 참조가 있습니까? 내가 찾을 수있는 가장 새로운 것은 2007 년부터였다.
l0b0

2
GNU Coreutils ChangeLog는 2007 년 이후로 업데이트되지 않았습니다. cvs.savannah.gnu.org/viewvc/coreutils/… 이제 git 로그를 봐야합니다.
Mikel

2
git 로그에서 자동 생성 될 수 있습니다. 거기의 ChangeLog.bz2에서 /usr/share/doc/coreutils-8.10내 페도라 시스템, 상단 항목에서입니다 2011-02-04. 이것이 RH 포크 일 수도 있습니다. 오늘 나중에 확인해 보겠습니다.
mattdm

@ mattdm : Ubuntu에 /usr/share/doc/coreutils/changelog.gz가 있습니다-감사합니다! 불행히도 2008 년으로 돌아가서 관련 도구 중 일부에 비해 너무 최근입니다. 그래도 마지막 쪽이 끝난 곳을 대신한다고 생각합니다.
l0b0

3
증거는 다음과 같습니다. git.savannah.gnu.org/cgit/coreutils.git/tree/HACKING 131 행으로 스크롤 .
Shinnok

4

피처 Y를 검색하기 위해 X에 적합한 소스 제어를 사용하지 않는 이유는 무엇입니까? 소스 저장소는 특정 기능이 도입 된시기를 식별하는 가장 좋은 방법입니다.

coreutils의 경우 http://git.savannah.gnu.org/cgit/coreutils.git로 이동 하여 로그 메시지 또는 Y에 속하는 것으로 식별 된 특정 코드 줄에서 Y와 관련된 키워드를 검색 할 수 있습니다. 웹 인터페이스를 직접 또는 더 나은 방법으로 소스 저장소를 스테이션에 복제하고 git-bisect , git-blamegit-log --grep을 사용하여 검색하십시오 .

그런 다음 git-describe 를 사용 하여 특정 commmit에 가장 가까운 태그를 찾으십시오. 태그는 대부분 버전 번호에 사용되므로 커밋을 도입 한 버전을 제공합니다.

X와 소스 제어에 따라 위의 방법을 적용 할 수 있습니다.


어떤 커밋 / 라인이 어떤 버전의 소프트웨어에 들어 갔는지 어떻게 알 수 있습니까? 또한, 사바나 검색이 심하게되어 깨진 - 아니 같은 로그 메시지에 분명히있는 문자열을 발생합니다.
l0b0

git-describe 를 사용 하여 특정 commmit에 가장 가까운 태그를 찾으십시오. 태그는 대부분 버전 번호에 사용됩니다. 사바나가 망가 졌을 때, 당신은 그것에 대해 많은 것을 할 수 없습니다. 저장소를 상자에 복제하고 게시물에서 설명한 git 명령을 사용하여 작업하십시오.
Shinnok

1

데비안 과 같은 플랫폼 데비안에서 파생 된 우분투를 :

sudo apt-get changelog coreutils > changelog.txt 

GNU Core Utilities의 changelog를 version으로 되돌립니다 4.5.1-1.

다른 플랫폼에 비슷한 편리한 솔루션이 있는지 확실하지 않습니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.