From 03ddd0e540d196f92b220a8a8c9cdc6d22cd11c9 Mon Sep 17 00:00:00 2001
From: Orgad Shaneh <orgad.shaneh@audiocodes.com>
Date: Mon, 27 Aug 2012 10:26:53 +0300
Subject: [PATCH] ClearCase: Trust lsactivity ordering for rebase/deliver
 activities

lsactivity outputs activities sorted by creation time. Latest rebase/deliver
will be last in this output, so no need to compare it to previous values.

Also place rebase and deliver activities last in the activities list.

Change-Id: I4c90d4210751101a5f53b6d85ff3d0e86bb28d08
Reviewed-by: Knut Petter Svendsen <knutpett@pvv.org>
Reviewed-by: Tobias Hunger <tobias.hunger@nokia.com>
---
 src/plugins/clearcase/clearcaseplugin.cpp | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp
index 26953cab715..c29f23de2ed 100644
--- a/src/plugins/clearcase/clearcaseplugin.cpp
+++ b/src/plugins/clearcase/clearcaseplugin.cpp
@@ -1542,31 +1542,31 @@ QList<QStringPair> ClearCasePlugin::ccGetActivities() const
     // Maintain latest deliver and rebase activities only
     QStringPair rebaseAct;
     QStringPair deliverAct;
-    QStringList args(QLatin1String("lsactivity"));
     // Retrieve all activities
+    QStringList args(QLatin1String("lsactivity"));
     args << QLatin1String("-fmt") << QLatin1String("%n\\t%[headline]p\\n");
     const QString response = runCleartoolSync(currentState().topLevel(), args);
     QStringList acts = response.split(QLatin1Char('\n'), QString::SkipEmptyParts);
     foreach (QString activity, acts) {
         QStringList act = activity.split(QLatin1Char('\t'));
-        // exclude deliver/rebase activities (and include only the latest ones)
-        QRegExp deliverRebase(QLatin1String("deliver\\.|rebase\\."));
         if (act.size() >= 2)
         {
             QString actName = act.at(0);
-            if (actName.indexOf(deliverRebase) == -1)
-                result.append(QStringPair(actName, act.at(1).trimmed()));
-            else if ((actName.at(0) == QLatin1Char('r')) && (actName > rebaseAct.first))
+            // include only latest deliver/rebase activities. Activities are sorted
+            // by creation time
+            if (actName.startsWith(QLatin1String("rebase.")))
                 rebaseAct = QStringPair(actName, act.at(1));
-            else if ((actName.at(0) == QLatin1Char('d')) && (actName > deliverAct.first))
+            else if (actName.startsWith(QLatin1String("deliver.")))
                 deliverAct = QStringPair(actName, act.at(1));
+            else
+                result.append(QStringPair(actName, act.at(1).trimmed()));
         }
     }
+    qSort(result);
     if (!rebaseAct.first.isEmpty())
         result.append(rebaseAct);
     if (!deliverAct.first.isEmpty())
         result.append(deliverAct);
-    qSort(result);
     return result;
 }
 
-- 
GitLab