Merge jv
authorHG Automerge
Wed, 25 Jan 2017 17:16:53 +0000
branchjv
changeset 4199 89ebbba27db6
parent 4198 533d77906f5b (current diff)
parent 4193 6a4b646749ea (diff)
child 4207 9eccfc1cbc8d
Merge
AbstractSourceCodeManager.st
ProjectChecker.st
SourceCodeManagerUtilities.st
SourceCodeManagerUtilitiesForContainerBasedManagers.st
--- a/.hgtags	Mon Jan 23 13:13:27 2017 +0000
+++ b/.hgtags	Wed Jan 25 17:16:53 2017 +0000
@@ -43,6 +43,7 @@
 892db18f8b482d6aaf0f728a4d436ab4965fae64 rel5_2_8
 91cb79a651aac697d484aad12987c5b0d0b57f58 expecco_1_3_4
 96c1701f54904b8d7ee653a24450375d81b53c2e expecco_2_10_0
+96c1701f54904b8d7ee653a24450375d81b53c2e expecco_2_11_0
 b54eeae38942103e87cdfaf3110a0228c8827258 testTagging
 b9e4b4465a2c3cd844ac12cedcab8efc84fde6f3 rel3_4_1_1
 b9e4b4465a2c3cd844ac12cedcab8efc84fde6f3 rel3_4_1_2
--- a/AbstractSourceCodeManager.st	Mon Jan 23 13:13:27 2017 +0000
+++ b/AbstractSourceCodeManager.st	Wed Jan 25 17:16:53 2017 +0000
@@ -2878,6 +2878,21 @@
     "Modified: / 20-08-2011 / 14:56:04 / cg"
 !
 
