Example #1
0
            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);
            }
Example #2
0
 public IEnumerable <TreeEntryChanges> FilterForProject(TreeChanges changes)
 {
     return(changes
            .Where(c => c.Status.HasSemanticMeaning())
            .Where(c =>
                   c.Path.StartsWith(Directory) ||
                   c.OldPath.StartsWith(Directory)));
 }
Example #3
0
            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();
                }

            }
        }