В git_logger.login() не должен прокидываться source ("github"/"forgejo") - нужно попытаться залогиниться как в github, так и в forgejo, и выдать ошибку, только если оба токена не прошли (желательно это сделать, изменив метод RepositoryFactory.create_api() - туда должен подаваться только токен и базовый URL в качестве аргументов).
Для логина в Forgejo также нужен базовый URL, нужно добавить аргумент командной строки --base_url в main.py.