private async Task <Octokit.Repository> CreateGithubRepository(
            MigrateProjectParameters migrateProjectParameters,
            GitHubClient githubClient,
            Repository repository)
        {
            Log.Information("Migrating repository {repositoryName} from project {projectName} to github", repository.RepositoryName, migrateProjectParameters.ProjectName);
            var githubRepo = await githubClient.Repository.Create(_configuration.GithubOrganization,
                                                                  new NewRepository(repository.RepositoryName)
            {
                Description = $"Migrated from {migrateProjectParameters.ProjectName} - {repository.RepositoryName}.",
                Private     = false
            });

            return(githubRepo);
        }
        private async Task MigrateProject(MigrateProjectParameters migrateProjectParameters)
        {
            var githubClient         = _clientFactory.GetOrCreateGithubClient();
            var existingRepositories = await githubClient.Repository.GetAllForOrg(_configuration.GithubOrganization);

            var repositoriesDict = existingRepositories.ToDictionary(x => x.Name, x => x);

            foreach (var repository in migrateProjectParameters.Repositories)
            {
                if (repositoriesDict.ContainsKey(repository.RepositoryName))
                {
                    var githubRepo =
                        repositoriesDict[repository.RepositoryName];

                    if (githubRepo.Size > 0)
                    {
                        Log.Information(
                            "Skipping repository {repositoryName} from project {projectName} as it already exist and contains code",
                            repository.RepositoryName, migrateProjectParameters.ProjectName);
                        continue;
                    }

                    Log.Information(
                        "Migrating to existing repository {repositoryName} from project {projectName}",
                        repository.RepositoryName, migrateProjectParameters.ProjectName);

                    MigrateRepository(repository, githubRepo);
                }
                else
                {
                    try
                    {
                        var githubRepo =
                            await CreateGithubRepository(migrateProjectParameters, githubClient, repository);

                        MigrateRepository(repository, githubRepo);
                    }
                    catch (RepositoryExistsException)
                    {
                        Log.Information(
                            "Skipping repository {repositoryName} from project {projectName} as it already exist",
                            repository.RepositoryName, migrateProjectParameters.ProjectName);
                    }
                }
            }
        }