Since I had more than 100 repositories in my old gitolite instance and I wanted to migrate to Gitlab a more easy-to-use solution, I developed a
Warning: This is not a finished script but merely a guideline which you need to modify according to your specific needs. I don’t have private repositories in gitolite, so all of my repositories are explicitly listed in the config files. Use on your own responsibility and make a backup!
This does not change or delete any of your repositories in gitolite. Be sure to backup all your repositories in gitolite anyway, just in case!
# Configure git to not ask you for a password every time you are uploading. git config --global credential.helper store # Prepare list of repositories (check the text file and remove invalid names) cat ~/gitolite-admin/*.conf |grep repo | cut -d' ' -f2 > repos.txt # Clone all repos mkdir repos cd repos for i in $(cat ../repos.txt) ; do git clone [email protected]:${i} ; done # Push to Gitlab. This will automatically create a new project as your current user for i in * ; do cd $i && git remote rm origin && git remote add origin "https://gitlab.myserver.org/yourusername/${i}.git" && git push origin master && cd ..; done # Don't forget to make a backup of your gitolite repositories in case anything went wrong!
This script uses the fact that you can directly push to a new repository on Gitlab, creating the project in the process. You don’t need to manually create the project.
While running this script, my Gitlab instance crashed two times while a repository was in the last stage of the git push
process (this tended to happen for small kilobyte-sized repositories) due to heavy swapping induced by heavy memory usage. Restarting gitlab, and re-running the Push to gitlab part of the script fixed this issue.
Note that git config --global credential.helper store
will stay in effect, saving your git
passwords in clear-text. In case you want to restore the default behaviour of keeping them in the RAM for 15 minutes, use git config --global credential.helper cache
after running these commands.