better repository history
authorClaus Gittinger <cg@exept.de>
Tue, 12 Sep 2006 16:13:16 +0200
changeset 1784 7afd92336ac1
parent 1783 e72b11658c9f
child 1785 cb115713a075
better repository history
AbstractSourceCodeManager.st
--- a/AbstractSourceCodeManager.st	Tue Sep 12 14:29:52 2006 +0200
+++ b/AbstractSourceCodeManager.st	Tue Sep 12 16:13:16 2006 +0200
@@ -2046,31 +2046,44 @@
     "Created: 19.4.1996 / 17:24:34 / cg"
 !
 
-writeHistoryLogSince:timeGoal filterSTSources:filter filterUser:userFilter filterRepository:repositoryFilter filterModules:moduleFilter to:aStream
+writeHistoryLogSince:timeGoal filterSTSources:filter filterUser:userFilter filterRepository:repositoryFilter filterModules:moduleFilter filterProjects:projectFilterArg to:aStream
     "send a full historyLog to some stream.
      This walks over all possible repository roots."
 
-    |recordType fileName user date time rev pkgDir 
-     clsName cls clsRev goalString prevUser  
-     revInfo cvsRoot prevCvsRoot|
+    |projectFilter goalString prevUser prevCvsRoot |
+
+    projectFilter := projectFilterArg isEmptyOrNil ifTrue:nil ifFalse:projectFilterArg.
 
     goalString := ''.
+    projectFilter notNil ifTrue:[
+        projectFilter size == 1 ifTrue:[
+            goalString := goalString , 'of ',projectFilter first.
+        ] ifFalse:[
+            projectFilter size == 2 ifTrue:[
+                goalString := goalString , 'of ',projectFilter first,' and ',projectFilter second.
+            ] ifFalse:[
+                goalString := goalString , 'of ',projectFilter size printString,' projects'.
+            ].
+        ].
+        goalString := goalString,' '
+    ].
     (timeGoal notEmptyOrNil) ifTrue:[
-        goalString := ' since ' , timeGoal.
+        goalString := goalString , 'since ' , timeGoal,' '.
     ].
     userFilter notNil ifTrue:[
         userFilter isString ifTrue:[
-            goalString := ', for user ' , userFilter
+            goalString := 'by user ',userFilter
         ] ifFalse:[
             userFilter size == 1 ifTrue:[
-                goalString := ', for user ' , (userFilter first) 
+                goalString := 'by user ',(userFilter first) 
             ] ifFalse:[
-                goalString := ', for user ' , (userFilter first) , '...' , (userFilter last) 
+                goalString := 'by users ',(userFilter first),'...',(userFilter last) 
             ]
         ].
+        goalString := goalString,' '.
     ].
 
-    aStream nextPutLine:'**** source repository history' , goalString , ' ****'.
+    aStream nextPutLine:'**** repository history ' , goalString , '****'.
     aStream cr.
 
     self 
