initial checkin
authorClaus Gittinger <cg@exept.de>
Thu, 22 Dec 2011 14:02:54 +0100
changeset 11013 c52144537d6d
parent 11012 3d4066068f9a
child 11014 f28d25cab495
initial checkin
DataBaseSourceCodeManagementSettingsAppl.st
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DataBaseSourceCodeManagementSettingsAppl.st	Thu Dec 22 14:02:54 2011 +0100
@@ -0,0 +1,658 @@
+"
+ COPYRIGHT (c) 2011 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+"{ Package: 'stx:libtool' }"
+
+AbstractSourceCodeManagementSettingsAppl subclass:#DataBaseSourceCodeManagementSettingsAppl
+	instanceVariableNames:'sourceCacheDir listOfModules removeEnabled acceptChannel
+		pathPerModule verboseSourceCodeAccess repositoryPathHolder
+		perModulePath perModulePathModule selectedPerModulePath
+		repositoryNameHolder'
+	classVariableNames:'RecentlyUsedCVSRoots RecentlyUsedStoreHosts
+		RecentlyUsedSmallTeamHosts LastStoreHost LastStoreUser
+		LastStorePassword'
+	poolDictionaries:''
+	category:'System-SourceCodeManagement'
+!
+
+!DataBaseSourceCodeManagementSettingsAppl class methodsFor:'documentation'!
+
+copyright
+"
+ COPYRIGHT (c) 2011 by eXept Software AG
+              All Rights Reserved
+
+ This software is furnished under a license and may be used
+ only in accordance with the terms of that license and with the
+ inclusion of the above copyright notice.   This software may not
+ be provided or otherwise made available to, or used by, any
+ other person.  No title to or ownership of the software is
+ hereby transferred.
+"
+!
+
+documentation
+"
+    This settings app controls the parameters of the DataBaseSourceCodeManager.
+"
+! !
+
+!DataBaseSourceCodeManagementSettingsAppl class methodsFor:'defaults'!
+
+defaultRepositoryName
+    ^ DataBaseSourceCodeManager defaultRepositoryName
+
+    "Created: / 22-12-2011 / 00:16:20 / cg"
+!
+
+defaultTableName
+
+    ^ 'stx_versions'
+
+    "Created: / 21-12-2011 / 23:43:04 / cg"
+! !
+
+!DataBaseSourceCodeManagementSettingsAppl class methodsFor:'image specs'!
+
+defaultIcon
+    "This resource specification was automatically generated
+     by the ImageEditor of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the ImageEditor may not be able to read the specification."
+
+    "
+     self defaultIcon inspect
+     ImageEditor openOnClass:self andSelector:#defaultIcon
+     Icon flushCachedIcons
+    "
+
+    <resource: #image>
+
+    ^Icon
+        constantNamed:'DataBaseSourceCodeManagementSettingsAppl class defaultIcon'
+        ifAbsentPut:[(Depth8Image new) width: 22; height: 22; photometric:(#palette); bitsPerSample:(#[8]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@BFFH=<AS8@@@@@@@@@@@@@
+@@@@@E8=X(!!#T!!0-X@D@@@@@@@@@@@@@@C%%CC@K"B9SUF$QR@@@@@@@@@@@@@A[K00LL@.H]P%SGUUZ@@@@@@@@@@@@R"$<F&P0B8]ONGECQ @@@@@@@@@@
+@BX[G7X, T$BIR)(^E @@@@@@@@@@@A?F4T''[F]@XXNDZFYX@@@@@@@@@@@@Z9VU$)I''PFFC!!H.IV@@@@@@@@@@@@IJU%YVU$$@+["P1N$X@@@@@@@@@@IFU
+%P"ESQBR^3LTHG&N@@@@@@@@@@BR$9IEI61''PFFC!!F!!VZ @@@@@@@IJR%YRU%"],%4A!! 8Q(G% @@@@@@@@@$)RU$$T''%9^WXXNDQDIX@@@@@@@@@@BR&0<G
+%9*Z&Y]]D 9P# @@@@@@@@@@@@AG%9^X%9^WH49AU50@@@@@@@@@%0@@@HA>%9^L#BEF_(@@@@@@@@@@@@BW%9^W%9^P@@@@@@@@@@@@@@@@@@@@@I"W%9^P
+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@a') ; colorMapFromArray:#[219 185 65 198 168 74 219 190 79 243 243 243 247 247 247 212 188 103 224 198 109 222 200 122 234 215 144 254 223 141 240 223 165 253 234 173 253 237 183 241 231 193 188 151 42 211 174 48 191 161 59 254 242 210 208 176 66 242 239 229 220 189 76 242 242 242 245 245 245 255 255 255 222 198 111 244 220 117 237 216 141 255 233 149 254 227 155 250 228 170 196 152 26 252 239 190 253 238 192 212 212 212 249 242 210 207 171 55 211 178 65 225 194 72 230 197 74 255 251 236 250 248 244 231 203 98 246 219 105 245 221 117 227 210 143 241 216 146 253 228 154 249 232 171 253 237 182 174 139 37 239 228 192 202 168 50 209 174 52 210 173 51 214 179 60 222 188 68 210 174 70 224 193 81 208 180 89 254 254 254 225 200 105 232 208 118 220 202 138 252 229 143 252 235 160 205 200 181 186 147 30 202 156 27 251 235 189 255 244 201 216 216 216 233 228 211 193 161 65 207 177 72 230 197 73 252 249 237 252 251 244 208 183 100 213 188 101 231 202 112 206 189 131 252 230 145 254 225 148 254 228 160 254 233 176 187 149 35 198 153 27 211 211 211 215 215 215 248 241 209 225 225 225 223 192 70 231 231 231 231 201 81 225 195 86 253 253 253 219 192 114 251 228 125 243 221 145 253 226 149 247 229 168 252 236 180 201 155 26 253 243 195 255 240 196 255 239 199 217 217 217 220 185 61 254 249 224 223 188 69 232 203 81 244 244 244 252 252 252 211 183 100 236 208 111 227 205 125 252 230 144 253 226 148 236 222 171 197 156 25 202 156 26 190 149 32 187 154 48 197 165 54 203 172 59 215 179 59 224 224 224 228 196 72 236 236 236 210 184 89 249 249 249 250 223 100 251 225 111 217 194 122 233 215 148 246 222 149 253 230 161 186 145 25 200 158 27 251 236 189 209 209 209 205 168 48 218 218 218 208 177 64 0 0 0 0 64 0 32 96 32 96 192 128 32 128 64 32 160 64 32 128 32 64 64 64 96 96 96 128 128 128 32 32 32 32 64 32]; mask:((Depth1Image new) width: 22; height: 22; photometric:(#blackIs0); bitsPerSample:(#[1]); samplesPerPixel:(1); bits:(ByteArray fromPackedString:'@@@@@@@@@@@@@O0@@?<@A?>@A??@A??@A??@A??@A??@A??@C??@C??@O??@G??@C??@@??@D_>@C>@@A<@@@@@@') ; yourself); yourself]
+! !
+
+!DataBaseSourceCodeManagementSettingsAppl class methodsFor:'interface specs'!
+
+windowSpec
+    "This resource specification was automatically generated
+     by the UIPainter of ST/X."
+
+    "Do not manually edit this!! If it is corrupted,
+     the UIPainter may not be able to read the specification."
+
+    "
+     UIPainter new openOnClass:DataBaseSourceCodeManagementSettingsAppl andSelector:#windowSpec
+     DataBaseSourceCodeManagementSettingsAppl new openInterface:#windowSpec
+     DataBaseSourceCodeManagementSettingsAppl open
+    "
+
+    <resource: #canvas>
+
+    ^ 
+     #(FullSpec
+        name: windowSpec
+        window: 
+       (WindowSpec
+          label: 'DB SCM Settings'
+          name: 'DB SCM Settings'
+          min: (Point 10 10)
+          bounds: (Rectangle 0 0 659 580)
+        )
+        component: 
+       (SpecCollection
+          collection: (
+           (VerticalPanelViewSpec
+              name: 'VerticalPanel2'
+              layout: (LayoutFrame 0 0.0 0 0.0 0 1.0 0 1.0)
+              horizontalLayout: fit
+              verticalLayout: topSpace
+              horizontalSpace: 3
+              verticalSpace: 20
+              component: 
+             (SpecCollection
+                collection: (
+                 (VerticalPanelViewSpec
+                    name: 'VerticalPanel3'
+                    horizontalLayout: fit
+                    verticalLayout: top
+                    horizontalSpace: 3
+                    verticalSpace: 4
+                    component: 
+                   (SpecCollection
+                      collection: (
+                       (ViewSpec
+                          name: 'ManagerSetupBoxx'
+                          component: 
+                         (SpecCollection
+                            collection: (
+                             (FramedBoxSpec
+                                label: 'Database Source Repository Manager Settings'
+                                name: 'FileRepositorySetupBox'
+                                layout: (LayoutFrame 0 0 0 0 0 1 0 1)
+                                labelPosition: topLeft
+                                translateLabel: true
+                                component: 
+                               (SpecCollection
+                                  collection: (
+                                   (ViewSpec
+                                      name: 'Box1'
+                                      layout: (LayoutFrame 0 0 0 0 0 1 25 0)
+                                      component: 
+                                     (SpecCollection
+                                        collection: (
+                                         (LabelSpec
+                                            label: 'DB Name:'
+                                            name: 'Label1'
+                                            layout: (LayoutFrame 0 0.0 0 0 60 0.25 22 0)
+                                            level: 0
+                                            translateLabel: true
+                                            adjust: right
+                                          )
+                                         (InputFieldSpec
+                                            name: 'RepositoryPathField'
+                                            layout: (LayoutFrame 64 0.25 0 0 0 1 22 0)
+                                            tabable: true
+                                            model: dbNameHolder
+                                            acceptChannel: acceptChannel
+                                            acceptOnPointerLeave: true
+                                          )
+                                         )
+                                       
+                                      )
+                                    )
+                                   (LabelSpec
+                                      label: 'DB per Module:'
+                                      name: 'knownModulesLabel'
+                                      layout: (LayoutFrame 0 0.0 82 0 60 0.25 104 0)
+                                      translateLabel: true
+                                      adjust: right
+                                    )
+                                   (SequenceViewSpec
+                                      name: 'List1'
+                                      layout: (LayoutFrame 64 0.25 82 0 0 1 201 0)
+                                      tabable: true
+                                      model: selectedPerModuleDatabase
+                                      hasHorizontalScrollBar: true
+                                      hasVerticalScrollBar: true
+                                      miniScrollerHorizontal: true
+                                      useIndex: false
+                                      sequenceList: listOfModules
+                                    )
+                                   (LabelSpec
+                                      label: 'Module:'
+                                      name: 'moduleLabel'
+                                      layout: (LayoutFrame 0 0.0 211 0 60 0.25 228 0)
+                                      translateLabel: true
+                                      adjust: right
+                                    )
+                                   (InputFieldSpec
+                                      name: 'perModulePathModuleEntryField'
+                                      layout: (LayoutFrame 64 0.25 207 0 0 1 229 0)
+                                      tabable: true
+                                      model: perModulePathModule
+                                      acceptChannel: acceptChannel
+                                      acceptOnPointerLeave: true
+                                    )
+                                   (LabelSpec
+                                      label: 'DB:'
+                                      name: 'cvsRootLabel'
+                                      layout: (LayoutFrame 0 0.0 236 0 60 0.25 253 0)
+                                      translateLabel: true
+                                      adjust: right
+                                    )
+                                   (ComboBoxSpec
+                                      name: 'perModulePathComboBox'
+                                      layout: (LayoutFrame 64 0.25 232 0 0 1.0 254 0)
+                                      tabable: true
+                                      model: perModuleDB
+                                      immediateAccept: true
+                                      acceptOnLeave: true
+                                      acceptOnReturn: true
+                                      acceptOnTab: true
+                                      acceptOnLostFocus: true
+                                      acceptChannel: acceptChannel
+                                      acceptOnPointerLeave: true
+                                      comboList: dbPrototypeList
+                                    )
+                                   (HorizontalPanelViewSpec
+                                      name: 'HorizontalPanel2'
+                                      layout: (LayoutFrame 64 0.25 -25 1 -1 1 0 1)
+                                      horizontalLayout: fitSpace
+                                      verticalLayout: center
+                                      horizontalSpace: 3
+                                      verticalSpace: 3
+                                      component: 
+                                     (SpecCollection
+                                        collection: (
+                                         (ActionButtonSpec
+                                            label: 'Add/Apply'
+                                            name: 'addButton'
+                                            translateLabel: true
+                                            tabable: true
+                                            model: addPerModulePath
+                                            extent: (Point 130 22)
+                                          )
+                                         (ActionButtonSpec
+                                            label: 'Remove'
+                                            name: 'removeButton'
+                                            translateLabel: true
+                                            tabable: true
+                                            model: removePerModulePath
+                                            enableChannel: removeEnabled
+                                            extent: (Point 131 22)
+                                          )
+                                         (ViewSpec
+                                            name: 'Box11'
+                                            extent: (Point 131 10)
+                                          )
+                                         )
+                                       
+                                      )
+                                    )
+                                   )
+                                 
+                                )
+                              )
+                             )
+                           
+                          )
+                          extent: (Point 659 327)
+                        )
+                       )
+                     
+                    )
+                    extent: (Point 659 768)
+                  )
+                 )
+               
+              )
+            )
+           )
+         
+        )
+      )
+! !
+
+!DataBaseSourceCodeManagementSettingsAppl class methodsFor:'queries'!
+
+managerClass
+    "backlink to my manager class (needed by the settings app)"
+
+    ^ DataBaseSourceCodeManager
+
+    "Created: / 19-04-2011 / 12:46:52 / cg"
+! !
+
+!DataBaseSourceCodeManagementSettingsAppl methodsFor:'actions'!
+
+addModule:module withData:data
+    (self listOfModules includes:module) ifFalse:[
+        self listOfModules add:module; sort.
+    ].
+    pathPerModule at:module put:data.
+
+    self updateModifiedChannel.
+
+    "Created: / 08-11-2006 / 19:25:21 / cg"
+!
+
+addPerModulePath
+    |module path|
+
+    acceptChannel value:true.    
+
+    module := self perModulePathModule value.
+    path := self perModulePath value.
+
+    path size > 0 ifTrue:[
+        self validateDirectoryExistsAndIsWritable:path.
+        self addModule:module withData:(Array with:FileBasedSourceCodeManager with:path).
+    ].
+
+    "Created: / 21-12-2011 / 14:23:10 / cg"
+!
+
+basicReadSettings
+    |infoPerModule|
+
+    self initialize.
+
+    infoPerModule := FileBasedSourceCodeManager repositoryInfoPerModule.
+    infoPerModule keysAndValuesDo:[:module :info | 
+        pathPerModule at:module put:(Array with:FileBasedSourceCodeManager with:info).
+    ].
+
+    self repositoryNameHolder value:DataBaseSourceCodeManager repositoryName ? self class defaultRepositoryName.
+
+    pathPerModule notNil ifTrue:[
+        self listOfModules removeAll.
+        listOfModules addAll:pathPerModule keys asList.
+    ].
+
+    "Modified: / 22-12-2011 / 00:15:36 / cg"
+!
+
+basicSaveSettings
+    |infoPerModule modules|
+
+    modules := pathPerModule select:[:entry | entry first == FileBasedSourceCodeManager].
+    infoPerModule := Dictionary new.
+    modules keysAndValuesDo:[:module :entry | 
+        entry first == FileBasedSourceCodeManager ifTrue:[
+            infoPerModule at:module put:(entry second).
+        ].
+    ].
+    FileBasedSourceCodeManager repositoryInfoPerModule:infoPerModule.
+
+    self acceptChannel value.
+
+    "Modified: / 21-12-2011 / 14:27:47 / cg"
+!
+
+condenseSourceCache
+    self withWaitCursorDo:[ AbstractSourceCodeManager condenseSourceCache ].
+    Method flushSourceStreamCache.
+
+    "Modified: / 28-11-2006 / 12:21:33 / cg"
+!
+
+flushSourceCache
+    self withWaitCursorDo:[ AbstractSourceCodeManager flushSourceCache ].
+
+    "Modified: / 30-09-2011 / 13:33:47 / cg"
+!
+
+removePerModulePath
+    |module|
+
+    acceptChannel value:true.    
+
+    module := self perModulePathModule value.
+    self listOfModules remove:module ifAbsent:nil.
+    pathPerModule removeKey:module ifAbsent:nil.
+    self perModulePathModule value:nil.
+    self perModulePath value:nil.
+    self updateModifiedChannel.
+
+    "Created: / 21-12-2011 / 14:26:08 / cg"
+! !
+
+!DataBaseSourceCodeManagementSettingsAppl methodsFor:'aspects'!
+
+acceptChannel
+
+    acceptChannel isNil ifTrue:[
+        acceptChannel := TriggerValue new.
+    ].
+    ^ acceptChannel.
+!
+
+listOfModules
+
+    listOfModules isNil ifTrue:[
+        pathPerModule notNil ifTrue:[
+            listOfModules := pathPerModule keys asList.
+        ].
+        listOfModules sort.
+        listOfModules onChangeSend:#updateModifiedChannel to:self
+    ].
+    ^ listOfModules.
+
+    "Modified: / 21-12-2011 / 14:32:59 / cg"
+!
+
+pathPrototypeList
+    ^ #(
+            './versions'
+        )
+
+    "Created: / 21-12-2011 / 13:13:05 / cg"
+!
+
+perModulePath
+    perModulePath isNil ifTrue:[
+        perModulePath := ValueHolder new.
+        perModulePath addDependent:self.
+    ].
+    ^ perModulePath.
+
+    "Created: / 21-12-2011 / 14:19:03 / cg"
+!
+
+perModulePathModule
+    perModulePathModule isNil ifTrue:[
+        perModulePathModule := ValueHolder new.
+    ].
+    ^ perModulePathModule.
+
+    "Created: / 21-12-2011 / 14:31:09 / cg"
+!
+
+removeEnabled
+
+    removeEnabled isNil ifTrue:[
+        removeEnabled := false asValue.
+    ].
+    ^ removeEnabled.
+!
+
+repositoryNameHolder
+
+    repositoryNameHolder isNil ifTrue:[
+        repositoryNameHolder := DataBaseSourceCodeManager defaultRepositoryName asValue.
+        repositoryNameHolder addDependent:self.
+    ].
+    ^ repositoryNameHolder.
+
+    "Created: / 22-12-2011 / 00:14:42 / cg"
+!
+
+repositoryPathHolder
+
+    repositoryPathHolder isNil ifTrue:[
+        repositoryPathHolder := './versions' asValue.
+        repositoryPathHolder addDependent:self.
+    ].
+    ^ repositoryPathHolder.
+
+    "Created: / 21-12-2011 / 13:11:58 / cg"
+!
+
+selectedPerModulePath
+    selectedPerModulePath isNil ifTrue:[
+        selectedPerModulePath := ValueHolder new.
+        selectedPerModulePath addDependent:self.
+    ].
+    ^ selectedPerModulePath.
+
+    "Created: / 21-12-2011 / 14:35:37 / cg"
+!
+
+verboseSourceCodeAccess
+    verboseSourceCodeAccess isNil ifTrue:[
+        verboseSourceCodeAccess := false asValue.
+        verboseSourceCodeAccess onChangeSend:#updateModifiedChannel to:self
+    ].
+    ^ verboseSourceCodeAccess.
+! !
+
+!DataBaseSourceCodeManagementSettingsAppl methodsFor:'change & update'!
+
+selectedPerModulePathChanged
+    |module entry|
+
+    self acceptChannel value:true. 
+
+    module := self selectedPerModulePath value.
+    module isNil ifTrue:[ 
+        self removeEnabled value:false.
+        self perModulePathModule value:' '.
+        self perModulePath value:''.
+        ^ self
+    ].
+
+    entry := pathPerModule at:module ifAbsent:#().    
+    (entry first = FileBasedSourceCodeManager) ifTrue:[
+        self removeEnabled value:true.
+        self perModulePathModule value:module.
+        self perModulePath value:(entry at:2).
+    ] ifFalse:[
+        self removeEnabled value:false.
+        self perModulePathModule value:module , ' ',('<<use ',entry first managerTypeName,'>>') allBold.
+        self perModulePath value:''.
+    ].
+
+    "Created: / 21-12-2011 / 14:35:04 / cg"
+!
+
+update:something with:aParameter from:changedObject 
+    changedObject == selectedPerModulePath ifTrue:[
+        self selectedPerModulePathChanged.
+        ^ self
+    ].
+
+    super update:something with:aParameter from:changedObject
+
+    "Modified: / 21-12-2011 / 14:37:54 / cg"
+!
+
+validateDirectoryExistsAndIsWritable:aDirectory
+    |nm fn|
+
+    fn := aDirectory asFilename.
+    nm := fn baseName.
+
+    fn exists ifFalse:[
+        (self confirm:(resources 
+                            stringWithCRs:'Directory "%1" does not exist.\Create ?'
+                            with:nm)
+        ) ifFalse:[
+            ^ false.
+        ].
+        fn 
+            recursiveMakeDirectory; 
+            makeReadableForAll;
+            makeWritableForAll;
+            makeExecutableForAll.
+        ^ true.
+    ].
+
+    (fn isDirectory) ifFalse:[
+        self warn:(resources 
+                            stringWithCRs:'Not a directory: "%1"'
+                            with:nm).
+        ^ false.
+    ].
+
+    (fn isReadable and:[fn isWritable]) ifFalse:[
+        (self confirm:(resources 
+                            stringWithCRs:'Directory "%1" is not both readable and writable.\Change ?'
+                            with:nm)
+        ) ifFalse:[
+            ^ false.
+        ].
+        fn
+            makeReadableForAll;
+            makeWritableForAll;
+            makeExecutableForAll.
+        (fn isReadable and:[fn isWritable]) ifFalse:[
+            self warn:(resources 
+                                stringWithCRs:'Directory "%1" cannot be made both readable and writable.'
+                                with:nm).
+            ^ false.
+        ].
+    ].
+
+    ^ true
+
+    "Created: / 21-12-2011 / 14:43:11 / cg"
+! !
+
+!DataBaseSourceCodeManagementSettingsAppl methodsFor:'help'!
+
+helpFilename
+    ^ 'Launcher/fileBasedRepositorySetup.html'
+
+    "Modified: / 21-12-2011 / 14:36:53 / cg"
+! !
+
+!DataBaseSourceCodeManagementSettingsAppl methodsFor:'initialization & release'!
+
+initialize
+    (AbstractSourceCodeManager notNil) ifTrue:[ AbstractSourceCodeManager autoload ].
+
+    pathPerModule := Dictionary new.
+
+    FileBasedSourceCodeManager repositoryInfoPerModule 
+        keysAndValuesDo:[:module :info |
+            module withoutSeparators ~= module ifTrue:[
+                self halt:'should not happen any longer'
+            ].
+            pathPerModule at:module put:(Array with:FileBasedSourceCodeManager with:info)
+        ].
+
+    super initialize.
+
+    "Modified: / 21-12-2011 / 23:54:31 / cg"
+! !
+
+!DataBaseSourceCodeManagementSettingsAppl methodsFor:'queries'!
+
+cvsRootFromCVSRootFileOrNil
+    |cvsDir cvsRootFile cvsRoot|
+
+    cvsDir := 'CVS' asFilename.
+    cvsDir isDirectory ifTrue:[
+        cvsRootFile := cvsDir construct:'Root'.
+        cvsRootFile isReadable ifTrue:[
+            cvsRoot := cvsRootFile contents firstIfEmpty:nil.
+        ].
+    ].
+    ^ cvsRoot
+!
+
+hasUnsavedChanges
+    |modules|
+
+    modules := pathPerModule select:[:entry | entry first == FileBasedSourceCodeManager].
+
+    FileBasedSourceCodeManager repositoryInfoPerModule keysAndValuesDo:[:module :info |
+        ((modules includesKey:module) and:[info = (modules at:module) second])
+        ifFalse:[^ true].
+    ].
+    modules keysAndValuesDo:[:module :info|
+        ((FileBasedSourceCodeManager repositoryInfoPerModule includesKey:module) and:[(FileBasedSourceCodeManager repositoryInfoPerModule at:module) = info second])
+        ifFalse:[^ true].
+    ].
+
+    ^ false
+
+    "Modified: / 21-12-2011 / 14:33:14 / cg"
+! !
+
+!DataBaseSourceCodeManagementSettingsAppl class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/libtool/DataBaseSourceCodeManagementSettingsAppl.st,v 1.1 2011-12-22 13:02:54 cg Exp $'
+!
+
+version_CVS
+    ^ '$Header: /cvs/stx/stx/libtool/DataBaseSourceCodeManagementSettingsAppl.st,v 1.1 2011-12-22 13:02:54 cg Exp $'
+! !