Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
            }
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
 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));
     }
 }
Beispiel #6
0
        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));
        }