@@ -2080,66 +2093,95 @@
         filterRepository:repositoryFilter 
         filterModules:moduleFilter
         inTo:[:info |
-            user := info at:#user ifAbsent:'?'.
-            recordType := info at:#cvsRecordType ifAbsent:'?'.
-            fileName := info at:#fileName ifAbsent:'?'.
-            date := info at:#date ifAbsent:'?'.
-            time := info at:#time ifAbsent:'?'.
-            rev := info at:#revision ifAbsent:'?'.
+            |user recordType fileName date time rev pkgDir 
+             module directory pkg
+             clsName cvsRoot cls clsRev revInfo|
+
             pkgDir := info at:#directory ifAbsent:'?'.
-            clsName := info at:#className ifAbsent:'?'.
-            cvsRoot := info at:#cvsRoot ifAbsent:'?'.
-
-            cvsRoot ~= prevCvsRoot ifTrue:[
-                aStream cr.
-                aStream nextPutLine:'>>>> repository: ' , cvsRoot , ' <<<<'.
-                aStream cr; cr.
-                aStream nextPutLine:'  date  time        user        rev     file                     module/package'.
-                prevUser := nil.
-                prevCvsRoot := cvsRoot.
-            ].
-            prevUser ~= user ifTrue:[
-                aStream cr.
-                prevUser := user.
-            ].
-            aStream nextPutAll:recordType; space; 
-                    nextPutAll:(date printString paddedTo:5); space; nextPutAll:(time printString paddedTo:5); space;
+            module := pkgDir upTo:$/.
+            directory := pkgDir copyFrom:(module size+2).
+            pkg := module,':',directory.
+
+            (projectFilter isEmptyOrNil
+            or:[ projectFilter includes:pkg ]) ifTrue:[
+
+                user := info at:#user ifAbsent:'?'.
+                recordType := info at:#cvsRecordType ifAbsent:'?'.
+                fileName := info at:#fileName ifAbsent:'?'.
+                date := info at:#date ifAbsent:'?'.
+                time := info at:#time ifAbsent:'?'.
+                rev := info at:#revision ifAbsent:'?'.
+
+                clsName := info at:#className ifAbsent:'?'.
+                cvsRoot := info at:#cvsRoot ifAbsent:'?'.
+
+                cvsRoot ~= prevCvsRoot ifTrue:[
+                    aStream cr.
+                    aStream nextPutLine:'>>>> repository: ' , cvsRoot , ' <<<<'.
+                    aStream cr; cr.
+                    aStream nextPutLine:'     Date    Time        User    Rev    File                           Package'.
+                    prevUser := nil.
+                    prevCvsRoot := cvsRoot.
+                ].
+                prevUser ~= user ifTrue:[
+                    aStream cr.
+                    prevUser := user.
+                ].
+                aStream 
+                    nextPutAll:recordType; space; 
+                    nextPutAll:(date printString paddedTo:10); space; nextPutAll:(time printString paddedTo:5); space;
                     nextPutAll:(user leftPaddedTo:10); space;             
-                    nextPutAll:(rev decimalPaddedTo:8 and:3 at:$. withLeft:(Character space) right:nil); tab;              
-                    nextPutAll:(fileName paddedTo:24); space;                 
-                    nextPutAll:(pkgDir paddedTo:20).
-
-            "/
-            "/ for your convenience:
-            "/  check what the actual version is in the image
-            "/
-            clsName notNil ifTrue:[
-                revInfo := nil.
-                cls := Smalltalk classNamed:clsName.
-                (cls notNil and:[(clsRev := cls revision) notNil]) ifTrue:[
-                    rev ~= clsRev ifTrue:[
-                        revInfo := (' current: ' , clsRev)
-                    ]
-                ] ifFalse:[
-                    cls isNil ifTrue:[
-                        revInfo := (' current: ** none **')
+                    nextPutAll:(rev decimalPaddedTo:8 and:4 at:$. withLeft:(Character space) right:nil); tab;              
+                    nextPutAll:(fileName paddedTo:30); space;                 
+                    nextPutAll:pkg.
+
+                "/
+                "/ for your convenience:
+                "/  check what the actual version is in the image
+                "/
+                clsName notNil ifTrue:[
+                    revInfo := nil.
+                    cls := Smalltalk classNamed:clsName.
+                    (cls notNil and:[(clsRev := cls revision) notNil]) ifTrue:[
+                        rev ~= clsRev ifTrue:[
+                            revInfo := (' current: ' , clsRev)
+                        ]
                     ] ifFalse:[
-                        cls isLoaded ifTrue:[
-                            revInfo := (' current: ** no revision info **')
+                        cls isNil ifTrue:[
+                            revInfo := (' current: ** none **')
                         ] ifFalse:[
-                            revInfo := (' current: ** not loaded **')
-                        ]    
-                    ]
+                            cls isLoaded ifTrue:[
+                                revInfo := (' current: ** no revision info **')
+                            ] ifFalse:[
+                                revInfo := (' current: ** not loaded **')
+                            ]    
+                        ]
+                    ].
+                    revInfo notNil ifTrue:[
+                        aStream nextPutAll:revInfo
+                    ].
                 ].
-                revInfo notNil ifTrue:[
-                    aStream nextPutAll:revInfo
-                ].
+                aStream cr                              
             ].
-            aStream cr                              
         ].
 
-    "Modified: / 28.9.1998 / 16:47:08 / cg"
-    "Created: / 17.1.2001 / 13:14:57 / cg"
+    "Created: / 12-09-2006 / 15:18:35 / cg"
+!
+
+writeHistoryLogSince:timeGoal filterSTSources:filter filterUser:userFilter filterRepository:repositoryFilter filterModules:moduleFilter to:aStream
+    "send a full historyLog to some stream.
+     This walks over all possible repository roots."
+
+    self
+        writeHistoryLogSince:timeGoal 
+        filterSTSources:filter 
+        filterUser:userFilter 
+        filterRepository:repositoryFilter 
+        filterModules:moduleFilter 
+        filterProjects:nil 
+        to:aStream
+
+    "Modified: / 12-09-2006 / 15:19:11 / cg"
 !
 
 writeHistoryLogSince:timeGoal filterSTSources:filter filterUser:userFilter filterRepository:repositoryFilter to:aStream
@@ -2316,7 +2358,7 @@
 !AbstractSourceCodeManager class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.190 2006-08-29 14:00:17 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.191 2006-09-12 14:13:16 cg Exp $'
 ! !
 
 AbstractSourceCodeManager initialize!