Moving from GitHub to GitLab

Until 2021 our repositories were hosted on GitHub. In March 2021 we started to move to GitLab.

The following repositories are now maintained on GitLab:

  • 2021-03-11 : Community Guide, Developer Guide and Atelier

  • 2021-04-12 : lino, xl, noi, cosi, voga, avanti, welfare, weleup, welcht

  • 2021-04-25 : presto, react, amici, tera

  • 2021-04-30 : getlino, algus, openui5, care, vilma

  • 2021-05-21 : pronto

  • 2022-08-17 : rstgen

  • todo: eidreader, blog, mercato, ext6, cd, tt, patrols, logos

How to update the remote setting of your clone

If you have a clone of one of these repositories, you must update its remote setting:

$ git remote rm origin
$ git remote add origin git@gitlab.com:lino-framework/XXX.git
$ git fetch
$ git branch --set-upstream-to=origin/master master

If git fetch says "git@gitlab.com: Permission denied (publickey). fatal: Could not read from remote repository.", then you might want to say:

$ git remote add origin https://gitlab.com/lino-framework/XXX.git

Where XXX is the nickname of the repository. See https://gitlab.com/lino-framework for the list of repository nicknames.

See https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes in case you wonder what a remote is.

How to see the remotes of your clone:

$ git remote -v

How to move a repo from GitHub to GitLab

Here is my cheat sheet for moving repositories from GH to GL.

Change the remote and push to the new upstream:

$ git pull
$ git remote rm origin
$ git remote add origin git@gitlab.com:lino-framework/XXX.git
$ git push -u git@gitlab.com:lino-framework/XXX.git master

Add a .gitlab-ci.yml file (copy from a repo that is already on GL):

$ cp ../cosi/.gitlab-ci.yml .
$ git add .gitlab-ci.yml

Update URLs in the setup_info.py and the main __init__.py.

Run inv bd to update the README.rst file and then push your first changes on GitLab:

$ inv bd
$ git ci -am "moved from GitHub to GitLab"
$ git push

Visit https://gitlab.com/lino-framework/XXX/edit#js-general-project-settings and change visibility from "private" to "public" (this can't be done using the CLI as explained here) in the GitLab project settings.

Visit https://github.com/lino-framework/XXX/blob/master/README.rst and use the web UI to add a warning to the README.rst file:

Warning: This repository has moved to https://gitlab.com/lino-framework/XXX

Update the known repositories in getlino.utils.

Finally:

  • Tell GitHub to archive the repository.

  • Run inv check

  • Run pp -l and check the project urls.

  • Release to PyPI.

Why avoid GitHub?

"GitHub has warped Git — creating add-on features that turn a distributed, egalitarian, and FOSS system into a centralized, proprietary site. And, all those add-on features are controlled by a single, for-profit company. By staying on GitHub, established FOSS communities bring newcomers to this proprietary platform — expanding GitHub's reach. and limiting the imaginations of the next generation of FOSS developers." -- https://sfconservancy.org/GiveUpGitHub/