# azure_migrate Migrate from Azure to Forgejo # Usage Instructions Create your .env file: bash `cp .env.example .env` # List repositories first (dry view): bash `go run main.go list` # Run migration (dry run): bash `go run main.go migrate --dry-run` # Execute actual migration: bash `go run main.go migrate` ## Key Features ## # LFS Support: The LFS: true flag in the migration request tells Forgejo to mirror LFS objects automatically. # Concurrent Processing: Uses worker pools to migrate multiple repositories simultaneously (configurable via CONCURRENT_MIGRATIONS). # Detailed Error Handling: Errors include repository name, project context, and specific failure reasons Non-fatal errors don't stop the entire process Summary report at the end # Azure Authentication: Properly handles Azure DevOps PAT authentication via Basic Auth header. # Dry Run Mode: Test the migration without creating any repositories. # Mirror Configuration: Sets up Forgejo to periodically sync from Azure DevOps using the Interval setting. ## Important Notes ## # Network Access: Ensure the machine running this has access to both Azure DevOps and your Forgejo instance. # Storage: Forgejo must have sufficient storage for LFS objects. # Permissions: Azure PAT needs "Code (read)" permissions Forgejo token needs repository creation permissions # Existing Repositories: The tool skips if a repository already exists (to prevent overwrites). # LFS in Mirrors: Forgejo will handle LFS objects during the initial clone and subsequent syncs automatically when LFS: true is set.