2020-10-24 23:57:45 +05:30
---
2022-08-13 15:12:31 +05:30
stage: Systems
2021-04-17 20:07:23 +05:30
group: Gitaly
2022-11-25 23:54:43 +05:30
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments
2020-10-24 23:57:45 +05:30
---
2021-09-30 23:02:18 +05:30
# Repository checks **(FREE SELF)**
2016-06-02 11:05:42 +05:30
2021-09-30 23:02:18 +05:30
You can use [`git fsck` ](https://git-scm.com/docs/git-fsck ) to verify the integrity of all data
2022-08-27 11:52:29 +05:30
committed to a repository. GitLab administrators can:
2023-05-27 22:25:52 +05:30
- [Manually trigger this check for a project ](#check-a-projects-repository-using-gitlab-ui ).
- [Schedule this check ](#enable-repository-checks-for-all-projects ) to run automatically for all projects.
- [Run this check from the command line ](#run-a-check-using-the-command-line ).
2022-08-27 11:52:29 +05:30
- Run a [Rake task ](raketasks/check.md#repository-integrity ) for checking Git 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.
## Check a project's repository using GitLab UI
To check a project's repository using GitLab UI:
2016-06-02 11:05:42 +05:30
2022-10-11 01:57:18 +05:30
1. On the top bar, select **Main menu > Admin** .
2021-09-30 23:02:18 +05:30
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-06-02 11:05:42 +05:30
2022-08-27 11:52:29 +05:30
## Enable repository checks for all projects
2021-09-30 23:02:18 +05:30
Instead of checking repositories manually, GitLab can be configured to run the checks periodically:
2022-10-11 01:57:18 +05:30
1. On the top bar, select **Main menu > Admin** .
2021-09-30 23:02:18 +05:30
1. On the left sidebar, select **Settings > Repository** (`/admin/application_settings/repository`).
1. Expand the **Repository maintenance** section.
1. Enable **Enable repository checks** .
2016-06-02 11:05:42 +05:30
2021-09-30 23:02:18 +05:30
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-05-07 20:08:51 +05:30
Administrators can configure the frequency of repository checks. To edit the frequency:
2022-06-21 17:19:12 +05:30
- For Omnibus GitLab installations, edit `gitlab_rails['repository_check_worker_cron']` in
2022-05-07 20:08:51 +05:30
`/etc/gitlab/gitlab.rb` .
- For source-based installations, edit `[gitlab.cron_jobs.repository_check_worker]` in
`/home/git/gitlab/config/gitlab.yml` .
2016-06-02 11:05:42 +05:30
2021-09-30 23:02:18 +05:30
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-06-02 11:05:42 +05:30
2021-09-30 23:02:18 +05:30
Repositories with known check failures can be found at
`/admin/projects?last_repository_check_failed=1` .
2016-06-02 11:05:42 +05:30
2022-08-27 11:52:29 +05:30
## Run a check using the command line
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:
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.
1. [Identify the subdirectory that contains the repository ](repository_storage_types.md#from-project-name-to-hashed-path )
that you need to check.
1. Run the check. For example:
```shell
2023-05-27 22:25:52 +05:30
sudo -u git /opt/gitlab/embedded/bin/git \
-C /var/opt/gitlab/git-data/repositories/@hashed/0b/91/0b91...f9.git fsck --no-dangling
2022-08-27 11:52:29 +05:30
```
2023-05-27 22:25:52 +05:30
The error `fatal: detected dubious ownership in repository` means you're running the command
using the wrong account. For example, `root` .
2016-06-02 11:05:42 +05:30
## What to do if a check failed
2022-08-27 11:52:29 +05:30
If a repository check fails, locate the error in the [`repocheck.log` file ](logs/index.md#repochecklog ) on disk at:
2018-10-15 14:42:47 +05:30
2021-09-30 23:02:18 +05:30
- `/var/log/gitlab/gitlab-rails` for Omnibus GitLab installations.
- `/home/git/gitlab/log` for installations from source.
2022-08-27 11:52:29 +05:30
- `/var/log/gitlab` in the Sidekiq pod for GitLab Helm chart installations.
2016-06-02 11:05:42 +05:30
2021-09-30 23:02:18 +05:30
If periodic repository checks cause false alarms, you can clear all repository check states:
2021-09-04 01:27:46 +05:30
2022-10-11 01:57:18 +05:30
1. On the top bar, select **Main menu > Admin** .
2021-09-04 01:27:46 +05:30
1. On the left sidebar, select **Settings > Repository** (`/admin/application_settings/repository`).
1. Expand the **Repository maintenance** section.
1. Select **Clear all repository checks** .
2022-10-11 01:57:18 +05:30
### Error: `failed to parse commit <commit SHA> from object database for commit-graph`
You can see a `failed to parse commit <commit SHA> from object database for commit-graph` error in repository check logs. This error occurs if your `commit-graph` cache is out
of date. The `commit-graph` cache is an auxiliary cache and is not required for regular Git operations.
While the message can be safely ignored, see the issue [error: Could not read from object database for commit-graph ](https://gitlab.com/gitlab-org/gitaly/-/issues/2359 )
for more details.
2023-05-27 22:25:52 +05:30
### Dangling commit, tag, or blob messages
Repository check output often includes tags, blobs, and commits that must be pruned:
```plaintext
dangling tag 5c6886c774b713a43158aae35c4effdb03a3ceca
dangling blob 3e268c23fcd736db92e89b31d9f267dd4a50ac4b
dangling commit 919ff61d8d78c2e3ea9a32701dff70ecbefdd1d7
```
This is common in Git repositories. They're generated by operations like
force pushing to branches, because this generates a commit in the repository
that is not longer referred to by a ref or by another commit.
If a repository check fails, the output is likely to include these warnings.
Ignore these messages, and identify the root cause of the repository check failure
from the other output.
[GitLab 15.8 and later ](https://gitlab.com/gitlab-org/gitaly/-/merge_requests/5230 ) no
longer includes these messages in the check output. Use the `--no-dangling` option
to suppress then when run from the command line.