Remove inline_blame feature flag

What does this MR do and why?

This MR removes the inline_blame feature flag.

Resolves #602273 (closed).

Scope

Backend:

  • BlameController#show now renders the client-side redirect to the blob viewer (?blame=1) unconditionally, instead of only when the flag was on. The @gitaly_unavailable branch still runs first.
  • The legacy else branch of app/views/projects/blame/show.html.haml (blame table, pagination, streaming, legend, preferences mount) is removed, because it can no longer render.
  • show no longer calls load_environment or load_blame, so the IgnoreRevsFormatError / IgnoreRevsFileError rescues and the redirect_show_with_flash helper are gone. On the blob viewer path those errors are already surfaced by Resolvers::BlameResolver, which raises a GraphQL::ExecutionError that source_viewer.vue shows with createAlert. Covered by spec/graphql/resolvers/blame_resolver_spec.rb.
  • Removed all three push_frontend_feature_flag(:inline_blame, @project) calls, in blob_controller.rb, tree_controller.rb, and projects_controller.rb.
  • Deleted config/feature_flags/beta/inline_blame.yml.
  • Deleted BlameHelper#blame_pages_streaming_url, #entire_blame_path and #blame_preferences, plus their specs. The removed view branch was their only caller, and keela (the unused-method static analysis) blocks on newly orphaned methods. #age_map_class and #age_map_duration stay, because Gitlab::BlamePresenter and Types::Blame::CommitDataType still use them.

Frontend:

  • blob_content_viewer.vue: isBlameAvailable, the $route watcher, show-blame-toggle, and the two show-blame bindings now use the always-on branch.
  • chunk.vue: handleBlameClick always intercepts the in-gutter blame link.
  • blob_controls.vue: removed the desktop Blame button, which was permanently hidden while the flag was on.
  • Dropped the glFeatures mixin/inject from these three components, because nothing else in them read it.
  • The mobile Blame entry in the overflow menu (blob_repository_actions_group.vue) was never flag gated and is unchanged.

QA and docs:

  • Deleted qa/qa/page/blame/show.rb. It is an unreferenced page object whose view block asserts the blob-content-holder selector that existed only in the legacy branch, so qa:selectors would fail otherwise.
  • Regenerated locale/gitlab.pot. Four strings became unused: Show full blame, Loading full blame…, Malformed .git-blame-ignore-revs, .git-blame-ignore-revs is not a file.
  • Added the final history entry to doc/user/project/repository/files/git_blame.md.

Specs:

  • spec/controllers/projects/blame_controller_spec.rb rewritten to assert the redirect. The legacy flash and ignore-revs contexts are removed.
  • spec/features/projects/blobs/blame_spec.rb rewritten. The old file only tested legacy page pagination and streaming, which is unreachable once /-/blame/* always redirects. The new file covers the redirect, line fragment preservation, blame panel rendering, and binary file handling.
  • Flag stubs removed from spec/features/projects/files/user_browses_files_spec.rb, spec/features/search/user_searches_for_code_spec.rb, spec/features/accessibility/create/writing_code_spec.rb, and from the corresponding Jest specs.
Edited by Anastasia Khomchenko

Merge request reports

Loading
Loading