Я закончил тем, что писал мой собственный рекурсивный суб-за специфических требований, которые я имел:
If svnClient.GetList(New Uri(svnUrl), contents) Then
ReDim Preserve node_array(UBound(node_array) + 1)
node_array(UBound(node_array)) = LibraryNode.Text
For Each SubFolder As SvnListEventArgs In contents
Dim MainNode As TreeNode = New TreeNode(SubFolder.Name)
If SubFolder.Name <> "My Top Level Folder" Then
ReDim Preserve node_array(UBound(node_array) + 1)
node_array(UBound(node_array)) = LibraryNode.Text & "\" & MainNode.Text
Dim thelevel As String = LibraryNode.Text & "\" & MainNode.Text
LibraryNode.Nodes.Add(MainNode)
currentlevel = 0
FillTreeViewNodesSVN(SubFolder.Uri.ToString, MainNode, svnClient, thelevel, currentlevel)
End If
Next
End If
выше называет рекурсии суб:
Public Sub FillTreeViewNodesSVN(ByVal SubFolder As String, ByVal MainNode As TreeNode, ByVal svnClient As SvnClient, ByVal thelevel As String, ByVal currentlevel As Integer)
Dim contents As Collection(Of SvnListEventArgs)
Dim files As New List(Of String)()
If svnClient.GetList(New Uri(SubFolder), contents) Then
For Each item As SvnListEventArgs In contents
If item.Uri.ToString <> SubFolder And InStr(item.Uri.ToString, "tag") > 0 Then
Dim SubNode As TreeNode = New TreeNode(item.Name)
ReDim Preserve node_array(UBound(node_array) + 1)
node_array(UBound(node_array)) = thelevel & "\" & SubNode.Text
thelevel = thelevel & "\" & SubNode.Text
currentlevel = currentlevel + 1
If currentlevel < 2 Then
FillTreeViewNodesSVN(item.Uri.ToString, SubNode, svnClient, thelevel, currentlevel)
End If
currentlevel = currentlevel - 1
thelevel = thelevel.Replace("\" & SubNode.Text, "")
End If
Next
End If
End Sub
совместили 2 создать список узлов из папки 2 уровня в глубину ТОЛЬКО в папке TAGS. Это дает мне все развернутые TAG для данного проекта.