Chromiumの全バージョン一覧が欲しい

1 min read読了の目安(約1700字

TL; DR

git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' https://chromium.googlesource.com/chromium/src

これでタグとコミットハッシュの両方が出るので、適切にこねくり回せばバージョン一覧が出る。

この記事は、このQiitaの同名の記事を改変したものになります。

背景

youtube-dlには、UA偽装のためにChromeのバージョン一覧を持っています。ですが、見て頂いても分かる通り、バージョンが68〜76?と非常に古いのです。[1]
Windows版のChromeであれば自動更新機能があり、この機能によって古いバージョンのChromeは比較的早く置き換えられていきます。それを考えれば、今更60番台のChromeのUAが来たら即ブロックされかねません。こういったこともあり、バージョン一覧を新しいものに交換しようと考えました。

なお、Chromiumのリポジトリは原記事の執筆時点(2021/4/14)で23GBあり、GitHub Actionsで自動化したい場合、GitHub-hosted runnerでは入り切りません。
よって、23 GBを消費することなくtag一覧を取得する必要がありました。

結論

このSOの質問を参考にしつつ、次のようなコマンドを使用してcommit hashと対応するtagの両方を得ることが出来ます。

git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' https://chromium.googlesource.com/chromium/src

出力の一例は次のようになります。

$ git -c 'versionsort.suffix=-' ls-remote --tags --sort='v:refname' https://chromium.googlesource.com/chromium/src
05197078e4761dde56f8dc8884050bf862344425        refs/tags/3.0.195.25
75894f416826f37475ca17e92f5853b0f84ac3ee        refs/tags/3.0.195.27

これを適切に解析すれば、23 GBを消費すること無くtag一覧を取得できます。

脚注
  1. 確かにバージョンは古いですが、これらのChromeが必要という訳ではありません。よって、これを原因として何らかの脆弱性に直結するようなことはありません。 ↩︎