domain | ||
.gitignore | ||
.python-version | ||
main.py | ||
Pipfile | ||
Pipfile.lock | ||
README.md |
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.10
- pipenv
Installation
-
Clone this repo and
cd
to its root directory -
Execute
pipenv install
(and optionally check withpipenv 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
.