private static async void ExportRepos() { var repositories = await GetRepositories(); var tfsRepos = repositories.Where(x => x.Project.Name.Equals(TfsProjectName)); var stashClient = new StashClient(StashUrl, StashUserName, StashPassword); var projects = stashClient.Projects.Get().Result; var caeProj = projects.Values.FirstOrDefault(x => x.Name.Equals(StashProjectKey)); if (caeProj != null) { var stashRepos = await stashClient.Repositories.Get(StashProjectKey); foreach (var repository in tfsRepos) { if (stashRepos.Values.Any(x => x.Name.Equals(repository.Name, StringComparison.OrdinalIgnoreCase))) { continue; } var newRepo = new Atlassian.Stash.Entities.Repository { Name = repository.Name, Project = caeProj, Public = false }; await stashClient.Repositories.Create(StashProjectKey, newRepo); CloneRepo(repository, $"{StashUrl}/scm/{StashProjectKey.ToLowerInvariant()}/{repository.Name.ToLowerInvariant()}.git"); } } }
internal static Models.Repository ConvertToRepository(this Atlassian.Stash.Entities.Repository stashRepo) { var cloneUrl = ""; var linkUrl = ""; foreach (var clone in stashRepo.Links.Clone) { if (clone.Name.ToLower().Equals("http")) { cloneUrl = clone.Href.AbsoluteUri; } } foreach (var self in stashRepo.Links.Self) { if (self.Href.AbsoluteUri.ToLower().Contains("http")) { linkUrl = self.Href.AbsoluteUri; } } var retVal = new Models.Repository { Name = stashRepo.Name, CloneUrl = cloneUrl, Forkable = stashRepo.Forkable, Id = stashRepo.Id, Project = stashRepo.Project.ConvertToProject(), Public = stashRepo.Public, ScmId = stashRepo.ScmId, Slug = stashRepo.Slug, State = stashRepo.State, StatusMessage = stashRepo.StatusMessage, Url = linkUrl }; return(retVal); }