public UpdateAndParseResult UpdateAndParse(int sourceControlVersionId) { AspNetDeployEntities entities = new AspNetDeployEntities(); SourceControlVersion sourceControlVersion = entities.SourceControlVersion .Include("Properties") .Include("Revisions") .Include("SourceControl.Properties") .First(svc => svc.Id == sourceControlVersionId); SourceControl sourceControl = sourceControlVersion.SourceControl; string sourcesFolder = this.pathServices.GetSourceControlVersionPath(sourceControl.Id, sourceControlVersion.Id); LoadSourcesResult loadSourcesResult = this.LoadSources(sourceControlVersion, sourcesFolder); if (loadSourcesResult.RevisionId == sourceControlVersion.GetStringProperty("Revision")) { return(new UpdateAndParseResult()); } sourceControlVersion.SetStringProperty("Revision", loadSourcesResult.RevisionId); Revision previousRevision = sourceControlVersion.Revisions.OrderByDescending(r => r.CreatedDate).FirstOrDefault(); Revision newRevision = new Revision { CreatedDate = DateTime.UtcNow, Name = loadSourcesResult.RevisionId, ParentRevision = previousRevision }; sourceControlVersion.Revisions.Add(newRevision); LoadSourcesInfoResult loadSourcesInfoResult = this.LoadSourcesInfo(sourceControlVersion, sourcesFolder); newRevision.RevisionInfos = loadSourcesInfoResult.SourcesInfos.Select(i => new RevisionInfo { Author = i.Author, CreatedDate = i.CreatedDate, Message = i.Message }).ToList(); entities.SaveChanges(); this.projectParsingService.UpdateProjects(sourceControlVersionId); return(new UpdateAndParseResult { HasChanges = true, Projects = entities.Project.Where(p => p.SourceControlId == sourceControlVersion.Id).Select(p => p.Id).ToList() }); }
public ActionResult AddSvn(AddSvnModel model) { this.CheckPermission(UserRoleAction.SourceVersionsManage); if (!this.ModelState.IsValid) { return(this.View(model)); } SourceControl sourceControl = new SourceControl { Type = SourceControlType.Svn, Name = model.Name, IsDeleted = false, OrderIndex = this.Entities.SourceControl.Count() }; sourceControl.SetStringProperty("URL", model.Url.Trim()); sourceControl.SetStringProperty("Login", model.Login.Trim()); sourceControl.SetStringProperty("Password", model.Password.Trim()); SourceControlVersion sourceControlVersion = new SourceControlVersion(); sourceControlVersion.SourceControl = sourceControl; sourceControlVersion.SetStringProperty("URL", "/"); TestSourceResult testSourceResult = this.sourceControlManager.TestConnection(sourceControlVersion); if (!testSourceResult.IsSuccess) { this.ModelState.AddModelError("URL", testSourceResult.ErrorMessage); return(this.View(model)); } sourceControlVersion.SourceControl = null; this.Entities.SourceControl.Add(sourceControl); this.Entities.SaveChanges(); return(this.RedirectToAction("List")); }