--- 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