Perforce: Reduced delay before submit dialog is shown

Qt Creator's Perforce plugin uses "fstat" command to gather the files in
the project.

This takes ~40 seconds on a 12.000 files project.

By using "files" command the operation of gathering the files in the
project takes ~1 second.

Change-Id: Id8257d33a5dda2e06f0f365d5e3b30a49a094483
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
Reviewed-by: Alexander Drozdov <adrozdoff@gmail.com>
This commit is contained in:
Cristian Adam
2015-07-13 13:37:57 +02:00
committed by Tobias Hunger
parent 0a0a620489
commit dffd71f4f1

View File

@@ -635,20 +635,19 @@ void PerforcePlugin::startSubmitProject()
m_commitMessageFileName = saver.fileName();
args.clear();
args << QLatin1String("fstat");
args << QLatin1String("files");
args.append(perforceRelativeProjectDirectory(state));
PerforceResponse fstatResult = runP4Cmd(state.currentProjectTopLevel(), args,
PerforceResponse filesResult = runP4Cmd(state.currentProjectTopLevel(), args,
RunFullySynchronous|CommandToWindow|StdErrToWindow|ErrorToWindow);
if (fstatResult.error) {
if (filesResult.error) {
cleanCommitMessageFile();
return;
}
QStringList fstatLines = fstatResult.stdOut.split(QLatin1Char('\n'));
QStringList filesLines = filesResult.stdOut.split(QLatin1Char('\n'));
QStringList depotFileNames;
foreach (const QString &line, fstatLines) {
if (line.startsWith(QLatin1String("... depotFile")))
depotFileNames.append(line.mid(14));
foreach (const QString &line, filesLines) {
depotFileNames.append(line.left(line.lastIndexOf(QRegExp(QLatin1String("#[0-9]+\\s-\\s")))));
}
if (depotFileNames.isEmpty()) {
VcsOutputWindow::appendWarning(tr("Project has no files"));