Exemplo n.º 1
0
        private void Update(ApplicableChange change, IGitTreeModifier treeBuilder, ITfsWorkspace workspace, IDictionary <string, GitObject> initialTree)
        {
            // Assume we cut path at the start, so add it back
            var tfsPath = change.GitPath;

            if (!string.IsNullOrEmpty(_cutPath))
            {
                tfsPath = _cutPath + "/" + tfsPath;
            }

            var localPath = workspace.GetLocalPath(tfsPath);

            if (File.Exists(localPath))
            {
                treeBuilder.Add(change.GitPath, localPath, change.Mode);
            }
            else
            {
                // Fallback to supplied path
                tfsPath   = change.GitPath;
                localPath = workspace.GetLocalPath(tfsPath);
                if (File.Exists(localPath))
                {
                    treeBuilder.Add(change.GitPath, localPath, change.Mode);
                }
                else
                {
                    Trace.TraceInformation("Cannot checkout file '{0}' from TFS. Skip it", tfsPath);
                }
            }
        }
Exemplo n.º 2
0
        public LogEntry CopyTree(IGitTreeModifier treeBuilder, ITfsWorkspace workspace)
        {
            var startTime = DateTime.Now;
            var itemsCopied = 0;
            var maxChangesetId = 0;
            var tfsTreeEntries = GetTree().ToArray();
            if (tfsTreeEntries.Length == 0)
            {
                maxChangesetId = _changeset.ChangesetId;
            }
            else
            {
                workspace.Get(_changeset.ChangesetId);
                foreach (var entry in tfsTreeEntries)
                {
                    Add(entry.Item, entry.FullName, treeBuilder, workspace);
                    maxChangesetId = Math.Max(maxChangesetId, entry.Item.ChangesetId);

                    itemsCopied++;
                    if (DateTime.Now - startTime > TimeSpan.FromSeconds(30))
                    {
                        _stdout.WriteLine("{0} objects created...", itemsCopied);
                        startTime = DateTime.Now;
                    }
                }
            }
            return MakeNewLogEntry(maxChangesetId == _changeset.ChangesetId ? _changeset : _tfs.GetChangeset(maxChangesetId));
        }
Exemplo n.º 3
0
 private void Add(IItem item, string pathInGitRepo, IGitTreeModifier treeBuilder, ITfsWorkspace workspace)
 {
     if (item.DeletionId == 0)
     {
         treeBuilder.Add(pathInGitRepo, workspace.GetLocalPath(pathInGitRepo), LibGit2Sharp.Mode.NonExecutableFile);
     }
 }
Exemplo n.º 4
0
        public LogEntry CopyTree(IGitTreeModifier treeBuilder, ITfsWorkspace workspace)
        {
            var startTime      = DateTime.Now;
            var itemsCopied    = 0;
            var maxChangesetId = 0;
            var tfsTreeEntries = GetTree().ToArray();

            if (tfsTreeEntries.Length == 0)
            {
                maxChangesetId = _changeset.ChangesetId;
            }
            else
            {
                workspace.Get(_changeset.ChangesetId);
                foreach (var entry in tfsTreeEntries)
                {
                    Add(entry.Item, entry.FullName, treeBuilder, workspace);
                    maxChangesetId = Math.Max(maxChangesetId, entry.Item.ChangesetId);

                    itemsCopied++;
                    if (DateTime.Now - startTime > TimeSpan.FromSeconds(30))
                    {
                        Trace.TraceInformation("{0} objects created...", itemsCopied);
                        startTime = DateTime.Now;
                    }
                }
            }
            return(MakeNewLogEntry(maxChangesetId == _changeset.ChangesetId ? _changeset : _tfs.GetChangeset(maxChangesetId)));
        }
