]> cloud.milkyroute.net Git - dolphin.git/commitdiff
- indicate whether the server provides an updated version of a file
authorPeter Penz <peter.penz19@gmail.com>
Wed, 29 Jul 2009 07:38:57 +0000 (07:38 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Wed, 29 Jul 2009 07:38:57 +0000 (07:38 +0000)
- 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

src/revisioncontrolplugin.cpp

index 3fc562eae47c37e56743a3bd0acb626e7cb27fae..ff2425aab3847b15445bffa04b1e5e2200ff9ec0 100644 (file)
@@ -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;
-
-        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;
-        }
+    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:
+                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;
 }