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 metadata for the Git repository, including the commit history, branches, and remote repositories.
.github/ - This directory contains GitHub-specific configuration files and data, such as workflows, actions, and settings.
.gitlab/ - This directory contains GitLab-specific configuration files and data, such as CI/CD configuration, agents, and settings.
app/ - This directory contains the main application code for GitLab. It includes assets, channels, components, controllers, enums, events, experiments, finders, graphql, helpers, mailers, models, policies, presenters, replicators, serializers, services, uploaders, validators, views, and workers.
bin/ - This directory contains executable files for the GitLab application.
config/ - This directory contains configuration files for the GitLab application.
db/ - This directory contains the database files for the GitLab application.
ee/ - This directory contains the Enterprise Edition (EE) specific code and configuration for GitLab.
gems/ - This directory contains the Ruby gems used by the GitLab application.
lib/ - This directory contains the main application code for GitLab, organized into subdirectories for different components.
spec/ - This directory contains the test files for the GitLab application.

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, but without more context, it's impossible to provide a summary description for it.
index.js - Multiple files with the same name `index.js` are present, but without more context, it's impossible to provide a summary description for each one. They might be related to different parts of the project or have different purposes.
workhorse/_support/fake-auth-backend.go - A Go file for a fake authentication backend used for testing. It contains the `main` function.
workhorse/cmd/gitlab-resize-image/main.go - The main file for the `gitlab-resize-image` command-line tool, 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`, `realGitalyAuthResponse`, `realGitalyOkBody`, `ensureGitalyRepository`, `TestAllowedClone`, `TestAllowedShallowClone`, `TestAllowedPush`, `TestAllowedGetGitBlob`, `TestAllowedGetGitArchive`, `TestAllowedGetGitArchiveOldPayload`, `TestAllowedGetGitDiff`, `TestAllowedGetGitFormatPatch`, and `requirePatchSeries`.
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-line tool, 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-line tool, which extracts metadata from GitLab archives. Functions include `main` and `fatalError`.