Exemplo n.º 5
0
        public LogEntry Apply(string lastCommit, IGitTreeModifier treeBuilder, ITfsWorkspace workspace, IDictionary <string, GitObject> initialTree, Action <Exception> ignorableErrorHandler)
        {
            if (initialTree.Empty())
            {
                Summary.Remote.Repository.GetObjects(lastCommit, initialTree);
            }
            var remoteRelativeLocalPath = GetPathRelativeToWorkspaceLocalPath(workspace);
            var resolver = new PathResolver(Summary.Remote, remoteRelativeLocalPath, initialTree);
            var sieve    = new ChangeSieve(_changeset, resolver);

            if (sieve.RenameBranchCommmit)
            {
                IsRenameChangeset = true;
            }
            _changeset.Get(workspace, sieve.GetChangesToFetch(), ignorableErrorHandler);
            var forceGetChanges = lastCommit == null;

            foreach (var change in sieve.GetChangesToApply(forceGetChanges))
            {
                ignorableErrorHandler.Catch(() =>
                {
                    Apply(change, treeBuilder, workspace, initialTree);
                });
            }
            return(MakeNewLogEntry());
        }
Exemplo n.º 6
0
 private void Delete(string pathInGitRepo, IGitTreeModifier treeBuilder, IDictionary <string, GitObject> initialTree)
 {
     if (initialTree.ContainsKey(pathInGitRepo))
     {
         treeBuilder.Remove(initialTree[pathInGitRepo].Path);
         Trace.WriteLine("\tD\t" + pathInGitRepo);
     }
 }
Exemplo n.º 7
0
 private void Update(ApplicableChange change, IGitTreeModifier treeBuilder, ITfsWorkspace workspace, IDictionary<string, GitObject> initialTree)
 {
     var localPath = workspace.GetLocalPath(change.GitPath);
     if (File.Exists(localPath))
     {
         treeBuilder.Add(change.GitPath, localPath, change.Mode);
     }
     else
     {
         _stdout.WriteLine("Cannot checkout file '{0}' from TFS. Skip it", change.GitPath);
     }
 }
Exemplo n.º 8
0
 public LogEntry Apply(string lastCommit, IGitTreeModifier treeBuilder, ITfsWorkspace workspace)
 {
     var initialTree = Summary.Remote.Repository.GetObjects(lastCommit);
     var resolver = new PathResolver(Summary.Remote, initialTree);
     var sieve = new ChangeSieve(_changeset, resolver);
     workspace.Get(_changeset.ChangesetId, sieve.GetChangesToFetch());
     foreach (var change in sieve.GetChangesToApply())
     {
         Apply(change, treeBuilder, workspace, initialTree);
     }
     return MakeNewLogEntry();
 }
Exemplo n.º 9
0
        public LogEntry Apply(string lastCommit, IGitTreeModifier treeBuilder, ITfsWorkspace workspace)
        {
            var initialTree = Summary.Remote.Repository.GetObjects(lastCommit);
            var resolver    = new PathResolver(Summary.Remote, initialTree);
            var sieve       = new ChangeSieve(_changeset, resolver);

            workspace.Get(_changeset.ChangesetId, sieve.GetChangesToFetch());
            foreach (var change in sieve.GetChangesToApply())
            {
                Apply(change, treeBuilder, workspace, initialTree);
            }
            return(MakeNewLogEntry());
        }
Exemplo n.º 10
0
        private void Update(ApplicableChange change, IGitTreeModifier treeBuilder, ITfsWorkspace workspace, IDictionary <string, GitObject> initialTree)
        {
            var localPath = workspace.GetLocalPath(change.GitPath);

            if (File.Exists(localPath))
            {
                treeBuilder.Add(change.GitPath, localPath, change.Mode);
            }
            else
            {
                Trace.TraceInformation("Cannot checkout file '{0}' from TFS. Skip it", change.GitPath);
            }
        }
Exemplo n.º 11
0
 private void Apply(ApplicableChange change, IGitTreeModifier treeBuilder, ITfsWorkspace workspace, IDictionary<string, GitObject> initialTree)
 {
     switch (change.Type)
     {
         case ChangeType.Update:
             Update(change, treeBuilder, workspace, initialTree);
             break;
         case ChangeType.Delete:
             Delete(change.GitPath, treeBuilder, initialTree);
             break;
         default:
             throw new NotImplementedException("Unsupported change type: " + change.Type);
     }
 }
