private bool ApplyCommitInternal(Commit commit, TreeChanges changes, Repository repo) { this.CommitCountSinceVersionChange++; // return false if this is a version number root var projectFileChange = changes.Where(x => x.Path?.Equals(this.ProjectFilePath, StringComparison.OrdinalIgnoreCase) == true).FirstOrDefault(); if (projectFileChange != null) { if (projectFileChange.Status == ChangeKind.Added) { // the version must have been set here return(false); } else { var blob = repo.Lookup <Blob>(projectFileChange.Oid); using (var s = blob.GetContentStream()) { var project = new ProjectReader().ReadProject(s, this.Name, this.FullProjectFilePath, null); if (project.Version != this.Version) { // version changed return(false); } } } // version must have been the same lets carry on return(true); } return(true); }
public IEnumerable <TreeEntryChanges> FilterForProject(TreeChanges changes) { return(changes .Where(c => c.Status.HasSemanticMeaning()) .Where(c => c.Path.StartsWith(Directory) || c.OldPath.StartsWith(Directory))); }
private bool ApplyCommitInternal(Commit commit, TreeChanges changes, Repository repo) { this.CommitCountSinceVersionChange++; // return false if this is a version number root TreeEntryChanges projectFileChange = changes.Where(x => x.Path?.Equals(this.ProjectFilePath, StringComparison.OrdinalIgnoreCase) == true).FirstOrDefault(); if (projectFileChange != null) { if (projectFileChange.Status == ChangeKind.Added) { // the version must have been set here return(false); } else { Blob blob = repo.Lookup <Blob>(projectFileChange.Oid); using (Stream s = blob.GetContentStream()) { using (XmlReader reader = XmlReader.Create(s)) { ProjectRootElement proj = ProjectRootElement.Create(reader); NuGetVersion version = new NuGetVersion(proj.Properties.FirstOrDefault(x => x.Name == "VersionPrefix").Value); if (version != this.Version) { // version changed return(false); } } } } // version must have been the same lets carry on return(true); } return(true); }
void NotifyFileChanges (ProgressMonitor monitor, TreeChanges statusList) { // Files added to source branch not present to target branch. var removed = statusList.Where (c => c.Status == ChangeKind.Added).Select (c => GetRepository (c.Path).FromGitPath (c.Path)).ToList (); var modified = statusList.Where (c => c.Status != ChangeKind.Added).Select (c => GetRepository (c.Path).FromGitPath (c.Path)).ToList (); monitor.BeginTask (GettextCatalog.GetString ("Updating solution"), removed.Count + modified.Count); FileService.NotifyFilesChanged (modified, true); monitor.Step (modified.Count); FileService.NotifyFilesRemoved (removed); monitor.Step (removed.Count); monitor.EndTask (); }
IEnumerable<string> GetChangedPaths(TreeChanges treeChanges) { // for every change, get the path of the changed file this change maps to // without loading the entire snapshot foreach (var treeChange in treeChanges.Where(c => !IgnoreTreeChange(c))) { switch (treeChange.Status) { case ChangeKind.Unmodified: throw new InvalidOperationException("Unmodified changes should have been filtered out"); case ChangeKind.Modified: case ChangeKind.Added: case ChangeKind.Deleted: yield return GitBasedFileSystemSnapshot.GetPathForGitPath(treeChange.Path); break; default: throw new NotImplementedException(); } } }
IEnumerable<IChange> GetChanges(TreeChanges treeChanges, GitBasedFileSystemSnapshot fromSnapshot, GitBasedFileSystemSnapshot toSnapshot) { foreach (var treeChange in treeChanges.Where(c => !IgnoreTreeChange(c))) { switch (treeChange.Status) { case ChangeKind.Unmodified: throw new InvalidOperationException("Unmodified changes should have been filtered out"); case ChangeKind.Modified: var fromFile = fromSnapshot.GetFileForGitPath(treeChange.Path); var toFile = toSnapshot.GetFileForGitPath(treeChange.Path); yield return new Change(ChangeType.Modified, fromFile.ToReference(), toFile.ToReference()); break; case ChangeKind.Added: yield return new Change(ChangeType.Added, null, toSnapshot.GetFileForGitPath(treeChange.Path).ToReference()); break; case ChangeKind.Deleted: yield return new Change(ChangeType.Deleted, fromSnapshot.GetFileForGitPath(treeChange.Path).ToReference(), null); break; default: throw new NotImplementedException(); } } }