Xのどのバージョンで機能Yが導入されましたか?


10

私の毎日の仕事の大部分は、同じソフトウェアの異なるバージョンなどのマシン上で使用するためのソフトウェアを開発しているbashfindgrep。たとえばコードを簡略化するのに役立つ機能に遭遇した場合、この機能が最も古いインストール済みツールで使用できるかどうかを知ることが重要です。重要なものについては、この機能が新しいものか、インストールされている最も古いツールに何年も存在していたかどうかを知ることも役立ちます。

Linuxツール、特にGNU Core Utils に対してこれを信頼できる方法で迅速に回答する方法は何ですか?精度が低い順にいくつかの可能性:

  • もちろん、さまざまなバージョンを実行することによるバイナリバイナリ検索(sic)は最終的な答えですが、はるかに時間がかかります。セキュリティ上の理由から、古いインストールは利用できないことがよくあります。
  • コードの読み取りはほぼ同じですが、機能の名前が曖昧であるか、名前が変数/関数/オブジェクトの名前に直接対応していない場合、または有効になる前に実装された場合は、非常に時間がかかる可能性があります。
  • 変更ログ(利用可能な場合)は、通常、機能の変更をソフトウェアバージョンに関連付けます。
  • コミットログはヒントを提供できますが、どのバージョンに含まれるかわかりません。
  • マニュアルページで日付について言及することはほとんどありません。
  • 同じことがGooglingにも当てはまり、権限のないソースをすべて除外することも難しいでしょう。

この質問の背後にある理由について詳しく説明していただけますか?
Faheem Mitha、2011年

ISTMは、ソフトウェアをこれらの異なるプラットフォームに移植する必要がある場合、どこかに「最も古い」インストールが利用可能でなければならないことを示しています。したがって、かなり迅速で信頼できる答えは、そのプラットフォームで試してみることです。すべてのプラットフォームで理想的です(テストケースをスクリプトとして作成した場合、それをすべての移植プラットフォームにプッシュして、一連のyes / no応答を取得できます)。
roaima 2017

回答:


7

通常、変更ログがあります。実際、これ(または変更の他の「目立つ通知」)はGPLによって要求されています!(少なくとも、複数の貢献者がいる場合は事実上そうです。GPLv2のセクション2aを参照してください。)

GNU coreutilsパッケージの場合、およびGNUプロジェクトのその他のほとんどすべての場合、このファイルは間違いなく最初に確認する場所であり、95%の確率で質問に回答するはずです。


coreutils変更ログへの参照はありますか?私が見つけた最新のものは2007
でした。– l0b0

2
GNU Coreutils ChangeLogは2007年以降更新されていません 。cvs.savannah.gnu.org/ viewvc / coreutils /… gitログを今すぐ確認する必要があります。
ミケル

2
gitログから自動生成される場合があります。私のFedoraシステムにはChangeLog.bz2in があり/usr/share/doc/coreutils-8.10、一番上のエントリはから2011-02-04です。これがRHフォークである可能性もあります—今日は後で確認します。
mattdm 2011年

@mattdm:Ubuntuには/usr/share/doc/coreutils/changelog.gzがあります-ありがとうございます!残念ながら、それは2008年まで遡りますが、これは一部の関連ツールには最近のことです。でも、最後のものが終わったところを引き継ぐと思います。
l0b0 2011年

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-bisectgit-blame、およびgit-log --grepを使用して検索します

次に、git-describeを使用して、タグが特定のコミットに最も近いことを確認します。タグは主にバージョン番号に使用されるため、コミットを導入したバージョンがわかります。

Xとそのソース管理に応じて、上記の方法を採用できます。


どのコミット/行がどのバージョンのソフトウェアに入ったかをどのように特定しますか?また、サバンナの検索はひどく壊れています -同じログメッセージに明らかにある文字列の結果はありません。
l0b0 2011年

git-describeを使用して、タグが特定のコミットに最も近いことを確認します。タグは主にバージョン番号に使用されます。サバンナが壊れていることに関しては、あなたはそれについて多くをすることはできません。Gitでリポジトリをボックスに複製し、投稿で説明したgitコマンドを使用して作業します。
Shinnok、2011年

1

のDebianなどとDebian派生プラットフォームのUbuntu

sudo apt-get changelog coreutils > changelog.txt 

GNU Core Utilitiesの変更ログをversionまで提供します4.5.1-1

他のプラットフォームにも同様に便利なソリューションがあるかどうかはわかりません。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.