Как программно определить, к какой ветке относится этот файл? Я потратил 3 часа, пытаясь понять это, но безрезультатно. Я нашел эту тему, но это не то, что мне нужно: Как программно получить информацию о ветках в TFS?
Вопрос
TFS 2010 программно определяет ветвь элемента
- Вы имеете в виду файл в своей рабочей области или файл в пути системы управления версиями? John Saunders 08.08.2011
- Возможно, я опишу свою проблему более подробно, я хочу иметь пользовательскую политику, которая определяет, все ли файлы в наборе изменений поступают из одной ветки, поэтому, отвечая на ваш вопрос, я не думаю, что это действительно имеет значение, поскольку у PendingChange есть пути бота, LocalItem - путь к рабочей области, ServerItem - путь к системе управления версиями. Krzysiek 09.08.2011
- Спасибо. Пожалуйста, добавьте это описание к вашему вопросу. Чем больше информации вы предоставите, тем лучше. Однако я обеспокоен тем, что вы хотите, чтобы все файлы в наборе изменений исходили из точки ветвления, расположенной выше в дереве системы управления версиями, чем все они. Ваш исходный контроль начинается с $/Main и оттуда ветвится? John Saunders 09.08.2011
Ответы
Ответ 1 · рейтинг 4 · Christian
У меня была очень похожая проблема. Я нашел решение, вот код:
...
// 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! :)
}
}
...
Я надеюсь, что это поможет кому-то с этой проблемой, я думаю, что оп уже решил ее (прошло некоторое время с тех пор, как он задал вопрос).
Ответ 2 · рейтинг 2 · Betty
Единственный способ, который я нашел для получения информации о ветке для определенного файла, - это использовать VersionControlServer.QueryBranchObjects для запроса каждой возможной ветки в структуре папок вплоть до корня.
Однако вы можете сделать несколько предположений и сделать это довольно эффективно, поскольку ветка не может находиться в другой ветке в tfs 2010. Найдите общее подмножество путей всех проверяемых файлов и проверьте их, если ни одна из них не является ветвью, то они не относятся к одной ветке.
Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.