change the data directory gitlab to store repos elsewhere

GitGitlab

Git Problem Overview


my basic disk is full for my gitlab installation, is it possible to move the repositories and their data to some other folder and make sure that the upcoming push's data is sent to those directories?

I tried stopping the gitlab and copying over the entire folder, but to no avail. PS - I am not an IT guy, I am just pitching in to see how could we get out of this issue; so please be verbose when answering.

Git Solutions


Solution 1 - Git

Just updating in case people still refer to this. From the GitLab documentation:

> By default, omnibus-gitlab stores the Git repository data under > /var/opt/gitlab/git-data. The repositories are stored in a subfolder > repositories. You can change the location of the git-data parent > directory by adding the following line to /etc/gitlab/gitlab.rb. > > git_data_dirs({"default" => "/mnt/nas/git-data"}) > > Starting from GitLab 8.10 you can also add more than one git data > directory by adding the following lines to /etc/gitlab/gitlab.rb > instead. > > git_data_dirs({ > "default" => "/var/opt/gitlab/git-data", > "alternative" => "/mnt/nas/git-data" > }) > > Note that the target directories and any of its subpaths must not be a > symlink. > > Run sudo gitlab-ctl reconfigure for the changes to take effect. > > If you already have existing Git repositories in > /var/opt/gitlab/git-data you can move them to the new location as > follows: > > # Prevent users from writing to the repositories while you move them. > sudo gitlab-ctl stop >
> # Note there is no slash behind 'repositories', but there is a > # slash behind 'git-data'. > sudo rsync -av /var/opt/gitlab/git-data/repositories /mnt/nas/git-data/ >
> # Fix permissions if necessary > sudo gitlab-ctl reconfigure >
> # Double-check directory layout in /mnt/nas/git-data. Expected output: > # gitlab-satellites repositories > sudo ls /mnt/nas/git-data/ >
> # Done! Start GitLab and verify that you can browse through the repositories in > # the web interface. > sudo gitlab-ctl start

Solution 2 - Git

Much easier solution for new installs with the version > 7.14.1:

Open the gitlab.rb configuration file

sudo nano /etc/gitlab/gitlab.rb

Search for git_data_dir, uncomment the line and set your directory here, e.g.

git_data_dir "/storage/data/gitlab/git-data"

Save the file and reconfigure Gitlab:

sudo gitlab-ctl reconfigure

Solution 3 - Git

I just moved my gitlab repositories folder from one directory to another, might be useful for someone (do this quickly at a quiet time or stop gitlab beforehand!)

Assuming you have a standard install the steps are

  • Create a new folder for repos as root and change the owner to the git user
  • Copy (with archive, recursive options) the old repo folder contents to its new home cp -ar SOURCE DESTINATION
  • Edit the gitlab config file and the gitlab-shell config files with the new repo path
  • Restart gitlab sudo /etc/init.d/gitlab restart

Solution 4 - Git

If you're getting the cannot find repo error in GitLab after running the above steps. Run this command.

gitlab-rake cache:clear RAILS_ENV=production

This should fix the issue if your pathing is correct.

Solution 5 - Git

you need append this small config bellow:

git_data_dirs({
    "default" => {
        "path" => "/srv/gitlab/git-data"
    }
})

And

rsync -av /var/opt/gitlab/git-data/* /srv/gitlab/git-data/.
chown -R git:git /srv/gitlab/git-data/
sudo gitlab-ctl reconfigure

Done.

Solution 6 - Git

In my case, I needed to move a repository from the default storage to storage1
If you load the project's general setting, it show the project number, for example 37:

sudo gitlab-rails console
irb(main):012:0> p37 = Project.find(37)
irb(main):009:0> p37.repository_storage
=> "default"
irb(main):010:0> p37.repository_storage = 'storage1'
irb(main):011:0> p37.save
=> true
irb(main):012:0>  # <ctrl>+d to send EOF and exit

clearing the cache is probably a good idea too

gitlab-rake cache:clear RAILS_ENV=production

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionBrij Raj Singh - MSFTView Question on Stackoverflow
Solution 1 - GitGus EView Answer on Stackoverflow
Solution 2 - GitKevin WoblickView Answer on Stackoverflow
Solution 3 - GitalastairtreeView Answer on Stackoverflow
Solution 4 - GitRustyView Answer on Stackoverflow
Solution 5 - GitThinhLPView Answer on Stackoverflow
Solution 6 - GitThorSummonerView Answer on Stackoverflow