Show perforce depot in C # tree structure

I am not an expert in P4.NET, and I would like to show perforce depot in treeview (C # windowsform application) ...

* "p4 dirs" to get the entire depot => p4 dirs "// *", for example, this can give depot1 depot2..etc

P4Connection p4 = new P4Connection();
p4.Connect();
P4RecordSet tab1 = p4.Run("dirs","//depot/*"); // to get folders in depot
foreach (P4Record a in tab1 )
{
  richTextBox1.Text += (a["dir"]) + "\n";// show the results in richTextBox

}

* To get a list of files in a directory, run fstat => p4 fstat "// depot1 / *"

P4RecordSet tab2 = p4.Run("fstat","//depot/your_folder/*"); // to get files existing in your_folder
foreach (P4Record b in tab2 )
{
  richTextBox1.Text += (b["depotFile"]) + "\n";// show the results in richTextBox

}

now how to use this code to create a tree? Any help would be appreciated.

+3
source share
1 answer

In the code below, only hardcoded storage will be supported, but it would not be difficult to continue browsing all the warehouses on the Perforce server using the "depots" command.

public void PopulateTreeview()
{
    TreeNode depotNode = new TreeNode("//depot");

    P4Connection p4 = new P4Connection();
    p4.Connect();

    ProcessFolder(p4, "//depot", depotNode);

    treeView.Nodes.Add(depotNode);
}

public void ProcessFolder(P4Connection p4, string folderPath, TreeNode node)
{
    P4RecordSet folders = p4.Run("dirs", folderPath + "/*");
    foreach(P4Record folder in folders)
    {
        string newFolderPath = folder["dir"];
        string[] splitFolderPath = newFolderPath.Split('/');
        string folderName = splitFolderPath[splitFolderPath.Length - 1];

        TreeNode folderNode = new TreeNode(folderName);
        ProcessFolder(p4, newFolderPath, folderNode);

        node.Nodes.Add(folderNode);
    }

    P4RecordSet files = p4.Run("fstat", folderPath + "/*");
    foreach(P4Record file in files)
    {
        string[] splitFilePath = file["depotFile"].Split('/');
        string fileName = splitFilePath[splitFilePath.Length - 1];

        TreeNode fileNode = new TreeNode(fileName);
        node.Nodes.Add(fileNode);
    }
}
+1
source

All Articles