diff options
| author | Peter Penz <[email protected]> | 2009-07-29 07:38:57 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2009-07-29 07:38:57 +0000 |
| commit | 11b2a3f61c8c9ffa2b6477516112361322f9b926 (patch) | |
| tree | 0b11c720b6aa9849d82c1d465ec3ddf102c829ae /src | |
| parent | d4ba16b900782cbc5688e67b07de02abe1866c39 (diff) | |
- indicate whether the server provides an updated version of a file
- QProcess::waitForReadyRead() must be invoked until it returns false. BTW: this method is invoked inside a non-GUI-thread and hence does not block Dolphin
svn path=/trunk/KDE/kdebase/apps/; revision=1004044
Diffstat (limited to 'src')
| -rw-r--r-- | src/revisioncontrolplugin.cpp | 47 |
1 files changed, 25 insertions, 22 deletions
diff --git a/src/revisioncontrolplugin.cpp b/src/revisioncontrolplugin.cpp index 3fc562eae..ff2425aab 100644 --- a/src/revisioncontrolplugin.cpp +++ b/src/revisioncontrolplugin.cpp @@ -102,35 +102,38 @@ bool SubversionPlugin::beginRetrieval(const QString& directory) Q_ASSERT(directory.endsWith('/')); QStringList arguments; - arguments << "status" << directory; + arguments << "status" << "--show-updates" << directory; QProcess process; process.start("svn", arguments); - if (!process.waitForReadyRead()) { - return false; - } - - char buffer[1024]; - while (process.readLine(buffer, sizeof(buffer)) > 0) { - RevisionState state = NormalRevision; + while (process.waitForReadyRead()) { + char buffer[1024]; + while (process.readLine(buffer, sizeof(buffer)) > 0) { + RevisionState state = NormalRevision; + QString filePath(buffer); - switch (buffer[0]) { - case '?': state = UnversionedRevision; break; - case 'M': state = LocallyModifiedRevision; break; - case 'A': state = AddedRevision; break; - case 'D': state = RemovedRevision; break; - case 'C': state = ConflictingRevision; break; - default: break; - } + switch (buffer[0]) { + case '?': state = UnversionedRevision; break; + case 'M': state = LocallyModifiedRevision; break; + case 'A': state = AddedRevision; break; + case 'D': state = RemovedRevision; break; + case 'C': state = ConflictingRevision; break; + default: + if (filePath.contains('*')) { + state = UpdateRequiredRevision; + } + break; + } - QString filePath(buffer); - int pos = filePath.indexOf('/'); - const int length = filePath.length() - pos - 1; - filePath = filePath.mid(pos, length); - if (!filePath.isEmpty()) { - m_revisionInfoHash.insert(filePath, state); + int pos = filePath.indexOf('/'); + const int length = filePath.length() - pos - 1; + filePath = filePath.mid(pos, length); + if (!filePath.isEmpty()) { + m_revisionInfoHash.insert(filePath, state); + } } } + m_revisionInfoKeys = m_revisionInfoHash.keys(); return true; } |
