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); } } }
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)); }
private void Add(IItem item, string pathInGitRepo, IGitTreeModifier treeBuilder, ITfsWorkspace workspace) { if (item.DeletionId == 0) { treeBuilder.Add(pathInGitRepo, workspace.GetLocalPath(pathInGitRepo), LibGit2Sharp.Mode.NonExecutableFile); } }
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))); }
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()); }
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); } }
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); } }
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(); }
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()); }
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); } }
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); } }
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(); }
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()); }
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); } }
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); } }
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(); }
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()); }
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))); }
private void Update(ApplicableChange change, IGitTreeModifier treeBuilder, ITfsWorkspace workspace, IDictionary <string, GitObject> initialTree) { treeBuilder.Add(change.GitPath, workspace.GetLocalPath(change.GitPath), change.Mode); }
private void Update(ApplicableChange change, IGitTreeModifier treeBuilder, ITfsWorkspace workspace, IDictionary<string, GitObject> initialTree) { treeBuilder.Add(change.GitPath, workspace.GetLocalPath(change.GitPath), change.Mode); }
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); } }