Я создаю инструмент TFS, который будет получать «информацию о наборе изменений» с сервера TFS.
Теперь я хочу предоставить «Браузер TFS», чтобы пользователь мог просматривать, из какой «ветви / папки» он хочет получить информацию.
Я использую элемент управления TreeView и функцию GetItems для получения пути элементов из TFS:
private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
e.Node.Nodes.RemoveAt(0);
RecursionType recursion = RecursionType.OneLevel;
Item[] items = null;
// Get the latest version of the information for the items.
ItemSet itemSet = sourceControl.GetItems(e.Node.Tag.ToString(), recursion);
items = itemSet.Items;
foreach (Item item in items)
{
if (item.ServerItem == e.Node.Tag.ToString()) //Skip self
continue;
string filename = Path.GetFileName(item.ServerItem);
if (Path.GetExtension(filename) == "")
{
TreeNode node = new TreeNode(filename, new TreeNode[] { new TreeNode() });
node.Tag = item.ServerItem;
e.Node.Nodes.Add(node);
}
}
}
Приведенный ниже код демонстрирует, что после нажатия кнопки «развернуть» на узле приложение «запросит» элементы, которые находятся ниже текущей «ветви» (e).
Однако я не хочу включать файлы в браузер. В качестве быстрой и грязной проверки я проверяю, имеет ли «путь» расширение, и если нет, предположим, что это каталог, и покажу его. Все было хорошо, пока я не обнаружил, что у нас есть папка с именем "v1.1".
Есть решение. Я могу повторно вызвать GetItems и проверить его содержимое. По данным MSDN:
Если аргумент пути является файлом,
возвращает набор Предметов, которые содержат
просто этот файл. Если путь
папка, возвращает набор элементов, которые
содержат все элементы в этой папке. Если
путь содержит подстановочный знак
символ, возвращает набор предметов в
указанная папка, соответствующая
подстановочные.
Однако каждый вызов GetItems занимает примерно секунду, а если папка содержит несколько файлов, «расширение» узла занимает вечность.
Итак, есть ли способ просто получить все "папки" из TFS? Или любая другая идея, как проверить, является ли путь папкой или файлом?
Спасибо!