Repository
Drupal source code sits in one Git repository per project on git.drupalcode.org; Composer finds releases through packages.drupal.org.
A repository is the place where a project's files are stored along with the history of every change to them. In Drupal the word has two common meanings: the Git repository that holds the source code of a module, theme or core, and the Composer repository that tells Composer which Drupal projects and releases exist.
How repositories work in Drupal 11
Drupal.org's introduction to Git (last updated 20 January 2025, checked 26 October 2026) says that each project has its own, separate Git repository, with its own branches and tags. The repositories are hosted on GitLab at git.drupalcode.org, and the address follows the pattern https://git.drupalcode.org/project/PROJECT_SHORTNAME.
Maintainers create branches that match software versions, for example 1.0.x. Branches for older Drupal core versions carry the core version in the name, such as 7.x-1.x or 8.x-1.x. Within each branch, tags mark individual releases, such as 1.0.0 or 8.x-1.0.
A clone is a local copy of a repository. In a distributed version control system such as Git, the clone mirrors the repository including its full history.
The second meaning belongs to Composer. A Drupal project's composer.json lists a repository of type composer with the URL https://packages.drupal.org/8. Drupal.org describes it as static files with project metadata translated for Composer.
Example
To read the history of a contributed module, clone its repository:
git clone https://git.drupalcode.org/project/token.git
To install the same module on a site, you do not clone anything. You run Composer, which finds the release through the Composer repository entry in your composer.json:
"repositories": {
"drupal": {
"type": "composer",
"url": "https://packages.drupal.org/8"
}
}
Common mistakes
- Guessing the branch name. Projects use different schemes, so check which branch and tags the project actually has before you rely on
1.0.xor8.x-1.x. - Preparing a fix in the main repository. Drupal.org tells contributors to create an issue fork from the issue page rather than from GitLab. The fork is a temporary repository for that issue.
For marketing and content teams
When a developer says a change is "in the repository", it means it is stored with its history, but it is not necessarily released yet. A release is a tag in the repository, and the project page lists the releases.