Exemplo n.º 12
0
 public LogEntry Apply(string lastCommit, IGitTreeModifier treeBuilder, ITfsWorkspace workspace, IDictionary<string, GitObject> initialTree, Action<Exception> ignorableErrorHandler)
 {
     if (initialTree.Empty())
         Summary.Remote.Repository.GetObjects(lastCommit, initialTree);
     var resolver = new PathResolver(Summary.Remote, initialTree);
     var sieve = new ChangeSieve(_changeset, resolver);
     _changeset.Get(workspace, sieve.GetChangesToFetch(), ignorableErrorHandler);
     foreach (var change in sieve.GetChangesToApply())
     {
         ignorableErrorHandler.Catch(() => {
             Apply(change, treeBuilder, workspace, initialTree);
         });
     }
     return MakeNewLogEntry();
 }
Exemplo n.º 13
0
        public LogEntry Apply(string lastCommit, IGitTreeModifier treeBuilder, ITfsWorkspace workspace, IDictionary <string, GitObject> initialTree)
        {
            if (initialTree.Empty())
            {
                Summary.Remote.Repository.GetObjects(lastCommit, initialTree);
            }
            var resolver = new PathResolver(Summary.Remote, initialTree);
            var sieve    = new ChangeSieve(_changeset, resolver);

            _changeset.Get(workspace, sieve.GetChangesToFetch());
            foreach (var change in sieve.GetChangesToApply())
            {
                Apply(change, treeBuilder, workspace, initialTree);
            }
            return(MakeNewLogEntry());
        }
Exemplo n.º 14
0
        private void Apply(ApplicableChange change, IGitTreeModifier treeBuilder, ITfsWorkspace workspace, IDictionary <string, GitObject> initialTree)
        {
            switch (change.Type)
            {
            case ChangeType.Update:
                Update(change, treeBuilder, workspace, initialTree);
                break;

            case ChangeType.Delete:
                Delete(change.GitPath, treeBuilder, initialTree);
                break;

            default:
                throw new NotImplementedException("Unsupported change type: " + change.Type);
            }
        }
Exemplo n.º 15
0
        private void Update(ApplicableChange change, IGitTreeModifier treeBuilder, ITfsWorkspace workspace, IDictionary <string, GitObject> initialTree)
        {
            var localPath = workspace.GetLocalPath(change.GitPath);

            if (File.Exists(localPath))
            {
                if (new System.IO.FileInfo(localPath).Length > 50 * 1024 * 1024)
                {
                    throw new Exception($"File too large for github {localPath}");
                }

                treeBuilder.Add(change.GitPath, localPath, change.Mode);
            }
            else
            {
                Trace.TraceInformation("Cannot checkout file '{0}' from TFS. Skip it", change.GitPath);
            }
        }
Exemplo n.º 16
0
 public LogEntry Apply(string lastCommit, IGitTreeModifier treeBuilder, ITfsWorkspace workspace, IDictionary<string, GitObject> initialTree, Action<Exception> ignorableErrorHandler)
 {
     if (initialTree.Empty())
         Summary.Remote.Repository.GetObjects(lastCommit, initialTree);
     var remoteRelativeLocalPath = GetPathRelativeToWorkspaceLocalPath(workspace);
     var resolver = new PathResolver(Summary.Remote, remoteRelativeLocalPath, initialTree);
     var sieve = new ChangeSieve(_changeset, resolver);
     if (sieve.RenameBranchCommmit)
     {
         IsRenameChangeset = true;
     }
     _changeset.Get(workspace, sieve.GetChangesToFetch(), ignorableErrorHandler);
     var forceGetChanges = lastCommit == null;
     foreach (var change in sieve.GetChangesToApply(forceGetChanges))
     {
         ignorableErrorHandler.Catch(() =>
         {
             Apply(change, treeBuilder, workspace, initialTree);
         });
     }
     return MakeNewLogEntry();
 }
