Re: [PATCH v5 1/2] scripts: generate_rust_analyzer.py: add versioning infrastructure

From: Tamir Duberstein

Date: Fri May 01 2026 - 11:39:06 EST


On Fri, May 1, 2026 at 10:27 AM Jesung Yang <y.j3ms.n@xxxxxxxxx> wrote:
>
> On Thu, Apr 30, 2026 at 11:14 PM Tamir Duberstein <tamird@xxxxxxxxxx> wrote:
> > [...]
> > With or without the `--merges` change, this always takes me to a very
> > recent tag. It seems like `git log -- src/tools/rust-analyzer` in the
> > rust repo never shows merge commits?
>
> Perhaps the MSRV wasn't provided as an argument? I see the nightly
> release page if the version is missing or unknown.
>
> $ ./check.sh 1.85.0
> # This opens:
> # https://github.com/rust-lang/rust-analyzer/releases/tag/2024-12-23
>
> $ ./check.sh 1.94.0
> # This opens:
> # https://github.com/rust-lang/rust-analyzer/releases/tag/2026-01-05
>
> $ ./check.sh 1.85
> # This opens:
> # https://github.com/rust-lang/rust-analyzer/releases/tag/nightly
>
> $ ./check.sh
> # This opens:
> # https://github.com/rust-lang/rust-analyzer/releases/tag/nightly
>
> I'll add `set -e` and a check to make the argument mandatory to prevent
> this confusion.

Here's what I see locally:

% cat check.sh
#!/usr/bin/env bash

set -eux

RUST_VERSION=$1
LOOKAHEAD=50

subject_string=$(
git -C ./rust log -n "$LOOKAHEAD" --format='%s' "$RUST_VERSION" \
-- src/tools/rust-analyzer | grep 'Merge pull request #'
)
readarray -t subject_array <<< "$subject_string"

hash=$(
git -C ./rust-analyzer log -n 1 --format='%H' --fixed-strings \
"${subject_array[@]/#/--grep=}"
)

tag_predates=$(git -C ./rust-analyzer describe --tags --abbrev=0 "$hash")

link_prefix="https://github.com/rust-lang/rust-analyzer/releases/tag";
open "$link_prefix/$tag_predates"
% bash check.sh 1.85.0
+ RUST_VERSION=1.85.0
+ LOOKAHEAD=50
++ git -C ./rust log -n 50 --format=%s 1.85.0 -- src/tools/rust-analyzer
++ grep 'Merge pull request #'
+ subject_string=
% echo $?
1

So it seems to never get past `git log` in the rust repo. When I run
that git log manually I see nothing containing "Merge pull request
...":

% git -C ./rust log -n 50 --format=%s 1.85.0 -- src/tools/rust-analyzer
Disable some incorrect rust-analyzer diagnostics on beta
Backport rust-lang/rust-analyzer#18760: internal: Workaround salsa
cycles leaking
Bump rustc crates
Preparing for merge from rust-lang/rust
Revert "Auto merge of #130766 - clarfonthey:stable-coverage-attribute,
r=wesleywiser"
fix: Fix flycheck workspace when requested but package was found
fix: Delay initial flycheck until after build scripts
fix: Fix empty check diagnostics not marking files as changed
fix: Properly check if workspace flychecking is allowed
fix: Don't trigger paren wrapping typing handler after idents
minor: Tell the server to stop prior to restarting it
fix: Set `result_id` for `RelatedFullDocumentDiagnosticReport` everywhere
fix: only show debug lens with a valid root
fix: remove always! check for file_id in runnables
Revert "internal: Drop proc-macro server support for ~1.66.0 and older
toolchains"
Clear all check diagnostics when the workspace changes
Arc the package ids coming from flycheck
Arc the workspace root flycheck
Clear flycheck diagnostics more granularly
Fix a case where completion was unable to expand a macro
internal: Split serde derive feature into `serde_derive` usage
fix: Reduce applicability of unnecessary_async assist
internal: Set `result_id` for pull diagnostics
fix: Consider both completion detail fields in to_proto
Fix AsmOption rule in rust.ungram
fix: Do not ask the client ro resolve for non existing label details
internal: Cleanup label structure of `CompletionItem`
Taking a raw ref of a deref is always safe
make no-variant types a dedicated Variants variant
Variants::Single: do not use invalid VariantIdx for uninhabited enums
Remove salsa from proc-macro server dep tree
Fix pretty-printing of `@` patterns
Stabilize #[coverage] attribute
Use a record struct instead of a tuple for each namespace in `PerNs`
Fix a panic with a diagnostics fix when a keyword is used as a field
fix: Fix path qualified auto-importing completions not working with re-exports
internal: Don't serialize empty fields in completions and resolve payloads
internal: Simplify ratoml testdir usage
Report unresolved idents for implicit captures in `format_args!()`
refactor: simplify `edit_tuple_usages` in destructure_tuple_binding
fix: Fix proc-macro dylib names on windows
internal: Show mir eval errors on hover with debug env var set
feat: Use string literal contents as a name when extracting into variable
fix: Revert changes to client capabilities in `bac0ed5`
feat: improve name generation in destructure_tuple_binding
Bump typos
Fix a few typos
Show expansion errors in expand_macro feature
Do not require a special env var to be set for the proc-macro-srv
internal: Implement `naked_asm!` builtin

What's also interesting is that when I use `--merges` I get no commits at all:

% git -C ./rust log -n1 --merges --format=%s 1.85.0 -- src/tools/rust-analyzer
%

Something strange is happening; my git is not behaving the same as your git.