--- a/SourceCodeManagerUtilities.st Thu Oct 06 17:25:12 2011 +0200
+++ b/SourceCodeManagerUtilities.st Mon Oct 10 15:31:33 2011 +0200
@@ -12,7 +12,7 @@
"{ Package: 'stx:libbasic3' }"
Object subclass:#SourceCodeManagerUtilities
- instanceVariableNames:''
+ instanceVariableNames:'manager'
classVariableNames:'LastSourceLogMessage LastModule LastPackage YesToAllQuery
YesToAllNotification'
poolDictionaries:''
@@ -52,6 +52,15 @@
"
! !
+!SourceCodeManagerUtilities class methodsFor:'instance creation'!
+
+forManager: aSourceCodeManager
+
+ ^self new setManager: aSourceCodeManager
+
+ "Created: / 10-10-2011 / 11:45:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!SourceCodeManagerUtilities class methodsFor:'Signal constants'!
yesToAllNotification
@@ -70,6 +79,14 @@
!SourceCodeManagerUtilities class methodsFor:'accessing'!
+default
+
+ Default isNil ifTrue:[Default := self new].
+ ^Default
+
+ "Created: / 10-10-2011 / 11:28:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
lastModule
"return the value of the static variable 'LastModule' (automatically generated)"
@@ -94,6 +111,23 @@
LastPackage := something.
! !
+!SourceCodeManagerUtilities class methodsFor:'error handling'!
+
+doesNotUnderstand: aMessage
+
+ (self default respondsTo: aMessage selector) ifTrue:[
+ "Bad, method moved to instance side but not forwarded"
+ self breakPoint: #jv.
+ self breakPoint: #cg.
+
+ ^aMessage sendTo: self default
+ ] ifFalse:[
+ ^super doesNotUnderstand: aMessage
+ ]
+
+ "Created: / 10-10-2011 / 14:04:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
!SourceCodeManagerUtilities class methodsFor:'resources'!
resourcePackage
@@ -116,6 +150,714 @@
!
nameOfExtensionsContainer
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default nameOfExtensionsContainer
+!
+
+setPackageOfAllMethodsIn:aClass to:aPackage
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default setPackageOfAllMethodsIn:aClass to:aPackage
+
+ "Modified: / 10-10-2011 / 14:00:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+setPackageOfAllMethodsInChangeSet:aChangeSet to:aPackage
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default setPackageOfAllMethodsInChangeSet:aChangeSet to:aPackage
+
+ "Created: / 10-10-2011 / 14:00:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+sourceCodeManagerFor:aClass
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default sourceCodeManagerFor:aClass
+!
+
+sourceCodeOfClass:aClass
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default sourceCodeOfClass:aClass
+!
+
+versionString:a isLessThan:b
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default versionString:a isLessThan:b
+! !
+
+!SourceCodeManagerUtilities class methodsFor:'utilities-cvs'!
+
+changeSetForExtensionMethodsForPackage:packageToCheckOut askForRevision:askForRevision using:aSourceCodeManager
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default changeSetForExtensionMethodsForPackage:packageToCheckOut askForRevision:askForRevision using:aSourceCodeManager
+!
+
+changeSetForExtensionMethodsForPackage:packageToCheckOut revision:revisionOrNil orAskForRevision:askForRevision using:aSourceCodeManager
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default changeSetForExtensionMethodsForPackage:packageToCheckOut revision:revisionOrNil orAskForRevision:askForRevision using:aSourceCodeManager
+!
+
+checkForExistingModule:module directory:directory container:containerFileName using:mgr allowCreate:allowCreate
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default checkForExistingModule:module directory:directory container:containerFileName using:mgr allowCreate:allowCreate
+!
+
+checkForExistingModule:module directory:directory using:mgr allowCreate:allowCreate
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default checkForExistingModule:module directory:directory using:mgr allowCreate:allowCreate
+!
+
+checkForExistingModule:module using:mgr allowCreate:allowCreate
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default checkForExistingModule:module using:mgr allowCreate:allowCreate
+!
+
+checkinClass:aClass
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default checkinClass:aClass
+!
+
+checkinClass:aClass withInfo:aLogInfoOrNil
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default checkinClass:aClass withInfo:aLogInfoOrNil
+!
+
+checkinClass:aClass withInfo:aLogInfoOrNil withCheck:doCheckClass
+ "check a class into the source repository.
+ If the argument, aLogInfoOrNil isNil, ask interactively for log-message.
+ If doCheckClass is true, the class is checked for send of halts etc."
+
+ |logMessage checkinInfo mgr pri resources|
+
+ aClass isLoaded ifFalse:[
+ self information:(resources string:'Cannot checkin unloaded classes (%1)' with:aClass name).
+ ^ false.
+ ].
+
+ mgr := self sourceCodeManagerFor:aClass.
+ mgr isNil ifTrue:[
+ ^ false
+ ].
+
+ self ensureCorrectVersionMethodsInClass:aClass using:mgr.
+
+ (self
+ getLogMessageForClassCheckinTakingDefaultsFromPreviousLogInfo:aLogInfoOrNil
+ forClass:aClass
+ valuesInto:[:logMessageRet :checkinInfoRet |
+ logMessage := logMessageRet.
+ checkinInfo := checkinInfoRet.
+ ]
+ ) ifFalse:[^ false].
+
+ resources := self classResources.
+
+ (self classIsNotYetInRepository:aClass withManager:mgr) ifTrue:[
+ (self createSourceContainerForClass:aClass) ifFalse:[
+"/ self warn:'did not create a container for ''' , aClass name , ''''.
+ ^ false
+ ].
+ ^ true.
+ ].
+
+ self activityNotification:(resources string:'checking in %1' with:aClass name).
+ pri := Processor activePriority.
+ Processor activeProcess withPriority:pri-1 to:pri
+ do:[
+ |revision aborted freshCreated|
+
+ freshCreated := false.
+ revision := aClass revision.
+ revision isNil ifTrue:[
+ "/ mhmh - check if it has a container.
+ (mgr checkForExistingContainerForClass:aClass) ifFalse:[
+ (self createSourceContainerForClass:aClass) ifFalse:[
+ self warn:'Did not create/change repository container for ''' , aClass name allBold , ''''.
+ ^ false.
+ ].
+ freshCreated := true.
+ ]
+ ].
+
+ doCheckClass value ifTrue:[
+ "/ check if the class contains halts, error-sends etc.
+ (self checkAndWarnAboutBadMessagesInClass:aClass checkAgainHolder:doCheckClass) ifFalse:[
+ ^ false
+ ].
+ ].
+
+ freshCreated ifFalse:[
+ aborted := false.
+ AbortOperationRequest handle:[:ex |
+ aborted := true.
+ ex return.
+ ] do:[
+ |checkinState cause|
+ checkinState := false.
+ cause := ''.
+ [
+ checkinState := mgr checkinClass:aClass logMessage:logMessage
+ ] on:SourceCodeManagerError do:[:ex|
+ cause := ex description.
+ ex proceed.
+ ].
+
+ checkinState ifFalse:[
+ Transcript showCR:'checkin of ''' , aClass name , ''' failed - ', cause.
+ self warn:(resources stringWithCRs:'Checkin of "%1" failed\\' with:aClass name allBold),cause.
+ ^ false.
+ ].
+ checkinInfo notNil ifTrue:[
+ checkinInfo isStable ifTrue:[
+ "set stable tag for class that has been checked in"
+ self tagClass:aClass as:#stable.
+ ].
+ checkinInfo tagIt ifTrue:[
+ "set an additional tag for class that has been checked in"
+ self tagClass:aClass as:(checkinInfo tag).
+ ].
+ ].
+ ].
+ aborted ifTrue:[ |con|
+ Transcript showCR:'Checkin of ''' , aClass name , ''' aborted'.
+
+ AbortAllOperationWantedQuery query ifTrue:[
+ (Dialog
+ confirm:(resources stringWithCRs:'Checkin of "%1" aborted.\\Cancel all ?' with:aClass name)
+ default:false)
+ ifTrue:[
+ AbortAllOperationRequest raise.
+ ]
+ ].
+ ^ false.
+ ].
+ ].
+ ].
+ ^ true
+
+ "Modified: / 06-05-2011 / 10:32:55 / cg"
+!
+
+checkinClasses:aCollectionOfClass
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default checkinClasses:aCollectionOfClass
+!
+
+checkinClasses:aCollectionOfClasses withInfo:aLogInfoOrNil
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default checkinClasses:aCollectionOfClasses withInfo:aLogInfoOrNil
+!
+
+checkinClasses:aCollectionOfClasses withInfo:aLogInfoOrStringNil withCheck:doCheckClasses
+ "check a bunch of classes into the source repository.
+ If the argument, aLogInfoOrStringNil isNil, ask interactively for log-message."
+
+ |classes allClasses checkinInfoOrString resources yesOrNoToAll unchangedClasses|
+
+ "/ ignore private classes
+ classes := aCollectionOfClasses select:[:aClass | aClass owningClass isNil].
+ classes isEmpty ifTrue:[
+ self information:'Only private classes given - nothing checked in.'.
+ ^ self
+ ].
+ classes := classes select:[:aClass | aClass isLoaded].
+ classes isEmpty ifTrue:[
+ self information:'Only unloaded classes given - nothing checked in.'.
+ ^ self
+ ].
+
+ classes size == 1 ifTrue:[
+ ^ self checkinClass:classes first withInfo:aLogInfoOrStringNil withCheck:doCheckClasses.
+ ].
+
+ resources := self classResources.
+
+ "ask once, for all classes"
+ aLogInfoOrStringNil isNil ifTrue:[
+ checkinInfoOrString := self
+ getCheckinInfoFor:(resources string:'%1 classes to checkin' with:aCollectionOfClasses size)
+ initialAnswer:nil
+ withQuickOption:true.
+ checkinInfoOrString isNil ifTrue:[^ self].
+ ] ifFalse:[
+ checkinInfoOrString := aLogInfoOrStringNil.
+ ].
+
+ allClasses := classes.
+ checkinInfoOrString quickCheckIn ifTrue:[
+ classes := classes select:[:aClass | aClass hasUnsavedChanges].
+ classes isEmpty ifTrue:[ Dialog information:'no changes to checkin (quickCheckIn)' ]
+ ].
+
+ "abortAll is handled, and also asked for here!!"
+ AbortAllOperationRequest handleAndAnswerQueryIn:[
+ classes notEmpty ifTrue:[
+ self yesToAllNotification handle:[:ex |
+ yesOrNoToAll := ex parameter.
+ ex proceed
+ ] do:[
+ self yesToAllQuery handle:[:ex |
+ ex proceedWith:yesOrNoToAll
+ ] do:[
+ classes do:[:aClass |
+ self activityNotification:(resources string:'checking in %1' with:aClass name).
+ "/ ca does not want boxes to pop up all over ...
+ UserInformation handle:[:ex |
+ Transcript showCR:ex description.
+ ex proceed.
+ ] do:[
+ AbortOperationRequest catch:[
+ self
+ checkinClass:aClass
+ withInfo:checkinInfoOrString
+ withCheck:doCheckClasses
+ ]
+ ].
+ ].
+ ]
+ ].
+ ].
+
+ (checkinInfoOrString isStable or:[checkinInfoOrString tagIt])
+ ifTrue:[
+ "/mhmh - but tag should be set on all (even unchanged ones)
+ "/ the other onces have already been tagged
+ unchangedClasses := allClasses select:[:eachClass | (classes includes:eachClass) not].
+
+ "mhmh - could still have to tag them"
+ checkinInfoOrString isStable ifTrue:[
+ unchangedClasses do:[:eachClass |
+ self tagClass:eachClass as:#stable.
+ ].
+ ].
+ checkinInfoOrString tagIt ifTrue:[
+ unchangedClasses do:[:eachClass |
+ self tagClass:eachClass as:(checkinInfoOrString tag).
+ ].
+ ].
+ ].
+ ].
+
+ "Modified: / 20-08-2011 / 14:00:13 / cg"
+!
+
+checkinExtensionMethods:aCollectionOfMethods forPackage:aPackageID withInfo:aLogInfoOrStringOrNil
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default checkinExtensionMethods:aCollectionOfMethods forPackage:aPackageID withInfo:aLogInfoOrStringOrNil
+!
+
+checkoutClass:aClass askForMerge:askForMerge
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default checkoutClass:aClass askForMerge:askForMerge
+!
+
+checkoutClass:aClass askForRevision:askForRevision askForMerge:askForMerge
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default checkoutClass:aClass askForRevision:askForRevision askForMerge:askForMerge
+!
+
+checkoutClass:aClass askForRevision:askForRevision askForMerge:askForMerge askForConfirmation:askForConfirmation
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default checkoutClass:aClass askForRevision:askForRevision askForMerge:askForMerge askForConfirmation:askForConfirmation
+!
+
+checkoutExtensionMethodsForPackage:packageToCheckOut askForRevision:askForRevision askForMerge:askForMerge using:aSourceCodeManager
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default checkoutExtensionMethodsForPackage:packageToCheckOut askForRevision:askForRevision askForMerge:askForMerge using:aSourceCodeManager
+!
+
+compareClassWithRepository:aClass
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default compareClassWithRepository:aClass
+!
+
+compareClassWithRepository:aClass askForRevision:askForRevision
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default compareClassWithRepository:aClass askForRevision:askForRevision
+!
+
+compareProject:aProject withRepositoryVersionFrom:aDateOrNilForNewest
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default compareProject:aProject withRepositoryVersionFrom:aDateOrNilForNewest
+!
+
+compareProjectWithRepository:aProject
+ ^ self compareProject:aProject withRepositoryVersionFrom:nil
+!
+
+createSourceContainerForClass:aClass
+ "let user specify the source-repository values for aClass"
+
+ |resources|
+
+ resources := self classResources.
+ ^ self
+ defineSourceContainerForClass:aClass
+ title:(resources string:'Repository information for %1' with:aClass name)
+ text:(resources string:'Create new repository container for ''%1''' with:aClass name allBold)
+ createDirectories:true
+ createContainer:true.
+!
+
+defineSourceContainerForClass:aClass title:title text:boxText createDirectories:createDirs createContainer:createContainer
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default defineSourceContainerForClass:aClass title:title text:boxText createDirectories:createDirs createContainer:createContainer
+!
+
+diffSetOfProject:aProject againstRepositoryVersionFrom:aDateOrNilForNewest
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default diffSetOfProject:aProject againstRepositoryVersionFrom:aDateOrNilForNewest
+!
+
+ensureCorrectVersionMethodsInClass:aClass using:aManager
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default ensureCorrectVersionMethodsInClass:aClass using:aManager
+!
+
+getLogMessageForClassCheckinTakingDefaultsFromPreviousLogInfo:aLogInfoOrNil forClass:aClass valuesInto:aBlock
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default getLogMessageForClassCheckinTakingDefaultsFromPreviousLogInfo:aLogInfoOrNil forClass:aClass valuesInto:aBlock
+!
+
+removeSourceContainerForClass:aClass
+ "show container & let user confirm twice."
+
+ ^ self removeSourceContainerForClass:aClass confirm:true warn:true
+!
+
+removeSourceContainerForClass:aClass confirm:doConfirm warn:doWarn
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default removeSourceContainerForClass:aClass confirm:doConfirm warn:doWarn
+!
+
+repositoryLogOf:aClass onto:aStream
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default repositoryLogOf:aClass onto:aStream
+!
+
+repositoryLogOf:aClass short:shortOrNot onto:aStream
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default repositoryLogOf:aClass short:shortOrNot onto:aStream
+!
+
+tagClass:aClass as:tag
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default tagClass:aClass as:tag
+!
+
+tagClasses:aCollectionOfClasses as:tag
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default tagClasses:aCollectionOfClasses as:tag
+!
+
+tagPath:aPath as:tag using:aManager
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default tagPath:aPath as:tag using:aManager
+! !
+
+!SourceCodeManagerUtilities class methodsFor:'utilities-cvs-helpers'!
+
+getMethodVersionsOfClass:aClass selector:selector numberOfRevisions:numberOfRevisionsOrNil
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default getMethodVersionsOfClass:aClass selector:selector numberOfRevisions:numberOfRevisionsOrNil
+! !
+
+!SourceCodeManagerUtilities class methodsFor:'utilities-cvs-user interaction'!
+
+askForContainer:boxText title:title note:notice initialModule:initialModule initialPackage:initialPackage initialFileName:initialFileName
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default askForContainer:boxText title:title note:notice initialModule:initialModule initialPackage:initialPackage initialFileName:initialFileName
+!
+
+askForContainer:boxText title:title note:notice initialModule:initialModule initialPackage:initialPackage initialFileName:initialFileName forNewContainer:forNewContainer
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default askForContainer:boxText title:title note:notice initialModule:initialModule initialPackage:initialPackage initialFileName:initialFileName forNewContainer:forNewContainer
+!
+
+askForExistingRevision:boxText title:title class:aClass
+ "open a dialog asking for a containers revision;
+ return a revision number, or nil if canceled."
+
+ |mgr sourceInfo module package fileName|
+
+ mgr := self sourceCodeManagerFor:aClass.
+ sourceInfo := mgr sourceInfoOfClass:aClass.
+ sourceInfo isNil ifTrue:[^ nil].
+
+ package := mgr directoryFromSourceInfo:sourceInfo.
+ module := mgr moduleFromSourceInfo:sourceInfo.
+ fileName := mgr containerFromSourceInfo:sourceInfo.
+ ^ self
+ askForExistingRevision:boxText
+ title:title
+ class:aClass
+ manager:mgr
+ module:module package:package
+ fileName:fileName
+
+ "
+ SourceCodeManagerUtilities
+ askForRevisionToCompare:'enter revision'
+ title:'revision'
+ class:Array
+ "
+
+ "Modified: / 12-09-2006 / 14:17:04 / cg"
+!
+
+askForExistingRevision:boxText title:title class:clsOrNil manager:aSourceCodeManager module:module package:directory fileName:fileName
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default askForExistingRevision:boxText title:title class:clsOrNil manager:aSourceCodeManager module:module package:directory fileName:fileName
+!
+
+checkAndWarnAboutBadMessagesInClass:aClass checkAgainHolder:checkAgainHolder
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default checkAndWarnAboutBadMessagesInClass:aClass checkAgainHolder:checkAgainHolder
+!
+
+getCheckinInfoFor:aClassNameOrPackageNameString initialAnswer:initialAnswerOrNil
+ "ask for a log message for checking in a class (plus checkinQuick state info),
+ and other info (mark as stable, for example).
+ Return the info-object (actually: the dialog) or nil if aborted."
+
+ ^ self
+ getCheckinInfoFor:aClassNameOrPackageNameString
+ initialAnswer:initialAnswerOrNil
+ withQuickOption:false
+
+ "
+ SourceCodeManagerUtilities getCheckinInfoFor:'hello' initialAnswer:'bla'
+ "
+
+ "Modified: / 06-07-2010 / 11:22:15 / cg"
+!
+
+getCheckinInfoFor:aClassNameOrPackageNameString initialAnswer:initialAnswerOrNil withQuickOption:withQuickOption
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default getCheckinInfoFor:aClassNameOrPackageNameString initialAnswer:initialAnswerOrNil withQuickOption:withQuickOption
+!
+
+goodInitialLogMessageForCheckinClassOfClass:aClass
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default goodInitialLogMessageForCheckinClassOfClass:aClass
+! !
+
+!SourceCodeManagerUtilities class methodsFor:'utilities-encoding'!
+
+guessEncodingOfFile:aFilename
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default guessEncodingOfFile:aFilename
+!
+
+guessEncodingOfStream:aStream
+
+ <resource: #obsolete>
+
+ self obsoleteMethodWarning: 'Please use instance protocol (SourceCodeManagerUtilities default doSomething)'.
+
+ ^self default guessEncodingOfStream:aStream
+! !
+
+!SourceCodeManagerUtilities methodsFor:'accessing'!
+
+classResources
+
+ ^self class classResources
+
+ "Created: / 10-10-2011 / 11:42:32 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SourceCodeManagerUtilities methodsFor:'error handling'!
+
+doesNotUnderstand: aMessage
+
+ (self class respondsTo: aMessage selector) ifTrue:[
+ "Bad, method is not moved the the instance side"
+ self breakPoint: #jv.
+ self breakPoint: #cg.
+
+ ^aMessage sendTo: self class
+ ] ifFalse:[
+ ^super doesNotUnderstand: aMessage
+ ]
+
+ "Created: / 10-10-2011 / 14:02:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SourceCodeManagerUtilities methodsFor:'initialization'!
+
+setManager: aSourceCodeManager
+
+ manager := aSourceCodeManager
+
+ "Created: / 10-10-2011 / 11:47:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!SourceCodeManagerUtilities methodsFor:'utilities'!
+
+nameOfExtensionsContainer
^ 'extensions.st'
!
@@ -160,6 +902,8 @@
sourceCodeManagerFor:aClass
|mgr assumption|
+ manager notNil ifTrue:[^manager].
+
mgr := aClass theNonMetaclass sourceCodeManager.
mgr isNil ifTrue:[
SourceCodeManager isNil ifTrue:[
@@ -178,6 +922,7 @@
^ mgr
"Modified: / 19-04-2011 / 11:48:41 / cg"
+ "Modified: / 10-10-2011 / 11:47:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
sourceCodeOfClass:aClass
@@ -237,7 +982,7 @@
"Modified: / 17-02-2011 / 10:20:14 / cg"
! !
-!SourceCodeManagerUtilities class methodsFor:'utilities-cvs'!
+!SourceCodeManagerUtilities methodsFor:'utilities-cvs'!
changeSetForExtensionMethodsForPackage:packageToCheckOut askForRevision:askForRevision using:aSourceCodeManager
"check-out an extension container from the source repository, and return the methods there as a change set.
@@ -574,99 +1319,6 @@
withCheck:(UserPreferences current at:#checkClassesWhenCheckingIn ifAbsent:true)
!
-checkinClasses:aCollectionOfClasses withInfo:aLogInfoOrStringNil withCheck:doCheckClasses
- "check a bunch of classes into the source repository.
- If the argument, aLogInfoOrStringNil isNil, ask interactively for log-message."
-
- |classes allClasses checkinInfoOrString resources yesOrNoToAll unchangedClasses|
-
- "/ ignore private classes
- classes := aCollectionOfClasses select:[:aClass | aClass owningClass isNil].
- classes isEmpty ifTrue:[
- self information:'Only private classes given - nothing checked in.'.
- ^ self
- ].
- classes := classes select:[:aClass | aClass isLoaded].
- classes isEmpty ifTrue:[
- self information:'Only unloaded classes given - nothing checked in.'.
- ^ self
- ].
-
- classes size == 1 ifTrue:[
- ^ self checkinClass:classes first withInfo:aLogInfoOrStringNil withCheck:doCheckClasses.
- ].
-
- resources := self classResources.
-
- "ask once, for all classes"
- aLogInfoOrStringNil isNil ifTrue:[
- checkinInfoOrString := self
- getCheckinInfoFor:(resources string:'%1 classes to checkin' with:aCollectionOfClasses size)
- initialAnswer:nil
- withQuickOption:true.
- checkinInfoOrString isNil ifTrue:[^ self].
- ] ifFalse:[
- checkinInfoOrString := aLogInfoOrStringNil.
- ].
-
- allClasses := classes.
- checkinInfoOrString quickCheckIn ifTrue:[
- classes := classes select:[:aClass | aClass hasUnsavedChanges].
- classes isEmpty ifTrue:[ Dialog information:'no changes to checkin (quickCheckIn)' ]
- ].
-
- "abortAll is handled, and also asked for here!!"
- AbortAllOperationRequest handleAndAnswerQueryIn:[
- classes notEmpty ifTrue:[
- self yesToAllNotification handle:[:ex |
- yesOrNoToAll := ex parameter.
- ex proceed
- ] do:[
- self yesToAllQuery handle:[:ex |
- ex proceedWith:yesOrNoToAll
- ] do:[
- classes do:[:aClass |
- self activityNotification:(resources string:'checking in %1' with:aClass name).
- "/ ca does not want boxes to pop up all over ...
- UserInformation handle:[:ex |
- Transcript showCR:ex description.
- ex proceed.
- ] do:[
- AbortOperationRequest catch:[
- self
- checkinClass:aClass
- withInfo:checkinInfoOrString
- withCheck:doCheckClasses
- ]
- ].
- ].
- ]
- ].
- ].
-
- (checkinInfoOrString isStable or:[checkinInfoOrString tagIt])
- ifTrue:[
- "/mhmh - but tag should be set on all (even unchanged ones)
- "/ the other onces have already been tagged
- unchangedClasses := allClasses select:[:eachClass | (classes includes:eachClass) not].
-
- "mhmh - could still have to tag them"
- checkinInfoOrString isStable ifTrue:[
- unchangedClasses do:[:eachClass |
- self tagClass:eachClass as:#stable.
- ].
- ].
- checkinInfoOrString tagIt ifTrue:[
- unchangedClasses do:[:eachClass |
- self tagClass:eachClass as:(checkinInfoOrString tag).
- ].
- ].
- ].
- ].
-
- "Modified: / 20-08-2011 / 14:00:13 / cg"
-!
-
checkinExtensionMethods:aCollectionOfMethods forPackage:aPackageID withInfo:aLogInfoOrStringOrNil
"checkin a projects extensions into the source repository.
If the argument, aLogInfoOrStringOrNil isNil, ask interactively for log-message."
@@ -2539,7 +3191,7 @@
"Modified: / 12-09-2006 / 12:04:44 / cg"
! !
-!SourceCodeManagerUtilities class methodsFor:'utilities-cvs-helpers'!
+!SourceCodeManagerUtilities methodsFor:'utilities-cvs-helpers'!
getMethodVersionsOfClass:aClass selector:selector numberOfRevisions:numberOfRevisionsOrNil
"check-out all previous versions of aClass and retrieve the history of selector.
@@ -2615,7 +3267,7 @@
"
! !
-!SourceCodeManagerUtilities class methodsFor:'utilities-cvs-user interaction'!
+!SourceCodeManagerUtilities methodsFor:'utilities-cvs-user interaction'!
askForContainer:boxText title:title note:notice initialModule:initialModule initialPackage:initialPackage initialFileName:initialFileName
"open a dialog asking for a source container;
@@ -2810,37 +3462,6 @@
"Modified: / 23-08-2006 / 14:13:04 / cg"
!
-askForExistingRevision:boxText title:title class:aClass
- "open a dialog asking for a containers revision;
- return a revision number, or nil if canceled."
-
- |mgr sourceInfo module package fileName|
-
- mgr := self sourceCodeManagerFor:aClass.
- sourceInfo := mgr sourceInfoOfClass:aClass.
- sourceInfo isNil ifTrue:[^ nil].
-
- package := mgr directoryFromSourceInfo:sourceInfo.
- module := mgr moduleFromSourceInfo:sourceInfo.
- fileName := mgr containerFromSourceInfo:sourceInfo.
- ^ self
- askForExistingRevision:boxText
- title:title
- class:aClass
- manager:mgr
- module:module package:package
- fileName:fileName
-
- "
- SourceCodeManagerUtilities
- askForRevisionToCompare:'enter revision'
- title:'revision'
- class:Array
- "
-
- "Modified: / 12-09-2006 / 14:17:04 / cg"
-!
-
askForExistingRevision:boxText title:title class:clsOrNil manager:aSourceCodeManager module:module package:directory fileName:fileName
"open a dialog asking for a containers revision;
return a revision number, or nil if canceled."
@@ -3311,7 +3932,7 @@
"Modified: / 27-01-2011 / 09:25:30 / cg"
! !
-!SourceCodeManagerUtilities class methodsFor:'utilities-encoding'!
+!SourceCodeManagerUtilities methodsFor:'utilities-encoding'!
guessEncodingOfFile:aFilename
"look for a string
@@ -3349,9 +3970,9 @@
!SourceCodeManagerUtilities class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.223 2011-09-29 19:41:47 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.224 2011-10-10 13:31:33 vrany Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.223 2011-09-29 19:41:47 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.224 2011-10-10 13:31:33 vrany Exp $'
! !