Exemplo n.º 17
0
        public LogEntry Apply(string lastCommit, IGitTreeModifier treeBuilder, ITfsWorkspace workspace, IDictionary <string, GitObject> initialTree, Action <Exception> ignorableErrorHandler, FileFilter filters)
        {
            if (initialTree.Empty())
            {
                //add mappings to the resolver
                _mappingsFile.Mappings.ForEach(m =>
                {
                    if (!initialTree.ContainsKey(m.TfsPath))
                    {
                        initialTree.Add(m.TfsPath, new GitObject()
                        {
                            Path = m.LocalPath
                        });
                    }
                });

                Summary.Remote.Repository.GetObjects(lastCommit, initialTree);
            }

            var remoteRelativeLocalPath = GetPathRelativeToWorkspaceLocalPath(workspace);
            var resolver = new PathResolver(Summary.Remote, remoteRelativeLocalPath, initialTree);
            var sieve    = new ChangeSieve(_changeset, resolver, filters);

            if (sieve.RenameBranchCommmit)
            {
                IsRenameChangeset = true;
            }
            _changeset.Get(workspace, sieve.GetChangesToFetch(), ignorableErrorHandler);
            var forceGetChanges = lastCommit == null;

            foreach (var change in sieve.GetChangesToApply(forceGetChanges))
            {
                ignorableErrorHandler.Catch(() =>
                {
                    Apply(change, treeBuilder, workspace, initialTree);
                });
            }
            return(MakeNewLogEntry());
        }
Exemplo n.º 18
0
        public LogEntry CopyTree(IGitTreeModifier treeBuilder, ITfsWorkspace workspace)
        {
            var startTime      = DateTime.Now;
            var itemsCopied    = 0;
            var maxChangesetId = 0;
            var tfsTreeEntries = GetTree().ToArray();

            if (tfsTreeEntries.Length == 0)
            {
                maxChangesetId = _changeset.ChangesetId;
            }
            else
            {
                workspace.Get(_changeset.ChangesetId);
                foreach (var entry in tfsTreeEntries)
                {
                    var tfsPath = entry.FullName;
                    if (!string.IsNullOrEmpty(Summary.Remote.TfsRepositoryPath) && entry.Item.ServerItem.StartsWith(Summary.Remote.TfsRepositoryPath))
                    {
                        tfsPath = entry.Item.ServerItem.Substring(Summary.Remote.TfsRepositoryPath.Length);
                    }
                    while (tfsPath.StartsWith("/"))
                    {
                        tfsPath = tfsPath.Substring(1);
                    }
                    Add(entry.Item, entry.FullName, tfsPath, treeBuilder, workspace);
                    maxChangesetId = Math.Max(maxChangesetId, entry.Item.ChangesetId);

                    itemsCopied++;
                    if (DateTime.Now - startTime > TimeSpan.FromSeconds(30))
                    {
                        Trace.TraceInformation("{0} objects created...", itemsCopied);
                        startTime = DateTime.Now;
                    }
                }
            }
            return(MakeNewLogEntry(maxChangesetId == _changeset.ChangesetId ? _changeset : _tfs.GetChangeset(maxChangesetId)));
        }
Exemplo n.º 19
0
 private void Update(ApplicableChange change, IGitTreeModifier treeBuilder, ITfsWorkspace workspace, IDictionary <string, GitObject> initialTree)
 {
     treeBuilder.Add(change.GitPath, workspace.GetLocalPath(change.GitPath), change.Mode);
 }
Exemplo n.º 20
0
 private void Update(ApplicableChange change, IGitTreeModifier treeBuilder, ITfsWorkspace workspace, IDictionary<string, GitObject> initialTree)
 {
     treeBuilder.Add(change.GitPath, workspace.GetLocalPath(change.GitPath), change.Mode);
 }
Exemplo n.º 21
0
 private void Add(IItem item, string pathInGitRepo, IGitTreeModifier treeBuilder, ITfsWorkspace workspace)
 {
     if (item.DeletionId == 0)
     {
         treeBuilder.Add(pathInGitRepo, workspace.GetLocalPath(pathInGitRepo), LibGit2Sharp.Mode.NonExecutableFile);
     }
 }
Exemplo n.º 22
0
 private void Delete(string pathInGitRepo, IGitTreeModifier treeBuilder, IDictionary<string, GitObject> initialTree)
 {
     if (initialTree.ContainsKey(pathInGitRepo))
     {
         treeBuilder.Remove(initialTree[pathInGitRepo].Path);
         Trace.WriteLine("\tD\t" + pathInGitRepo);
     }
 }