在TFS(我们正在使用2012)中,为什么默认将源文件夹转换为分支?

我真的不认为源是一个分支.这有什么优点/缺点?
我有一个TFS 2010团队项目,我刚刚接手了.分支层次结构是Dev是Test的子项,Test是Main的子项例如
Main
----Test
--------Dev
然而,在过去的某些时候,有人在Dev和Main之间进行了毫无根据的合并.这引起了很大的混乱,因为开发人员现在意外地将代码直接从Dev合并到Main.
当代码遵循正确的进程并从Test合并到Main时,这会导致无法预料的合并冲突,并且可能会创建一个未经测试的代码被提升到Main分支的场景.
有没有办法在不删除分支的情况下删除Dev和Main之间的分支关系?我想保留Dev分支及其与Test的关系.只需删除与Main的关系.
我试图将分支转换为文件夹以删除关系,但这不起作用.我可以重新表达分支,但似乎没有任何明显的方法可以完全消除这种关系.我可以将分支转换为文件夹,然后删除它并从Test重新分配,但这将意味着确保代码库是同步的,这可能很难实现.
道歉,这几乎肯定是这个问题的重复,但由于没有得到回答,我将再试一次.
我正在尝试构建一个工具,它允许我在TFS上查看排队或运行的所有构建.
其中一个要求是能够查看正在运行构建的构建服务器.不推荐使用IQueuedBuildsView中的所有"BuildAgent"属性和方法,并抛出未实现的异常.有很多方法可以查询代理人,但是在你做到这一点之前你需要代理人uri或者名字,我觉得我处在鸡蛋和鸡蛋的情况下.
有谁知道如何找到正在运行的构建的构建服务器名称?我的下面的代码段可能会有所帮助.
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Net;
using System.Text;
using Microsoft.TeamFoundation.Server;
using Microsoft.TeamFoundation.Build.Client;
using Microsoft.TeamFoundation.VersionControl.Client;
using Microsoft.TeamFoundation.Framework.Client;
using Microsoft.TeamFoundation.Framework.Common;
using Microsoft.TeamFoundation.Client;
namespace TeamFoundationServerTools
{
public static class TeamBuildData
{
public static void Main()
{
Uri teamFoundationServerUri = new Uri("http://tfs:8080/tfs");
Uri teamFoudationServerProjectCollectionUri = new Uri("http://tfs:8080/tfs/collection");
string teamFoundationServerName = "tfs";
string teamFoundationServerProjectCollectionName = string.Empty;
string teamFoundationServerProjectName = string.Empty;
try
{
Dictionary<string, Uri> collections = new Dictionary<string, Uri>();
if (string.IsNullOrEmpty(teamFoundationServerProjectCollectionName))
{
DetermineCollections(teamFoundationServerUri, collections);
} …Run Code Online (Sandbox Code Playgroud)