代码之家  ›  专栏  ›  技术社区  ›  Rowland Shaw

在Team Foundation服务器中创建工作区自动化

tfs
  •  5
  • Rowland Shaw  · 技术社区  · 16 年前

    是否有任何方法可以根据预先存在的“模板”轻松创建工作区?…还是其他方式代表其他人创建工作区?

    4 回复  |  直到 9 年前
        1
  •  7
  •   Preet Sangha    16 年前

    可以使用命令脚本创建工作区 tf workspace 命令。然后可以使用 tf workfold 命令。workspace命令具有/template选项

    例如:

    为某人创建工作区

    tf workspace /new Beta1;jenh
    

    然后根据模板创建一个新模板

    tf workspace /new /template:Beta1;jenh /server:teamserver2 Beta1;user2
    

    要映射文件夹:

    tf workfold /map $/projects/project_one C:\localproject1 /workspace:Beta1;user2
    
        2
  •  2
  •   Andrew Odri    10 年前

    根据您对进程的细粒度控制程度,我发现此PowerShell脚本是有效的:

    "Microsoft.TeamFoundation.Client",
    "Microsoft.TeamFoundation.VersionControl.Common",
    "Microsoft.TeamFoundation.VersionControl.Client" |
        ForEach-Object { Add-Type -AssemblyName "$_, Version=11.0.0.0, Culture=Neutral, PublicKeyToken=b03f5f7f11d50a3a" }
    
    $tfsUrl = "http://tfsserver:8080/collection"
    
    $tfs = [Microsoft.TeamFoundation.Client.TeamFoundationServerFactory]::GetServer($tfsUrl)
    $vcs = $tfs.GetService([type]"Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer")
    
    $workspaceParameters = New-Object Microsoft.TeamFoundation.VersionControl.Client.CreateWorkspaceParameters -ArgumentList "WorkspaceName"
    
    # Add any specific parameters that you want according to http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.versioncontrol.client.createworkspaceparameters.aspx
    # e.g. $workspaceParameters.Comment = ""
    # e.g. $workspaceParameters.Computer = ""
    # e.g. $workspaceParameters.Location = [Microsoft.TeamFoundation.VersionControl.Common.WorkspaceLocation]::Local
    
    $workspace = $vcs.CreateWorkspace($workspaceParameters)
    
    # Add any working folders that you would defined below
    # e.g. $workspace.Map("$/", "C:\ProjectDirectory")
    

    所有可以定义的参数都列在这个msdn文章中: http://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.versioncontrol.client.createworkspaceparameters.aspx 与tf.exe相比,此方法的一个优点是,您可以显式定义工作区位置(即服务器或本地),并且对创建时定义的映射具有更多的控制权。

    您应该能够调整适当的设置并将此代码转储到任何*.ps1文件中。

        3
  •  0
  •   BubbleSort    16 年前

    您还可以将工作区映射从一个工作区复制并粘贴到另一个工作区。

    1. 编辑模板工作区。
    2. 选择要复制的映射。
    3. 按CTRL+C
    4. 创建新工作区(或编辑现有工作区)
    5. 选项卡进入工作文件夹网格。
    6. 按CTRL+V

    您还可以将映射粘贴到记事本中,更新它们,然后将它们复制并粘贴回工作区编辑器中。

    您将在记事本中看到的格式: :

    例子: $/teamproj1/trunk/:c:\tfs\workingfolder\

        4
  •  0
  •   Dzmitry Lahoda Adam    10 年前

    可以开始修改此f脚本:

    ///
    /// Creates new local TFS workspace for specified folder and branch conventionally naming locals with server names
    /// 
    // Install Team Explorer
    #r "Microsoft.TeamFoundation.Client"
    #r "Microsoft.TeamFoundation.VersionControl.Common"
    #r "Microsoft.TeamFoundation.VersionControl.Client"
    
    open Microsoft.TeamFoundation.VersionControl
    open Microsoft.TeamFoundation.VersionControl.Common
    open Microsoft.TeamFoundation.VersionControl.Client
    open Microsoft.TeamFoundation.Client
    
    //change these
    let tfsUrl = "http://tfsserver:8080/collection"
    let branch ="dev_features"
    let folder = "/FeaturesProject/"
    
    
    //conventions
    let workspaceName  = System.Environment.MachineName+"_"+branch
    let localFolder = "D:"+folder+branch
    let serverFolder = "$/"+folder+branch
    
    // actions
    let tfs = TeamFoundationServerFactory.GetServer(tfsUrl)
    let vcs = tfs.GetService<VersionControlServer>()
    let workspaceParameters = Client.CreateWorkspaceParameters(workspaceName)
    workspaceParameters.Folders <- [|  WorkingFolder(serverFolder,localFolder )  |]
    workspaceParameters.Location <-   System.Nullable<WorkspaceLocation>(WorkspaceLocation.Local)
    let workspace = vcs.CreateWorkspace(workspaceParameters)
    
    //run
    workspace  |> ignore