[FF] list_commits_follow -- follow file renames on the commits page

Summary

Roll out the feature currently behind the list_commits_follow feature flag.

The flag gates rename-following on the commits page (the GraphQL file-history view). When enabled for a single-path history query, it threads Gitaly's ListCommits.follow field (added in gitaly!9086, Gitaly 19.4) so the page follows file renames again — fixing #628900 (closed), where the refactored page dead-ends at the commit that renamed a file.

  • DRI: @hustewart
  • Team Slack channel: #g_source_code

Note

Process and guidance live in the docs — this issue is just the commands and a place to track the rollout. "Rolling out" means incrementally enabling the flag on GitLab.com to validate stability — it is not the same as releasing the feature, which happens when the flag is removed. Feature flag controls · Feature flag lifecycle

What could go wrong?

follow: true makes Gitaly fall back from git rev-list to git log --follow, which performs rename detection and is materially more expensive than the default walk. Blast radius is limited: it only activates for single-path file-history requests, and the remove_file_commit_history_following ops kill-switch still suppresses it. Requires a Gitaly server >= 19.4; on older servers the field is ignored and the page behaves as today. Watch commits-page latency on https://dashboards.gitlab.net.

Events

Feature Flag events are only logged by default for feature flags marked for the current or future milestones. To enable while the feature flag is active, see https://docs.gitlab.com/development/feature_flags/#logging

Rollout

Run all production /chatops in #production and cross-post the results to #g_source_code. Background: incremental rollout process, feature actors.

Non-production

/chatops gitlab run feature set list_commits_follow 50 --actors --dev --pre --staging --staging-ref
/chatops gitlab run feature set list_commits_follow true --dev --pre --staging --staging-ref

Production — percentage rollout (wait >= 15 min between steps, watch dashboards):

/chatops gitlab run feature set list_commits_follow <percentage> --actors

Or target specific actors instead:

/chatops gitlab run feature set --project=gitlab-org/gitlab,gitlab-org/gitlab-foss list_commits_follow true
/chatops gitlab run feature set --group=gitlab-org,gitlab-com list_commits_follow true
/chatops gitlab run feature set --user=hustewart list_commits_follow true

Before global rollout

Confirm the relevant gotchas before going to 100% — see enabling a feature for GitLab.com:

Cleanup

Remove the flag once deemed stable — see cleaning up. Track it here, or open a follow-up Feature Flag Cleanup issue. Remove the flag and its YAML definition from the codebase, then:

/chatops gitlab run release check <merge-request-url> <milestone>
/chatops gitlab run feature delete list_commits_follow --dev --pre --staging --staging-ref --production

Rollback

/chatops gitlab run feature set list_commits_follow false                                         # production
/chatops gitlab run feature set list_commits_follow false --dev --pre --staging --staging-ref     # non-production
/chatops gitlab run feature delete list_commits_follow --dev --pre --staging --staging-ref --production  # remove entirely