2020-07-30 08:09:33 -04:00
---
2022-07-04 17:09:58 -04:00
stage: Systems
2021-03-14 23:09:11 -04:00
group: Gitaly
2022-07-04 17:09:58 -04:00
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
2020-07-30 08:09:33 -04:00
---
2021-07-05 02:08:01 -04:00
# Repository checks **(FREE SELF)**
2016-04-04 11:23:43 -04:00
2021-07-05 02:08:01 -04:00
You can use [`git fsck` ](https://git-scm.com/docs/git-fsck ) to verify the integrity of all data
committed to a repository. GitLab administrators can trigger this check for a project using the
GitLab UI:
2016-04-04 11:23:43 -04:00
2021-08-25 20:09:31 -04:00
1. On the top bar, select **Menu > Admin** .
2021-07-05 02:08:01 -04:00
1. On the left sidebar, select **Overview > Projects** .
1. Select the project to check.
1. In the **Repository check** section, select **Trigger repository check** .
The checks run asynchronously so it may take a few minutes before the check result is visible on the
project page in the Admin Area. If the checks fail, see [what to do ](#what-to-do-if-a-check-failed ).
2016-04-04 11:23:43 -04:00
2021-01-27 19:09:33 -05:00
This setting is off by default, because it can cause many false alarms.
2020-03-23 23:09:28 -04:00
2021-07-05 02:08:01 -04:00
## Enable periodic checks
Instead of checking repositories manually, GitLab can be configured to run the checks periodically:
2021-08-25 20:09:31 -04:00
1. On the top bar, select **Menu > Admin** .
2021-07-05 02:08:01 -04:00
1. On the left sidebar, select **Settings > Repository** (`/admin/application_settings/repository`).
1. Expand the **Repository maintenance** section.
1. Enable **Enable repository checks** .
2016-04-04 11:23:43 -04:00
2021-07-05 02:08:01 -04:00
When enabled, GitLab periodically runs a repository check on all project repositories and wiki
repositories to detect possible data corruption. A project is checked no more than once per month.
2022-03-07 07:16:11 -05:00
Administrators can configure the frequency of repository checks. To edit the frequency:
2022-03-24 08:07:26 -04:00
- For Omnibus GitLab installations, edit `gitlab_rails['repository_check_worker_cron']` in
2022-03-07 07:16:11 -05:00
`/etc/gitlab/gitlab.rb` .
- For source-based installations, edit `[gitlab.cron_jobs.repository_check_worker]` in
`/home/git/gitlab/config/gitlab.yml` .
2016-04-04 11:23:43 -04:00
2021-07-05 02:08:01 -04:00
If any projects fail their repository checks, all GitLab administrators receive an email
notification of the situation. By default, this notification is sent out once a week at midnight at
the start of Sunday.
2016-04-06 06:26:29 -04:00
2021-07-05 02:08:01 -04:00
Repositories with known check failures can be found at
`/admin/projects?last_repository_check_failed=1` .
2016-04-04 11:23:43 -04:00
## What to do if a check failed
2022-07-26 08:10:14 -04:00
If a repository check fails, locate the error in the [`repocheck.log` file ](logs/index.md#repochecklog ) on
2021-07-05 02:08:01 -04:00
disk at:
2018-04-23 10:33:18 -04:00
2021-07-05 02:08:01 -04:00
- `/var/log/gitlab/gitlab-rails` for Omnibus GitLab installations.
- `/home/git/gitlab/log` for installations from source.
2022-07-25 05:09:05 -04:00
- `/var/log/gitlab` in the Sidekiq pod for GitLab Helm chart installations.
2018-04-23 10:33:18 -04:00
2021-07-05 02:08:01 -04:00
If periodic repository checks cause false alarms, you can clear all repository check states:
2021-06-15 14:09:57 -04:00
2021-08-25 20:09:31 -04:00
1. On the top bar, select **Menu > Admin** .
2021-06-15 14:09:57 -04:00
1. On the left sidebar, select **Settings > Repository** (`/admin/application_settings/repository`).
1. Expand the **Repository maintenance** section.
1. Select **Clear all repository checks** .
2021-03-14 23:09:11 -04:00
2021-07-05 02:08:01 -04:00
## Run a check using the command line
2021-03-14 23:09:11 -04:00
2021-07-05 02:08:01 -04:00
You can run [`git fsck` ](https://git-scm.com/docs/git-fsck ) using the command line on repositories
on [Gitaly servers ](gitaly/index.md ). To locate the repositories:
2021-03-14 23:09:11 -04:00
2022-07-25 05:09:05 -04:00
1. Go to the storage location for repositories:
- For Omnibus GitLab installations, repositories are stored in the `/var/opt/gitlab/git-data/repositories` directory by default.
- For GitLab Helm chart installations, repositories are stored in the `/home/git/repositories` directory inside the Gitaly pod by default.
2021-07-05 02:08:01 -04:00
1. [Identify the subdirectory that contains the repository ](repository_storage_types.md#from-project-name-to-hashed-path )
2021-03-14 23:09:11 -04:00
that you need to check.
To run a check (for example):
```shell
sudo /opt/gitlab/embedded/bin/git -C /var/opt/gitlab/git-data/repositories/@hashed/0b/91/0b91...f9.git fsck
```
You can also run [Rake tasks ](raketasks/check.md#repository-integrity ) for checking Git
2021-07-05 02:08:01 -04:00
repositories, which can be used to run `git fsck` against all repositories and generate repository
checksums, as a way to compare repositories on different servers.