┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2009-07-29 07:38:57 +0000
committerPeter Penz <[email protected]>2009-07-29 07:38:57 +0000
commit11b2a3f61c8c9ffa2b6477516112361322f9b926 (patch)
tree0b11c720b6aa9849d82c1d465ec3ddf102c829ae /src
parentd4ba16b900782cbc5688e67b07de02abe1866c39 (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.cpp47
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;
}