Codebase
Navigate the Codebase using the tree view. Use the filters to highlight where various files are grouped to aid understanding.
Getting Started Commands
Project Structure
Below is a short description of the key directories of the project to aid you when understanding where key files are located.
.git/ - This directory contains the Git repository metadata and configuration. It includes subdirectories like branches/, hooks/, info/, logs/, refs/, heads/, remotes/, and tags/.
.github/ - This directory contains GitHub-specific configuration files and workflows for the repository.
.gitlab/ - This directory contains GitLab-specific configuration files and scripts. It includes subdirectories like agents/, agents/review-apps/, ci/, ci/artifact-collector/, ci/cng/, ci/includes/, ci/qa-common/, ci/rails/, ci/release-environments/, ci/review-apps/, ci/templates/, ci/test-on-cng/, ci/test-on-gdk/, ci/test-on-omnibus/, ci/test-on-omnibus-nightly/, issue_templates/, and merge_request_templates/.
.lefthook/ - This directory contains configuration files and scripts for Lefthook, a tool for managing Git hooks. It includes subdirectories like pre-push/.
.rubocop_todo/ - This directory contains files for tracking RuboCop code issues that need to be addressed. It includes subdirectories like capybara/, cop/, database/, factory_bot/, fips/, gemspec/, gettext/, gitlab/, gitlab/documentation_links/, gitlab/rails/, gitlab_security/, graphql/, internal_affairs/, layout/, lint/, metrics/, migration/, naming/, performance/, rails/, rake/, rspec/, rspec/factory_bot/, search/, security/, sidekiq_load_balancing/, style/.
app/ - This directory contains the main application code for the GitLab project. It includes subdirectories like assets/, assets/images/, assets/javascripts/, assets/stylesheets/, channels/, channels/application_cable/, channels/noteable/, components/, components/diffs/, components/layouts/, components/onboarding/, components/pajamas/, components/rapid_diffs/, controllers/, controllers/activity_pub/, controllers/admin/, controllers/api/, controllers/banzai/, controllers/clusters/, controllers/concerns/, controllers/dashboard/, controllers/explore/, controllers/external_redirect/, controllers/google_api/, controllers/groups/, controllers/import/, controllers/jira_connect/, controllers/ldap/, controllers/mailgun/, controllers/oauth/, controllers/organizations/, controllers/profiles/, controllers/projects/, controllers/repositories/, controllers/snippets/, controllers/terraform/, controllers/time_tracking/, controllers/user_settings/, controllers/users/, enums/, events/, events/ci/, events/gitlab_subscriptions/, events/groups/, events/members/, events/merge_requests/, events/milestones/, events/package_metadata/, events/packages/, events/pages/, events/pages_domains/, events/project_authorizations/, events/projects/, events/repositories/, events/users/, events/work_items/, experiments/, finders/, finders/achievements/, finders/admin/, finders/alert_management/, finders/analytics/, finders/autocomplete/, finders/banzai/, finders/boards/, finders/bulk_imports/, finders/ci/, finders/clusters/, finders/concerns/, finders/crm/, finders/data_transfer/, finders/database/, finders/deploy_keys/, finders/deploy_tokens/, finders/design_management/, finders/environments/, finders/groups/, finders/import/, finders/incident_management/, finders/issuable_finder/, finders/issuables/, finders/issues/, finders/issues_finder/, finders/members/, finders/merge_request/, finders/merge_requests/, finders/merge_requests_finder/, finders/namespaces/, finders/organizations/, finders/packages/, finders/pages/, finders/projects/, finders/releases/, finders/repositories/, finders/security/, finders/terraform/, finders/timelogs/, finders/users/, finders/vs_code/, finders/web_hooks/, finders/work_items/, graphql/, graphql/batch_loaders/, graphql/mutations/, graphql/queries/, graphql/resolvers/, graphql/subscriptions/, graphql/types/, helpers/, helpers/admin/, helpers/ci/, helpers/container_registry/, helpers/groups/, helpers/nav/, helpers/organizations/, helpers/projects/, helpers/resource_events/, helpers/routing/, helpers/users/, helpers/web_hooks/, mailers/, mailers/emails/, mailers/members/, mailers/namespaces/, mailers/previews/, models/, models/achievements/, models/activity_pub/, models/admin/, models/alert_management/, models/alerting/, models/analytics/, models/anti_abuse/, models/app_config/, models/application_setting/, models/atlassian/, models/audit_events/, models/aws/, models/badges/, models/batched_git_ref_updates/, models/blob_viewer/, models/blobs/, models/bulk_imports/, models/ci/, models/cloud_connector/, models/clusters/, models/commit_signatures/, models/concerns/, models/container_registry/, models/customer_relations/, models/cycle_analytics/, models/dependency_proxy/, models/design_management/, models/dev_ops_report/, models/diff_viewer/, models/early_access_program/, models/error_tracking/, models/group/, models/groups/, models/hooks/, models/identity/, models/import/, models/incident_management/, models/integrations/, models/issue/, models/issues/, models/jira_connect/, models/loose_foreign_keys/, models/main_clusterwide/, models/members/, models/merge_request/, models/merge_requests/, models/ml/, models/namespace/, models/namespaces/, models/network/, models/notes/, models/operations/, models/organizations/, models/package_metadata/, models/packages/, models/pages/, models/postgresql/, models/preloaders/, models/project_authorizations/, models/projects/, models/protected_branch/, models/protected_ref/, models/protected_tag/, models/releases/, models/remote_mirrors/, models/resource_events/, models/service_desk/, models/snippets/, models/storage/, models/system/, models/terraform/, models/time_tracking/, models/uploads/, models/users/, models/virtual_registries/, models/vs_code/, models/wiki_page/, models/wikis/, models/work_items/, policies/, policies/achievements/, policies/alert_management/, policies/analytics/, policies/anti_abuse/, policies/app_config/, policies/application_setting/, policies/audit_events/, policies/ci/, policies/clusters/, policies/commit_signatures/, policies/concerns/, policies/container_registry/, policies/customer_relations/, policies/dependency_proxy/, policies/design_management/, policies/error_tracking/, policies/gitlab/, policies/import/, policies/incident_management/, policies/namespace/, policies/namespaces/, policies/operations/, policies/organizations/, policies/packages/, policies/pages/, policies/projects/, policies/releases/, policies/terraform/, policies/time_tracking/, policies/users/, policies/virtual_registries/, policies/work_items/, presenters/, presenters/alert_management/, presenters/analytics/, presenters/blobs/, presenters/ci/, presenters/clusters/, presenters/deployments/, presenters/dev_ops_report/, presenters/gitlab/, presenters/import/, presenters/members/, presenters/ml/, presenters/packages/, presenters/projects/, presenters/releases/, presenters/terraform/, presenters/vs_code/, serializers/, serializers/activity_pub/, serializers/admin/, serializers/alert_management/, serializers/analytics/, serializers/anti_abuse/, serializers/ci/, serializers/clusters/, serializers/concerns/, serializers/deploy_keys/, serializers/error_tracking/, serializers/evidences/, serializers/feature_flags/, serializers/group_link/, serializers/import/, serializers/integrations/, serializers/issuables/, serializers/jira_connect/, serializers/merge_requests/, serializers/profile/, serializers/projects/, serializers/rollout_statuses/, serializers/serverless/, services/, services/achievements/, services/activity_pub/, services/admin/, services/alert_management/, services/analytics/, services/application_settings/, services/applications/, services/audit_events/, services/auth/, services/authorized_project_update/, services/auto_devops/, services/background_migration/, services/batched_git_ref_updates/, services/bulk_imports/, services/chaos/, services/ci/, services/click_house/, services/cloud_seed/, services/clusters/, services/commits/, services/concerns/, services/container_expiration_policies/, services/container_registry/, services/counters/, services/database/, services/dependency_proxy/, services/deployments/, services/design_management/, services/environments/, services/gitlab/, services/google_cloud/, services/groups/, services/import/, services/incident_management/, services/integrations/, services/issuable/, services/issuables/, services/issues/, services/jira/, services/jira_connect/, services/jira_connect_installations/, services/jira_connect_subscriptions/, services/jira_import/, services/keys/, services/labels/, services/lfs/, services/loose_foreign_keys/, services/mail_scheduler/, services/members/, services/merge_requests/, services/metrics/, services/ml/, services/namespaces/, services/object_pool/, services/object_storage/, services/packages/, services/pages/, services/pause_control/, services/personal_access_tokens/, services/projects/, services/releases/, services/repositories/, services/repository_check/, services/resource_access_tokens/, services/resource_events/, services/routes/, services/saved_replies/, services/search/, services/security/, services/service_desk/, services/snippets/, services/ssh_keys/, services/terraform/, services/todos_destroyer/, services/user_status_cleanup/, services/users/, services/virtual_registries/, services/web_hooks/, services/wikis/, services/work_items/, bin/, builds/, changelogs/, config/, config/application_setting_columns/, config/audit_events/, config/audit_events/types/, config/environments/, config/events/, config/feature_flags/, config/feature_flags/beta/, config/feature_flags/development/, config/feature_flags/experiment/, config/feature_flags/gitlab_com_derisk/, config/feature_flags/ops/, config/feature_flags/undefined/, config/feature_flags/wip/, config/feature_flags/worker/, config/helpers/, config/helpers/incremental_webpack_compiler/, config/initializers/, config/initializers_before_autoloader/, config/knative/, config/locales/, config/metrics/, config/metrics/counts_28d/, config/metrics/counts_7d/, config/metrics/counts_all/, config/metrics/license/, config/metrics/objects_schemas/, config/metrics/schema/, config/metrics/settings/, config/plugins/, config/prometheus/, config/routes/directs/, config/security/, config/vue3migration/, danger/, danger/ai_logging/, danger/analytics_instrumentation/, danger/architecture/, danger/bulk_database_actions/, danger/ce_ee_vue_templates/, danger/change_column_default/, danger/ci_config/, danger/ci_tables/, danger/ci_templates/, danger/clickhouse/, danger/config_files/, danger/cookie_setting/, danger/customer_success/, danger/database/, danger/datateam/, danger/documentation/, danger/duplicate_yarn_dependencies/, danger/eslint/, danger/experiments/, danger/feature_flag/, danger/gitaly/, danger/gitlab_schema_validation/, danger/ignored_model_columns/, danger/master_pipeline_status/, danger/model_validations/, danger/multiversion/, danger/pipeline/, danger/pipeline_config/, danger/plugins/, danger/qa_selector/, danger/roulette/, danger/rubocop/, danger/rubygems/, danger/saas_feature/, danger/settings_sections/, danger/sidekiq_args/, danger/sidekiq_queues/, danger/specialization_labels/, danger/specs/, danger/stable_branch_patch/, danger/todos/,
Entrypoints
Below are files we identified as entrypoints for to the codebase. This is where the application starts and a good place to start when learning.
app.js - A JavaScript file for the main application, handling routing and other server-side logic. Its functions and classes are not provided in the given description.
index.js (various) - Multiple JavaScript files with the same name `index.js`. Their functions and classes are not provided in the given description.
workhorse/_support/fake-auth-backend.go - A Go file for a fake authentication backend used for testing. It has a `main` function.
workhorse/cmd/gitlab-resize-image/main.go - The main file for the `gitlab-resize-image` command, which resizes images. It contains the `main` and `_main` functions.
workhorse/cmd/gitlab-workhorse/gitaly_integration_test.go - A Go file for GitLab Workhorse integration tests, testing various Git operations with Gitaly. Functions include `convertToDNSSchemes`, `jsonGitalyServer`, `init`, `skipUnlessRealGitaly`, and test methods for checking allowed Git operations.
workhorse/cmd/gitlab-workhorse/main.go - The entrypoint for the GitLab Workhorse, handling HTTP requests and running the application. Functions include `main`, `buildConfig`, and `run`.
workhorse/cmd/gitlab-zip-cat/main.go - A Go file for the `gitlab-zip-cat` command, which extracts files from GitLab archives. Functions include `main`, `run`, `findFileInZip`, and `fatalError`.
workhorse/cmd/gitlab-zip-metadata/main.go - A Go file for the `gitlab-zip-metadata` command, which extracts metadata from GitLab archives. It contains the `main` function and helper functions like `fatalError` and `sizeToLimit`.