# Welcome to Autosync git repos! Hi! Autosync git repos is a python script which helps you maintain backup of your GitHub repositories in GitLab and Codeberg. With a combination of the script and cronjob to execute it, make sure you never lose your precious code! ```mermaid graph LR A[GitHub] -- Pull --> B(Local storage) B(Local storage) -- Push --> C[GitLab] B(Local storage) -- Push --> D[Codeberg] ``` # Setup **Very Important** - If you have cloned the Autosync git repo, then delete the **.git** folder in its base directory using `sudo rm -r .git` ## 1. Configure config.ini Create config.ini file in the base directory and fill the following values. ``` [DEFAULT] GIT_USERNAME = GIT_ORG_NAME = GITLAB_GROUP_ID = GITLAB_API_TOKEN = CODEBERG_API_TOKEN = GITHUB_API_TOKEN = ``` You will need to create personal access tokens under your account's 'Settings' tab at https://github.com , https://gitlab.com , https://codeberg.org ## 2. Configure continuous synchronization ### Supervisord Setup supervisord configuration file for the script `sudo vim /etc/supervisor/conf.d/autosync-repos.conf` with the following content ``` [program:sync-git-repos] directory= command=/usr/bin/python3 /sync_repos.py user= autostart=false autorestart=false stopasgroup=true killasgroup=true stderr_logfile=/var/log/sync-git-repos/sync-git-repos.err.log stdout_logfile=/var/log/sync-git-repos/sync-git-repos.out.log ``` Initialize supervisor settings with ``` sudo mkdir /var/log/sync-git-repos/ sudo touch /var/log/sync-git-repos/sync-git-repos.err.log sudo touch /var/log/sync-git-repos/sync-git-repos.out.log sudo supervisorctl reread sudo supervisorctl update ``` Start the script `sudo supervisorctl start sync-git-repos` Check script status `sudo supervisorctl status sync-git-repos` ### Cronjob Setup a cronjob to execute the Python script *sync-repos.py* ``` sudo crontab -e # Sync every hour of the day 0 * * * * supervisorctl start sync-git-repos ```