すべてのバージョンの特定のカーネルモジュールに対する変更を見つける方法

すべてのバージョンの特定のカーネルモジュールに対する変更を見つける方法

3.10から5.3までの/fs/の下にあるすべての以前のバージョンのread_write.cソースコードにアクセスする必要があります。

私が今まで経験しなければならなかったことhttps://elixir.bootlin.com/read_write.c変更を適用して各バージョンを繰り返して確認します。私はカーネル3.10から5.3までの完全なセットをダウンロードしたくありません。しかし、小さいバージョンでも違いを確認したいと思います。とにかく、特定のバージョンのモジュールの特定のソースコードをダウンロードできますか(手動で実行する必要があります。常にdiffを使用して変更が発生した時点を見つけることができます)、または次のようにモジュールのバージョン履歴を表示するできます。マイナーバージョンを含むすべてのバージョン。

答え1

gitは個々のファイルの履歴を保存しないため、個々のファイルの履歴を直接ダウンロードする方法はありません(gitのみを使用)。たとえば、カーネルなどの大規模なストレージでも、単一のファイルに影響を与えるすべてのコミットを表示できるWebサービスがあります。GitHubのコミットリストfs/read_write.c

ローカル記録のみをしたい場合は、fs/read_write.c次の方法に従ってください。ただし、まだカーネルストア全体(現在ギガバイト以上)を(一時的に)ダウンロードする必要があります。

mkdir ~/linux-fs-read_write
cd !$
git init
git config core.sparseCheckout true
echo fs/read_write.c > .git/info/sparse-checkout
git remote add origin https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch origin master
git checkout !$
git filter-repo --path=fs/read_write.c --force

最後のステップは使用することですgit-filter-repofs/read_write.cそして、記録のみを含む130MiBツリーを生成します(2.6.12-rc2ベース)。

これを実行しようとしている状況では、特定のファイルのみをコミットすることに欠点があります。各変更を指定されたリリースタグにリンクすることは困難です。

関連情報