public void ApplyLabel(TfsSourcePath path, string label, string comment) { this.collection.EnsureAuthenticated(); var versionControlService = this.collection.GetService <VersionControlServer>(); var versionControlLabel = new VersionControlLabel(versionControlService, label, versionControlService.AuthorizedUser, path.AbsolutePath, comment); versionControlService.CreateLabel(versionControlLabel, new[] { new LabelItemSpec(new ItemSpec(path.AbsolutePath, RecursionType.Full), VersionSpec.Latest, false) }, LabelChildOption.Replace); }
public IEnumerable <TfsSourcePath> EnumerateChildSourcePaths(TfsSourcePath path) { this.collection.EnsureAuthenticated(); var sourceControl = this.collection.GetService <VersionControlServer>(); var itemSet = sourceControl.GetItems(path.AbsolutePath, RecursionType.OneLevel); var result = from i in itemSet.Items where i.ServerItem != path.AbsolutePath where i.ItemType == ItemType.Folder select new TfsSourcePath(i.ServerItem, i.ItemType == ItemType.Folder); return(result); }
public void GetSource(TfsSourcePath sourcePath, WorkspaceInfo workspaceInfo, string targetDirectory, string label = null) { this.collection.EnsureAuthenticated(); var versionControlServer = this.collection.GetService <VersionControlServer>(); using (var workspace = MappedWorkspace.Create(workspaceInfo, versionControlServer, sourcePath, this.log)) { var versionSpec = label == null ? VersionSpec.Latest : VersionSpec.ParseSingleSpec("L" + label, versionControlServer.AuthorizedUser); workspace.Workspace.Get(new GetRequest(new ItemSpec(sourcePath.AbsolutePath, RecursionType.Full), versionSpec), GetOptions.Overwrite); CopyNonTfsFiles(workspace.DiskPath, targetDirectory); } }
private static MappedWorkspace GetOrCreate(WorkspaceInfo workspaceInfo, VersionControlServer versionControlServer, TfsSourcePath sourcePath, ILogger log) { var workspaces = versionControlServer.QueryWorkspaces(workspaceInfo.Name, versionControlServer.AuthorizedUser, Environment.MachineName); var workspace = workspaces.FirstOrDefault(); if (workspace == null) { log.LogDebug($"Workspace '{workspaceInfo.Name}' was not found for user '{versionControlServer.AuthorizedUser}' on machine '{Environment.MachineName}', creating..."); workspace = versionControlServer.CreateWorkspace(workspaceInfo.Name); } log.LogDebug("Workspace mappings: \r\n" + string.Join(Environment.NewLine, workspace.Folders.Select(m => m.LocalItem + "\t->\t" + m.ServerItem))); string diskPath = workspaceInfo.ResolveWorkspaceDiskPath(log); if (!workspace.IsLocalPathMapped(diskPath)) { log.LogDebug($"Local path is not mapped, creating mapping to \"{diskPath}\"..."); DirectoryEx.Delete(diskPath); workspace.Map(sourcePath.AbsolutePath, diskPath); } if (!workspace.HasReadPermission) { throw new System.Security.SecurityException($"{versionControlServer.AuthorizedUser} does not have read permission for workspace '{workspaceInfo.Name}' at '{diskPath}'"); } return(new MappedWorkspace(workspace, diskPath, false, log)); }
public static MappedWorkspace Create(WorkspaceInfo info, VersionControlServer versionControlServer, TfsSourcePath sourcePath, ILogger log) { if (string.IsNullOrEmpty(info.Name)) { return(CreateTemporary(info, versionControlServer, sourcePath, log)); } else { return(GetOrCreate(info, versionControlServer, sourcePath, log)); } }
private static MappedWorkspace CreateTemporary(WorkspaceInfo workspaceInfo, VersionControlServer versionControlServer, TfsSourcePath sourcePath, ILogger log) { string uniqueName = "BM-" + DateTime.UtcNow.ToString("yyMMdd-HHmmss-ffff"); log.LogDebug($"Creating workspace '{uniqueName}'..."); var workspace = versionControlServer.CreateWorkspace(uniqueName); workspaceInfo.Name = uniqueName; string diskPath = workspaceInfo.ResolveWorkspaceDiskPath(log); log.LogDebug($"Creating disk path '{diskPath}'..."); DirectoryEx.Create(diskPath); log.LogDebug("Mapping workspace to disk path..."); workspace.Map(sourcePath.AbsolutePath, diskPath); return(new MappedWorkspace(workspace, diskPath, true, log)); }