--- a/NewSystemBrowser.st Tue Feb 08 09:27:00 2011 +0100
+++ b/NewSystemBrowser.st Tue Feb 08 11:10:27 2011 +0100
@@ -39,8 +39,8 @@
DefaultShowSpecialResourceEditors SharedMethodCategoryCache
LastMethodProcessingBlockString LastLoadedPackages
DefaultShortAllClassesInNameSpaceOrganisation LastTag
- DefaultShowPseudoProtocols DefaultShowMultitabMode LastRenamedOld
- LastRenamedNew'
+ LastBaseVersionTag DefaultShowPseudoProtocols
+ DefaultShowMultitabMode LastRenamedOld LastRenamedNew'
poolDictionaries:''
category:'Interface-Browsers-New'
!
@@ -7945,26 +7945,26 @@
translateLabel: true
)
(MenuItem
- enabled: hasSingleRealProjectSelectedHolder
+ enabled: hasProjectSelectedHolder
label: 'Generate'
translateLabel: true
submenu:
(Menu
(
(MenuItem
- enabled: hasProjectSelectedHolder
+ enabled: hasSingleRealProjectSelectedHolder "/ hasProjectSelectedHolder
label: 'Generate Project Definition Methods'
itemValue: projectMenuGenerateProjectDefinitions
translateLabel: true
)
(MenuItem
- enabled: hasProjectSelectedHolder
+ enabled: hasSingleRealProjectSelectedHolder "/ hasProjectSelectedHolder
label: 'Update Project Contents Definition Methods'
itemValue: projectMenuUpdateProjectContentsDefinitions
translateLabel: true
)
(MenuItem
- enabled: hasProjectSelectedHolder
+ enabled: hasSingleRealProjectSelectedHolder "/ hasProjectSelectedHolder
label: 'Regenerate Project Contents Definition Methods'
itemValue: projectMenuRegenerateProjectContentsDefinitions
translateLabel: true
@@ -7979,6 +7979,13 @@
translateLabel: true
showBusyCursorWhilePerforming: true
)
+ (MenuItem
+ enabled: hasProjectSelectedHolder
+ label: 'Patch-Set...'
+ itemValue: projectMenuGeneratePatchSet
+ translateLabel: true
+ showBusyCursorWhilePerforming: true
+ )
)
nil
nil
@@ -8031,7 +8038,7 @@
nil
)
- "Modified: / 27-04-2010 / 12:42:43 / cg"
+ "Modified: / 08-02-2011 / 11:00:43 / cg"
!
projectMenuCVS
@@ -23259,6 +23266,19 @@
!NewSystemBrowser methodsFor:'menu actions-class repository'!
+allKnownTagsInClasses:aCollectionOfClasses
+ |knownTags thisClassesTags|
+
+ knownTags := Set new.
+ aCollectionOfClasses do:[:eachClass |
+ thisClassesTags := eachClass sourceCodeManager knownTagsFor:eachClass.
+ knownTags addAll:thisClassesTags.
+ ].
+ ^ knownTags asSortedCollection.
+
+ "Created: / 08-02-2011 / 09:45:56 / cg"
+!
+
checkInClasses:aCollectionOfClasses withInfo:logInfoOrNil withCheck:doCheck
"check a bunch of classes into the source repository.
If logInfoOrNil isNil, ask for one."
@@ -23789,7 +23809,7 @@
classMenuCompareTwoRepositoryVersions
"open a diff-textView comparing two versions found in the repository."
- |currentClass source1 source2 sources mgr
+ |currentClass source1 source2 mgr
nm rev1 rev2 versionsAreTheSame|
currentClass := self theSingleSelectedLoadedNonMetaclassOrNil.
@@ -23817,35 +23837,8 @@
class:currentClass.
rev2 isNil ifTrue:[^ self].
-self breakPoint:#cg.
- versionsAreTheSame := false.
- sources := (Array with:rev1 with:rev2)
- collect:[:rev |
- |msg stream source|
-
- msg := 'extracting previous %1'.
- stream := mgr getSourceStreamFor:currentClass revision:rev.
- self busyLabel:msg with:rev.
-
- stream isNil ifTrue:[
- self warn:(resources
- string:'Could not extract source of rev %1 from repository'
- with:rev).
- ^ self
- ].
- stream class readErrorSignal handle:[:ex |
- self warn:('read error while reading extracted source\\' , ex description) withCRs.
- stream close.
- ^ self
- ] do:[
- source := stream contents asString.
- ].
- stream close.
- source
- ].
-
- source1 := sources at:1.
- source2 := sources at:2.
+ source1 := self getClassSourceFor:currentClass revision:rev1.
+ source2 := self getClassSourceFor:currentClass revision:rev2.
self busyLabel:'comparing ...' with:nil.
versionsAreTheSame := (source1 = source2).
@@ -23865,6 +23858,8 @@
].
].
self normalLabel.
+
+ "Modified: / 08-02-2011 / 10:26:45 / cg"
!
classMenuCompareWithFile
@@ -24234,39 +24229,39 @@
!
classMenuSetTag
- |log tag knownTags|
-
- (Dialog confirm:'Fetch known tags to choose from ?\(this may take some time)' withCRs) ifTrue:[
- knownTags := Set new.
- self selectedNonMetaclasses do:[:eachClass |
- log := eachClass sourceCodeManager revisionLogOf:eachClass fromRevision:nil toRevision:nil finishAfter:20.
- log isNil ifTrue:[
- (Dialog confirm:'Oops - could not fetch log for %1 (cvs connection error?)\\Skip this class and proceed?' withCRs)
- ifFalse:[
- ^ self.
- ].
- ].
- knownTags addAll:(log at:#symbolicNames) keys.
- ].
- knownTags := knownTags asSortedCollection.
- tag := Dialog
- request:(resources string:'Tag:')
- initialAnswer:LastTag
- list:knownTags.
- ] ifFalse:[
- tag := Dialog
+ |classes tag knownTags|
+
+ classes := self selectedNonMetaclasses.
+
+ ((classes size <= 10)
+ or:[ |answer|
+ answer := Dialog
+ confirmWithCancel:'Fetch known tags to choose from all classes?\(this may take some time)' withCRs
+ default:false.
+ answer isNil ifTrue:[^ self].
+ answer == true
+ ]
+ ) ifTrue:[
+ "/ fetch from all classes
+ knownTags := self allKnownTagsInClasses:classes.
+ ] ifFalse:[
+ "/ only fetch from ProjectDefinitionClasses
+ knownTags := self allKnownTagsInClasses:(classes select:[:cls | cls isProjectDefinition]).
+ ].
+
+ tag := Dialog
request:(resources string:'Tag:')
- initialAnswer:LastTag.
- ].
+ initialAnswer:LastTag
+ list:knownTags.
tag isEmptyOrNil ifTrue:[^ self ].
LastTag := tag.
self withWaitCursorDo:[
- SourceCodeManagerUtilities tagClasses:(self selectedNonMetaclasses) as:tag.
+ SourceCodeManagerUtilities tagClasses:classes as:tag.
]
"Created: / 12-09-2006 / 13:36:59 / cg"
- "Modified: / 13-01-2011 / 14:12:40 / cg"
+ "Modified: / 08-02-2011 / 10:30:49 / cg"
!
classMenuShortRevisionLog
@@ -24587,6 +24582,34 @@
"Modified: / 12-10-2006 / 23:30:12 / cg"
!
+getClassSourceFor:aClass revision:revision
+ "ask aClass's sourceCodeManager to retrieve a (possibly older or newer) version's source code"
+
+ |msg stream source|
+
+ msg := 'extracting previous %1'.
+ self busyLabel:msg with:revision.
+
+ stream := aClass sourceCodeManager getSourceStreamFor:aClass revision:revision.
+ stream isNil ifTrue:[
+ self warn:(resources
+ string:'Could not extract source of rev %1 from repository'
+ with:revision).
+ ^ self
+ ].
+ stream class readErrorSignal handle:[:ex |
+ self warn:('read error while reading extracted source\\' , ex description) withCRs.
+ stream close.
+ ^ self
+ ] do:[
+ source := stream contents asString.
+ ].
+ stream close.
+ ^ source
+
+ "Created: / 08-02-2011 / 10:24:50 / cg"
+!
+
repositoryHistoryForProjects:projectListOrNil
(self askIfModified:'Code was modified.\\Show history anyway ?')
ifFalse:[^ self].
@@ -27482,6 +27505,82 @@
self window setClipboardText:stream contents
!
+generatePatchSetForClasses:classes
+ "ask for two tags, generate a patchSet to bring a baseSystem (tag1) to the
+ level of the tag2 version"
+
+ |baseVersionTag patchVersionTag knownTags|
+
+ ((classes size <= 10)
+ or:[ |answer|
+ answer := Dialog
+ confirmWithCancel:'Fetch known tags to choose from all classes?\(this may take some time)' withCRs
+ default:false.
+ answer isNil ifTrue:[^ self].
+ answer == true
+ ]
+ ) ifTrue:[
+ "/ fetch from all classes
+ knownTags := self allKnownTagsInClasses:classes.
+ ] ifFalse:[
+ "/ only fetch from ProjectDefinitionClasses
+ knownTags := self allKnownTagsInClasses:(classes select:[:cls | cls isProjectDefinition]).
+ ].
+
+ baseVersionTag := Dialog request:'Tag of Base Version:' initialAnswer:LastBaseVersionTag list:knownTags.
+ baseVersionTag isEmptyOrNil ifTrue:[^ self].
+ patchVersionTag := Dialog request:'Tag of Patch Version:' initialAnswer:LastTag list:knownTags.
+ patchVersionTag isEmptyOrNil ifTrue:[^ self].
+
+ LastBaseVersionTag := baseVersionTag.
+ LastTag := patchVersionTag.
+ self generatePatchSetForClasses:classes from:baseVersionTag to:patchVersionTag.
+
+ "Created: / 08-02-2011 / 09:31:22 / cg"
+!
+
+generatePatchSetForClasses:classes from:baseVersionTag to:patchVersionTag
+ "given two tags, generate a patchSet to bring a baseSystem (tag1) to the
+ level of the tag2 version"
+
+ |fullPatchSet|
+
+ fullPatchSet := ChangeSet new.
+
+ classes do:[:eachClass |
+ |tagRevisionMapping baseVersion patchVersion baseVersionSource patchVersionSource
+ baseChangeSet patchChangeSet diffSet thisPatchSet|
+
+ tagRevisionMapping := eachClass sourceCodeManager knownTagsAndRevisionsFor:eachClass.
+ (tagRevisionMapping includesKey:patchVersionTag) ifTrue:[
+ (tagRevisionMapping includesKey:baseVersionTag) ifTrue:[
+ "/ versions?
+ baseVersion := tagRevisionMapping at:baseVersionTag.
+ patchVersion := tagRevisionMapping at:patchVersionTag.
+
+ baseVersion ~= patchVersion ifTrue:[
+ "/ change-sets...
+ baseVersionSource := self getClassSourceFor:eachClass revision:baseVersion.
+ patchVersionSource := self getClassSourceFor:eachClass revision:patchVersion.
+
+ baseChangeSet := ChangeSet fromStream:baseVersionSource readStream.
+ patchChangeSet := ChangeSet fromStream:patchVersionSource readStream.
+
+ diffSet := baseChangeSet diffSetsAgainst:patchChangeSet.
+ thisPatchSet := ChangeSet fromDiffSet:diffSet.
+
+ fullPatchSet addAll:thisPatchSet.
+ ].
+ ]
+ ]
+ ].
+
+ ChangeSetBrowser openOn:fullPatchSet
+
+ "Created: / 08-02-2011 / 09:44:36 / cg"
+ "Modified: / 08-02-2011 / 11:08:04 / cg"
+!
+
generateProjectDefinitionsIn:classes
self
generateUndoableChange:'Generate Project Definitions'
@@ -28928,6 +29027,15 @@
self projectMenuFileOutAsWithFormat:#xml
!
+projectMenuGeneratePatchSet
+ "ask for two tags, generate a patchSet to bring a baseSystem (tag1) to the
+ level of the tag2 version"
+
+ self generatePatchSetForClasses:(self selectedProjectClasses)
+
+ "Created: / 08-02-2011 / 09:29:38 / cg"
+!
+
projectMenuGenerateProjectDefinitions
|projectClasses|
@@ -44887,11 +44995,11 @@
!NewSystemBrowser class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libtool/Attic/NewSystemBrowser.st,v 1.1508 2011-01-31 17:30:35 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/Attic/NewSystemBrowser.st,v 1.1509 2011-02-08 10:10:27 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libtool/Attic/NewSystemBrowser.st,v 1.1508 2011-01-31 17:30:35 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/Attic/NewSystemBrowser.st,v 1.1509 2011-02-08 10:10:27 cg Exp $'
! !
NewSystemBrowser initialize!