+oldestRevisionLogEntryOf:aClass
+    "return the oldest revisions log found in the repository.
+     Return nil on failure.
+     Can be used to determine the time of initial checkin or the original author"
+
+    |log|
+    
+    log := self revisionLogOf:aClass.
+    ^  (log at:#revisions) last.
+    
+    "
+     SourceCodeManager oldestRevisionLogEntryOf:Array       
+    "
+!
+
 removeContainer: container inModule: module directory: directory
     "remove a container"
 
--- a/ProjectChecker.st	Mon Jan 23 13:13:27 2017 +0000
+++ b/ProjectChecker.st	Wed Jan 25 17:16:53 2017 +0000
@@ -1,5 +1,3 @@
-"{ Encoding: utf8 }"
-
 "
  COPYRIGHT (c) 2006 by eXept Software AG
               All Rights Reserved
@@ -342,7 +340,7 @@
                 | ns |
 
                 ns := cls nameSpace.
-                (ns ~~ Smalltalk and:[(ns at: poolName asSymbol) notNil]) ifTrue:[
+                (ns == Smalltalk or:[(ns at: poolName asSymbol) isNil]) ifTrue:[
                     self addProblem:
                         (ProjectProblem newClassUsesPoolButItIsNotASharedPool
                                 className: cls name;
--- a/SourceCodeManagerUtilities.st	Mon Jan 23 13:13:27 2017 +0000
+++ b/SourceCodeManagerUtilities.st	Wed Jan 25 17:16:53 2017 +0000
@@ -4214,7 +4214,7 @@
             |tag rev|
 
             (tag := tagHolder value) notEmptyOrNil ifTrue:[
-                LastTag := tag.
+                "/ LastTag := tag.
                 rev := symbolicNames at:tag.
                 rev ~= revisionHolder value ifTrue:[
                     lockChange := true.
@@ -4261,7 +4261,12 @@
     AbortAllOperationWantedQuery query ifTrue:[
         (box addAbortButtonLabelled:'Cancel all') action:[AbortAllSignal raise].
     ].
-
+    LastTag notEmptyOrNil ifTrue:[
+        (symbolicNames notNil and:[symbolicNames includesKey:LastTag]) ifTrue:[
+            tagHolder value:LastTag.
+        ].
+    ].
+    
     box showAtPointer.
 
     box accepted ifFalse:[
@@ -4270,6 +4275,8 @@
     ].
     box destroy.
 
+    LastTag := tagHolder value.
+    
     "/ it is not a good idea to return the tag-name here,
     "/ because it may get cached later when the source is fetched,
     "/ and the tag could move to another version (making the cached file invalid)
--- a/SourceCodeManagerUtilitiesForContainerBasedManagers.st	Mon Jan 23 13:13:27 2017 +0000
+++ b/SourceCodeManagerUtilitiesForContainerBasedManagers.st	Wed Jan 25 17:16:53 2017 +0000
@@ -15,7 +15,7 @@
 
 SourceCodeManagerUtilities subclass:#SourceCodeManagerUtilitiesForContainerBasedManagers
 	instanceVariableNames:''
-	classVariableNames:''
+	classVariableNames:'LastComparedTag'
 	poolDictionaries:''
 	category:'System-SourceCodeManagement'
 !
@@ -590,28 +590,69 @@
      false, this method may result in user interaction, asking user to select which of the
      newest she wants."
 
-    |dateFormat string dateOrNil symbolicName|
+    |dateFormat string dateOrNil symbolicNameOrNil 
+     someDfnClass knownTags includeSubProjectsHolder
+     packagesIn packagesCompared|
 
+    packagesIn := packages value.
+    
+    "/ being lazy, assume tags are persistent across packages (which they are not required to be...)
+    someDfnClass := ProjectDefinition definitionClassForPackage:packagesIn first.
+    someDfnClass isNil ifTrue:[ someDfnClass := Object projectDefinitionClass ].
+    
+    knownTags := (manager knownTagsFor:someDfnClass) asOrderedCollection sort.
+    
     dateFormat := UserPreferences current dateInputFormat.
-    string := Dialog
-                request:(resources
-                        string:'Compare with version from date (%2) or tag (any other format) (empty for newest):'
-                        with:dateFormat)
-                initialAnswer:(Date today printStringFormat:dateFormat).
+
+    includeSubProjectsHolder := true asValue.
+    
+    Dialog 
+        modifyingBoxWith:[:box |
+            box verticalPanel 
+                add:(CheckBox label:(resources string:'Include Subprojects')
+                              model:includeSubProjectsHolder).
+        ]
+        do:[
+            |suggestion|
 
+            suggestion := LastComparedTag.
+            suggestion isNil ifTrue:[ suggestion := Date today printStringFormat:dateFormat ].
+            
+            string := Dialog
+                        request:(resources
+                                string:'Compare with version from date (%2) or tag (any other format) (empty for newest):'
+                                with:dateFormat)
+                        initialAnswer:suggestion
+                        list:knownTags.
+        ].
+        
     string isNil ifTrue:[^ self].
     string notEmpty ifTrue:[
         dateOrNil := Date readFrom:string printFormat:dateFormat onError:nil.
         dateOrNil isNil ifTrue:[
-            symbolicName := string
+            symbolicNameOrNil := string
         ].
     ].
+
+    LastComparedTag := symbolicNameOrNil.
     
-    packages value do:[:eachProject |
+    packagesCompared := packagesIn.
+    includeSubProjectsHolder value ifTrue:[
+        packagesCompared := Smalltalk allPackageIDs
+                        select:[:eachPackage |
+                            packagesIn contains:[:p | 
+                                eachPackage = p 
+                                or:[ (eachPackage startsWith:(p,'-'))
+                                or:[ (eachPackage startsWith:(p,':')) ]]
+                            ]
+                        ]    
+    ].
+    
+    packagesCompared value do:[:eachProject |
         dateOrNil notNil ifTrue:[
             self compareProject:eachProject withRepositoryVersionFrom:dateOrNil extensionsOnly:extensionsOnly
         ] ifFalse:[
-            self compareProject:eachProject withRepositoryVersionTaggedAs:symbolicName extensionsOnly:extensionsOnly
+            self compareProject:eachProject withRepositoryVersionTaggedAs:symbolicNameOrNil extensionsOnly:extensionsOnly
         ]
     ].
 
--- a/SystemEnvironment.st	Mon Jan 23 13:13:27 2017 +0000
+++ b/SystemEnvironment.st	Wed Jan 25 17:16:53 2017 +0000
@@ -338,7 +338,10 @@
     <resource: #obsolete>
     "evaluate the argument, aBlock for all keys in the Smalltalk dictionary"
 
+    self obsoleteMethodWarning:'please use #keysDo:'.
     self keysDo:aBlock
+
+    "Modified: / 20-01-2017 / 17:52:47 / stefan"
 !
 
 allMethodCategories