Ich möchte über das commandline programm svn auf ein repository zugreifen.
Da ich nicht per netzwerkfreigabe darauf zugreifen darf, muss ich das über den apache per http machen.
Die hierachie im repository ist folgende
Code: Alles auswählen
Projekt1/
release1
R1
src
img
bild1.jpg
R2
R3
Projekt2/
...
Projekt3/
...
Ich möchte das ganze in ein QTreeWidget einlesen, bitte um hilfe mit der rekursion.
Code: Alles auswählen
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
readDir("http://localhost/svn/qt/");
}
Code: Alles auswählen
void MainWindow::readDir(const QString &path, QTreeWidgetItem *parent)
{
if(path.isEmpty())
return;
QString svn_call = QString("svn list ").append(path);
qDebug(qPrintable(svn_call));
QProcess p;
p.start(svn_call, QIODevice::ReadOnly);
if(!p.waitForStarted())
qDebug("ERROR_START");
if(!p.waitForFinished())
qDebug("ERROR_STOP");
QStringList lst = QString(p.readAll()).split("\n");
QString entry;
foreach(entry, lst)
{
if(!entry.isEmpty())
{
QTreeWidgetItem *itm = new QTreeWidgetItem(QStringList()<<entry);
/*
if(entry.trimmed().endsWith("/"))
itm->setIcon(0, QIcon(":/tree/img/folder.png"));
else
itm->setIcon(0, QIcon(":/tree/img/empty.png"));
*/
if(parent == 0)
ui->treeWidget->addTopLevelItem(itm);
else
parent->addChild(itm);
QString nPath = path;
nPath.append(entry);
readDir(nPath, itm);
}
}
}