69 lines
3 KiB
Markdown
69 lines
3 KiB
Markdown
---
|
|
stage: Create
|
|
group: Gitaly
|
|
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"
|
|
type: reference
|
|
---
|
|
|
|
# Repository checks **(FREE)**
|
|
|
|
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/3232) in GitLab 8.7.
|
|
|
|
Git has a built-in mechanism, [`git fsck`](https://git-scm.com/docs/git-fsck), to verify the
|
|
integrity of all data committed to a repository. GitLab administrators
|
|
can trigger such a check for a project via the project page under the
|
|
Admin Area. The checks run asynchronously so it may take a few minutes
|
|
before the check result is visible on the project Admin Area. If the
|
|
checks failed you can see their output on in the
|
|
[`repocheck.log` file.](logs.md#repochecklog)
|
|
|
|
This setting is off by default, because it can cause many false alarms.
|
|
|
|
## Periodic checks
|
|
|
|
When enabled, GitLab periodically runs a repository check on all project
|
|
repositories and wiki repositories in order to detect data corruption.
|
|
A project is checked no more than once per month. If any projects
|
|
fail their repository checks all GitLab administrators receive an email
|
|
notification of the situation. This notification is sent out once a week,
|
|
by default, midnight at the start of Sunday. Repositories with known check
|
|
failures can be found at `/admin/projects?last_repository_check_failed=1`.
|
|
|
|
## Disabling periodic checks
|
|
|
|
You can disable the periodic checks on the **Settings** page of the Admin Area.
|
|
|
|
## What to do if a check failed
|
|
|
|
If the repository check fails for some repository you should look up the error
|
|
in the [`repocheck.log` file](logs.md#repochecklog) on disk:
|
|
|
|
- `/var/log/gitlab/gitlab-rails` for Omnibus GitLab installations
|
|
- `/home/git/gitlab/log` for installations from source
|
|
|
|
If the periodic repository check causes false alarms, you can clear all repository check states by:
|
|
|
|
1. On the top bar, select **Menu >** **{admin}** **Admin**.
|
|
1. On the left sidebar, select **Settings > Repository** (`/admin/application_settings/repository`).
|
|
1. Expand the **Repository maintenance** section.
|
|
1. Select **Clear all repository checks**.
|
|
|
|
## Run a check manually
|
|
|
|
[`git fsck`](https://git-scm.com/docs/git-fsck) is a read-only check that you can run
|
|
manually against the repository on the [Gitaly server](gitaly/index.md).
|
|
|
|
- For Omnibus GitLab installations, repositories are stored by default in
|
|
`/var/opt/gitlab/git-data/repositories`.
|
|
- [Identify the subdirectory that contains the repository](repository_storage_types.md#from-project-name-to-hashed-path)
|
|
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
|
|
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.
|