Как программно определить, к какой ветке относится этот файл? Я потратил 3 часа, пытаясь понять это, но безрезультатно. Я нашел эту тему, но это не то, что мне нужно: Как программно получить информацию о ветках в TFS?
TFS 2010 программно определяет ветвь элемента
comment
Вы имеете в виду файл в своей рабочей области или файл в пути системы управления версиями?
- person John Saunders   schedule 08.08.2011
comment
Возможно, я опишу свою проблему более подробно, я хочу иметь пользовательскую политику, которая определяет, все ли файлы в наборе изменений поступают из одной ветки, поэтому, отвечая на ваш вопрос, я не думаю, что это действительно имеет значение, поскольку у PendingChange есть пути бота, LocalItem - путь к рабочей области, ServerItem - путь к системе управления версиями.
- person Krzysiek   schedule 09.08.2011
comment
Спасибо. Пожалуйста, добавьте это описание к вашему вопросу. Чем больше информации вы предоставите, тем лучше. Однако я обеспокоен тем, что вы хотите, чтобы все файлы в наборе изменений исходили из точки ветвления, расположенной выше в дереве системы управления версиями, чем все они. Ваш исходный контроль начинается с $/Main и оттуда ветвится?
- person John Saunders   schedule 09.08.2011
Ответы (2)
У меня была очень похожая проблема. Я нашел решение, вот код:
...
// get all branches
VersionControlServer vcs = tfs.GetService(typeof(VersionControlServer));
BranchObject[] allBranches = vcs.QueryRootBranchObjects(RecursionType.Full);
string myItem = "$/My Project/some Path including the branch/myFile.txt";
foreach(BranchObject branch in allBranches)
{
if(myItem.Contains(branch.Properties.RootItem.Item))
{
// branch is the branch to which the item belongs! :)
}
}
...
Я надеюсь, что это поможет кому-то с этой проблемой, я думаю, что оп уже решил ее (прошло некоторое время с тех пор, как он задал вопрос).
person
Christian
schedule
27.01.2012
Единственный способ, который я нашел для получения информации о ветке для определенного файла, — это использовать VersionControlServer.QueryBranchObjects для запроса каждой возможной ветки в структуре папок вплоть до корня.
Однако вы можете сделать несколько предположений и сделать это довольно эффективно, поскольку ветка не может находиться в другой ветке в tfs 2010. Найдите общее подмножество путей всех проверяемых файлов и проверьте их, если ни одна из них не является ветвью, то они не относятся к одной ветке.
person
Betty
schedule
24.10.2011