Import bare repositories into your GitLab instance

Notes

  • The owner of the project will be the first admin
  • The groups will be created as needed
  • The owner of the group will be the first admin
  • Existing projects will be skipped

How to use

Create a new folder inside the git repositories path. This will be the name of the new group.

  • For omnibus-gitlab, it is located at: /var/opt/gitlab/git-data/repositories by default, unless you changed it in the /etc/gitlab/gitlab.rb file.
  • For installations from source, it is usually located at: /home/git/repositories or you can see where your repositories are located by looking at config/gitlab.yml under the gitlab_shell => repos_path entry.

New folder needs to have git user ownership and read/write/execute access for git user and its group:

sudo -u git mkdir /var/opt/gitlab/git-data/repositories/new_group

If you are using an installation from source, replace /var/opt/gitlab/git-data with /home/git.

Copy your bare repositories inside this newly created folder:

sudo cp -r /old/git/foo.git /var/opt/gitlab/git-data/repositories/new_group/

# Do this once when you are done copying git repositories
sudo chown -R git:git /var/opt/gitlab/git-data/repositories/new_group/

foo.git needs to be owned by the git user and git users group.

If you are using an installation from source, replace /var/opt/gitlab/git-data with /home/git.

Run the command below depending on your type of installation:

Omnibus Installation

$ sudo gitlab-rake gitlab:import:repos

Installation from source

Before running this command you need to change the directory to where your GitLab installation is located:

$ cd /home/git/gitlab
$ sudo -u git -H bundle exec rake gitlab:import:repos RAILS_ENV=production

Example output

Processing abcd.git
 * Created abcd (abcd.git)
Processing group/xyz.git
 * Created Group group (2)
 * Created xyz (group/xyz.git)
[...]