--- a/AbstractSourceCodeManager.st Mon Apr 18 20:15:11 2011 +0200
+++ b/AbstractSourceCodeManager.st Mon Apr 18 21:27:56 2011 +0200
@@ -14,7 +14,7 @@
Object subclass:#AbstractSourceCodeManager
instanceVariableNames:''
classVariableNames:'DefaultManager CachingSources CacheDirectoryName UseWorkTree
- WorkTreeDirectoryName'
+ WorkTreeDirectoryName ManagerPerModule'
poolDictionaries:''
category:'System-SourceCodeManagement'
!
@@ -134,6 +134,76 @@
"Modified: 12.9.1996 / 02:22:56 / cg"
!
+managerForMatchingModule:aPackageIDMatchString put:aSourceCodeManagerClass
+ "update the per-module manager definitions, adding a manager class for a matchString"
+
+ ManagerPerModule isNil ifTrue:[
+ ManagerPerModule := OrderedCollection new.
+ ].
+ ManagerPerModule do:[:eachAssoc |
+ |packageMatch|
+
+ packageMatch := eachAssoc key.
+ (packageMatch = aPackageIDMatchString) ifTrue:[
+ eachAssoc value:aSourceCodeManagerClass.
+ ^ self
+ ].
+ ].
+ ManagerPerModule add:(aPackageIDMatchString -> aSourceCodeManagerClass).
+
+ "
+ self managerForModule:'stx:libbasic2' put:SVNSourceCodeManager
+ self managerForModule:'stx:libbasic2' put:CVSSourceCodeManager
+ self managerForModule:'stx:libbasic2'
+ self managerForModule:'exept:expecco'
+ "
+
+ "Created: / 18-04-2011 / 19:48:19 / cg"
+!
+
+managerForModule:aPackageID
+ "return the sourceCodeManager for a aPackageID, nil if unspecified in the manager per package list"
+
+ ManagerPerModule notNil ifTrue:[
+ ManagerPerModule do:[:eachAssoc |
+ |packageMatch|
+
+ packageMatch := eachAssoc key.
+ (packageMatch match:aPackageID) ifTrue:[^ eachAssoc value].
+ ].
+ ].
+ ^ nil
+
+ "
+ self managerForModule:'stx:libbasic'
+ self managerForModule:'stx:libbasic2'
+ self managerForModule:'exept:expecco'
+ "
+
+ "Created: / 18-04-2011 / 19:39:19 / cg"
+!
+
+managerPerMatchingModuleDefinitions
+ "return the sourceCodeManager definitions"
+
+ ManagerPerModule isNil ifTrue:[
+ ManagerPerModule := OrderedCollection new.
+ ].
+ ^ ManagerPerModule
+
+ "Created: / 18-04-2011 / 20:09:16 / cg"
+!
+
+managerPerMatchingModuleDefinitions:aCollection
+ "set the sourceCodeManager definitions; must be an orderedCollection of packageMatchString -> manager
+ associations
+ (not a dictionary, because order is relevant in the matching process, where the first match counts)"
+
+ ManagerPerModule := aCollection
+
+ "Created: / 18-04-2011 / 20:09:21 / cg"
+!
+
repositoryInfoPerModule
"return the dictionary, which associates CVSRoots to module names.
If no entry is contained in this dictionary for some module,
@@ -1293,22 +1363,35 @@
^ #'version'
!
-sourceCodeManagerForPackage: packageId
- |module|
-
- packageId notNil ifTrue:[
+sourceCodeManagerForPackage:aPackageID
+ |module mgr|
+
+ aPackageID notNil ifTrue:[
"/ see if there is a package-specific manager
+ (mgr := self managerForModule:aPackageID) notNil ifTrue:[^ mgr].
+
+ "/ more or less obsolete now - I know which manager is to be used per package
self availableManagers do:[:mgr |
- (mgr isResponsibleForPackage:packageId) ifTrue:[^ mgr ].
+ (mgr isResponsibleForPackage:aPackageID) ifTrue:[^ mgr ].
].
"/ old stuff: see if there is a module-specific manager
- module := packageId upTo:$:.
+ module := aPackageID upTo:$:.
self availableManagers do:[:mgr |
(mgr isResponsibleForModule:module) ifTrue:[^ mgr ].
]
].
^ Smalltalk at:#SourceCodeManager
+
+ "
+ self sourceCodeManagerForPackage:'stx:libbasic'.
+ self sourceCodeManagerForPackage:'stx:libboss'.
+ self managerForMatchingModule:'stx:libba*' put:SVNSourceCodeManager.
+ self sourceCodeManagerForPackage:'stx:libbasic'.
+ self sourceCodeManagerForPackage:'stx:libboss'.
+ "
+
+ "Modified: / 18-04-2011 / 19:53:03 / cg"
!
versionMethodTemplateForRuby
@@ -2809,11 +2892,11 @@
!AbstractSourceCodeManager class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.238 2011-02-09 13:04:39 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.239 2011-04-18 19:27:56 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.238 2011-02-09 13:04:39 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.239 2011-04-18 19:27:56 cg Exp $'
! !
AbstractSourceCodeManager initialize!