Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ryanpcmcquen/github_to_gitlab_syncer

Sync all your GitHubs to GitLab.
https://github.com/ryanpcmcquen/github_to_gitlab_syncer

gitlab gitlab-syncer hacktoberfest

Last synced: about 1 month ago
JSON representation

Sync all your GitHubs to GitLab.

Awesome Lists containing this project

README

        

# github_to_gitlab_syncer

Sync all your GitHubs to GitLab.

### This now requires a premium plan.

Hey there!

Maybe you are like me, and are weary of where GitHub is headed, but cannot completely divest, since having a GitHub account has many perks (it is nearly essential for logging in to/using some really nifty dev tools). It is also a great place for people to discover your work. BUT, since GitLab has some incredible mirroring options, you may as well stick all your work over there, and give anyone else weary of GitHub a 'second option' for enjoying your work. This set of simple scripts will allow you to do just that.

The first script you should start with, is [`SYNC_ANY_GITHUBS_NOT_ON_GITLAB.js`](SYNC_ANY_GITHUBS_NOT_ON_GITLAB.js), once you fill in your `.SECRETS` file, run:

```
node SYNC_ANY_GITHUBS_NOT_ON_GITLAB.js
```

The script will compare what you have on GitHub and GitLab, and sync anything not on GitLab _from_ GitHub. It even does some name sanitation, as GitLab's GUI import process will occasionally take some liberties with naming.

---

Oh, and if you plan to have GitHub be your 'source of truth', you should also run this:

```
node FIX_MIRROR_SETTINGS_FOR_ALL_GITLABS.js
```

This will change the `mirror_overwrites_diverged_branches` setting to `true` for all your GitLab repos, meaning if things get borked, they get overwritten from GitHub.

And that `.SECRETS` thing should look kinda like this:

```js
module.exports = {
gitHubToken: "LONG_ASS_TOKEN",
gitLabToken: "NOT_AS_LONG_OF_A_TOKEN",
gitHubUser: "YOUR_NAME_BRO",
gitLabUser: "YOUR_NAME_BRA",
};
```

---

:warning: DANGER ZONE :warning:

If you haven't kept GitLab clean, you can start with a _blank slate_, by running:

```
node DELETE_ALL_GITLAB_REPOS.js
```

**WARNING**, this will delete everything there, so please, USE IT AT YOUR OWN RISK!

Well, actually it will delete a page worth of repos at a time, which means about 30 at a time. So you'll have to run it multiple times to delete everything. This is by design in case you run it on accident. The other scripts recurse to cover all of your repos/projects.