63 lines
1.5 KiB
Markdown
63 lines
1.5 KiB
Markdown
# GitHub to Forgejo Migration Script
|
|
|
|
This repository contains a Python script to migrate repositories from **GitHub** to **Forgejo**.
|
|
It supports private and public repositories owned by the authenticated GitHub user.
|
|
|
|
## Setup
|
|
|
|
1. Clone this repository:
|
|
|
|
```bash
|
|
git clone https://git.jeena.net/jeena/github2forgejo.git
|
|
cd github2forgejo
|
|
```
|
|
|
|
2. Install dependencies with Pipenv:
|
|
|
|
```bash
|
|
pipenv install
|
|
```
|
|
|
|
## Authentication
|
|
|
|
You need to create **personal access tokens** for both GitHub and Forgejo.
|
|
|
|
### GitHub Token
|
|
|
|
1. Go to [GitHub Personal Access Tokens](https://github.com/settings/tokens).
|
|
2. Create a new **classic** token with the following scopes:
|
|
- `repo` (required for private repos)
|
|
- `read:project` (if you want project boards)
|
|
- `read:org` (optional, if repos are in orgs)
|
|
- `read:discussion` (optional, usually not needed)
|
|
3. Copy the generated token.
|
|
|
|
### Forgejo Token
|
|
|
|
1. Log into your Forgejo instance.
|
|
2. Go to **Settings → Applications → Manage Access Tokens**.
|
|
3. Create a token with these scopes:
|
|
- `repository (read/write)`
|
|
- `issue (read/write)`
|
|
- `misc (read/write)`
|
|
- `user (read/write)`
|
|
4. Copy the generated token.
|
|
|
|
### .env file
|
|
|
|
The settings are stored in the .env file. Copy the env-example file and call
|
|
it .env
|
|
|
|
```bash
|
|
cp env-example .env
|
|
```
|
|
|
|
Put in both tokens and fill in the rest accordingly like usernames and URLs.
|
|
|
|
## Usage
|
|
|
|
Run the script to migrate repositories:
|
|
|
|
```bash
|
|
pipenv run python migrate_github_to_forgejo.py
|
|
```
|