Go to file
2023-12-28 05:10:54 -08:00
domain Tweak logging 2023-12-28 05:10:54 -08:00
.gitignore Started work 2023-01-17 22:14:46 -08:00
.python-version Bump python and deps 2023-12-28 03:08:08 -08:00
main.py Fix SSL shenanigans with a hack to allow the user to specify the CA bundle file 2023-08-12 04:45:57 -07:00
Pipfile Bump python and deps 2023-12-28 03:08:08 -08:00
Pipfile.lock Bump python and deps 2023-12-28 03:08:08 -08:00
README.md README correction 2023-12-28 03:16:34 -08:00

Mike's Gitea Repo Migrator

Just a script to help make it a little easier to migrate an entire organization (with bulk selection) from one Gitea instance to another.

Supports changing destination names a bit, and adding topics to each transferred repo, as well as optional bulk-selected deletion from the source.

by Mike Peralta

Current license: You are free to clone and use this program but all other rights reserved, provided you accept 100% of all liability of any outcome of use/download/etc. this program. Better license coming soon.

Requirements

  • python 3.12
  • pipenv

Installation

  1. Clone this repo and cd to its root directory

  2. Execute pipenv install (and optionally check with pipenv check)

Execution

Ask pipenv to execute main.py on your behalf with the following:


$ cd /path/to/gitea-repo-migrator
$ pipenv run python ./main.py --help

Optionally ask for a shell to run multiple times a bit faster:


$ cd /path/to/gitea-repo-migrator
$ pipenv shell
$ python ./main.py --help
$ python ./main.py --help

App Tokens

You'll need to generate an Application Token for both the source and destination servers, and pass the token along to the command line.

SSL Verification

Pass the long switch --no-verify-ssl if any server sits behind a self-signed or wonky SSL certificate.

Destination Repo Names

You can tweak the destination repo names a bit by using a string that includes %N% somewhere. The string %N% will expand to the original name. For example, if we use a repo originally named my-test-repo with the string what-%N%, the resulting destination repo name will be what-my-test-repo. This string will be recomputed for every migrated repo.

Destination Topics

Topics will be duplicated from all source repos to their corresponding destination repos. You can specify additional topics with the --destination-topic switch. For example, to add the topic migrated to every repo, pass the switch --destination-topic migrated.