MCFileBasedRepository.st
author Claus Gittinger <cg@exept.de>
Mon, 14 May 2018 02:21:18 +0200
changeset 1048 582b3a028cbc
parent 971 dd20ed7b6a1c
permissions -rw-r--r--
#FEATURE by cg class: MCMethodDefinition changed: #postloadOver:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
110
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:goodies/monticello' }"
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
971
dd20ed7b6a1c class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 942
diff changeset
     3
"{ NameSpace: Smalltalk }"
dd20ed7b6a1c class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 942
diff changeset
     4
110
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
MCRepository subclass:#MCFileBasedRepository
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	instanceVariableNames:'cache allFileNames'
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	classVariableNames:''
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	poolDictionaries:''
627
1f300f1e9ad4 category change
Claus Gittinger <cg@exept.de>
parents: 356
diff changeset
     9
	category:'SCM-Monticello-Repositories'
110
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
903
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
    13
!MCFileBasedRepository class methodsFor:'misc'!
110
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
flushAllCaches
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
	self allSubInstancesDo: [:ea | ea flushCache]
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
! !
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!MCFileBasedRepository methodsFor:'as yet unclassified'!
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
cache
235
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
    22
	^ cache ifNil: [cache := Dictionary new]
110
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
!
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
cacheAllFileNamesDuring: aBlock
235
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
    26
	allFileNames := self allFileNames.
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
    27
	^ aBlock ensure: [allFileNames := nil]
110
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
!
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
cachedFileNames
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
	^cache == nil
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
		ifTrue: [#()]
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
		ifFalse: [cache keys]
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
!
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
canReadFileNamed: aString
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
	| reader |
235
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
    38
	reader := MCVersionReader readerClassForFileNamed: aString.
110
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
	^ reader notNil
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
!
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
filterFileNames: aCollection forVersionNamed: aString
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
	^ aCollection select: [:ea | (self versionNameFromFileName: ea) = aString] 
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
!
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
flushCache
235
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
    47
	cache := nil
110
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
!
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
loadVersionFromFileNamed: aString
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
	^ self versionReaderForFileNamed: aString do: [:r | r version]
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
!
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
loadVersionInfoFromFileNamed: aString
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
	^ self versionReaderForFileNamed: aString do: [:r | r info]
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
	
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
!
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
maxCacheSize
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
	^ 8
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
!
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
235
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
    63
notifyList
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
    64
        (self allFileNames includes: 'notify') ifFalse: [^ #()].
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
    65
        ^ self readStreamForFileNamed: 'notify' do:
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
    66
                [:s |
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
    67
                s upToEnd asStringWithSqueakLineEndings findTokens: (String with: Character cr)]
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
    68
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
    69
    "Modified: / 12-09-2010 / 16:06:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
110
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
!
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
235
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
    72
packageNameFromFileName: aString
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
    73
        ^ (aString copyUpToLast: $-)
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
    74
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
    75
    "Created: / 16-09-2010 / 16:10:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
    76
    "Modified: / 16-09-2010 / 18:45:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
110
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
!
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
942
42b8193def1a class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 903
diff changeset
    79
readStreamForFileNamed: aString do: aBlock
42b8193def1a class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 903
diff changeset
    80
    self subclassResponsibility
42b8193def1a class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 903
diff changeset
    81
!
42b8193def1a class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 903
diff changeset
    82
903
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
    83
resizeCache: aDictionary
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
    84
        [aDictionary size <= self maxCacheSize] whileFalse:
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
    85
                [aDictionary removeKey: aDictionary keys asArray atRandom]
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
    86
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
    87
    "Modified: / 15-09-2010 / 13:15:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
    88
!
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
    89
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
    90
versionReaderForFileNamed: aString do: aBlock
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
    91
        ^ self
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
    92
                readStreamForFileNamed: aString
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
    93
                do: [:s | | class |                    
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
    94
                        (class := MCVersionReader readerClassForFileNamed: aString) ifNotNil:
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
    95
                                [ aBlock value: (class on: s fileName: aString)]]
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
    96
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
    97
    "Modified: / 12-09-2010 / 19:40:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
    98
!
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
    99
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   100
versionWithInfo: aVersionInfo ifAbsent: errorBlock
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   101
	| version |
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   102
	(self allFileNamesForVersionNamed: aVersionInfo name) do:
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   103
		[:fileName |
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   104
		version := self versionFromFileNamed: fileName.
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   105
		version info = aVersionInfo ifTrue: [^ version]].
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   106
	^ errorBlock value
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   107
!
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   108
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   109
writeStreamForFileNamed: aString do: aBlock
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   110
	^ self writeStreamForFileNamed: aString replace: false do: aBlock
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   111
! !
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   112
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   113
!MCFileBasedRepository methodsFor:'printing & storing'!
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   114
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   115
basicStoreVersion: aVersion
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   116
	self
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   117
		writeStreamForFileNamed: aVersion fileName
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   118
		do: [:s | aVersion fileOutOn: s].
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   119
	aVersion isCacheable ifTrue: [
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   120
		cache ifNil: [cache := Dictionary new].
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   121
		cache at: aVersion fileName put: aVersion].
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   122
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   123
! !
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   124
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   125
!MCFileBasedRepository methodsFor:'queries'!
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   126
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   127
allFileNames
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   128
	self subclassResponsibility
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   129
!
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   130
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   131
allFileNamesForVersionNamed: aString
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   132
	^ self filterFileNames: self readableFileNames forVersionNamed: aString
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   133
!
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   134
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   135
allFileNamesOrCache
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   136
	^ allFileNames ifNil: [self allFileNames]
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   137
!
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   138
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   139
allPackageNames
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   140
        ^ (self readableFileNames collect: [:ea | self packageNameFromFileName: ea])
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   141
            asSet asOrderedCollection
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   142
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   143
    "Created: / 16-09-2010 / 16:10:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   144
    "Modified: / 16-09-2010 / 18:44:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   145
!
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   146
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   147
allVersionNames
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   148
	^ self readableFileNames collect: [:ea | self versionNameFromFileName: ea]
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   149
!
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   150
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   151
closestAncestorVersionFor: anAncestry ifNone: errorBlock
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   152
	^ self cacheAllFileNamesDuring:
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   153
		[super closestAncestorVersionFor: anAncestry ifNone: errorBlock]
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   154
!
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   155
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   156
includesVersionNamed: aString
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   157
	^ self allVersionNames includes: aString
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   158
!
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   159
110
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
possiblyNewerVersionsOfAnyOf: someVersions
971
dd20ed7b6a1c class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 942
diff changeset
   161
        | pkgs |
dd20ed7b6a1c class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 942
diff changeset
   162
        pkgs := Dictionary new.
110
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
971
dd20ed7b6a1c class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 942
diff changeset
   164
        someVersions do: [:aVersionInfo |
dd20ed7b6a1c class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 942
diff changeset
   165
                pkgs at: (aVersionInfo name copyUpToLast: $-)
dd20ed7b6a1c class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 942
diff changeset
   166
                        put: (aVersionInfo name copyAfterLast: $.) asNumber].
110
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
971
dd20ed7b6a1c class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 942
diff changeset
   168
        ^[
dd20ed7b6a1c class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 942
diff changeset
   169
            self allVersionNames select: [:each |
dd20ed7b6a1c class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 942
diff changeset
   170
                (pkgs at: (each copyUpToLast: $-) ifPresent: [:verNumber |
dd20ed7b6a1c class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 942
diff changeset
   171
                        verNumber < (each copyAfterLast: $.) asNumber
dd20ed7b6a1c class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 942
diff changeset
   172
                                or: [verNumber = (each copyAfterLast: $.) asNumber
dd20ed7b6a1c class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 942
diff changeset
   173
                                        and: [someVersions noneSatisfy: [:v | v name = each]]]]) == true]
dd20ed7b6a1c class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 942
diff changeset
   174
        ] on: Error do: [:ex | 
dd20ed7b6a1c class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 942
diff changeset
   175
            ex return: #()
dd20ed7b6a1c class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 942
diff changeset
   176
        ]
110
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
!
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
readableFileNames
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
	| all cached new |
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
	all := self allFileNamesOrCache.	"from repository"
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
	cached := self cachedFileNames.	"in memory"
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
	new := all difference: cached.
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
	^ (cached asArray, new)
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
		select: [:ea | self canReadFileNamed: ea]
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
!
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
versionFromFileNamed: aString
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
	| v |
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
	v := self cache at: aString ifAbsent: [self loadVersionFromFileNamed: aString].
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
	self resizeCache: cache.
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
	(v notNil and: [v isCacheable]) ifTrue: [cache at: aString put: v].
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
	^ v
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
!
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
versionInfoFromFileNamed: aString
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
	self cache at: aString ifPresent: [:v | ^ v info].
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
	^ self loadVersionInfoFromFileNamed: aString
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
!
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
versionNameFromFileName: aString
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
	^ (aString copyUpToLast: $.) copyUpTo: $(
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
! !
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
!MCFileBasedRepository class methodsFor:'documentation'!
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
version
971
dd20ed7b6a1c class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 942
diff changeset
   208
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCFileBasedRepository.st,v 1.7 2015-02-09 13:57:21 cg Exp $'
235
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
   209
!
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
   210
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
   211
version_CVS
971
dd20ed7b6a1c class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 942
diff changeset
   212
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCFileBasedRepository.st,v 1.7 2015-02-09 13:57:21 cg Exp $'
235
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
   213
!
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
   214
8b1ac62deee4 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 110
diff changeset
   215
version_SVN
971
dd20ed7b6a1c class: MCFileBasedRepository
Claus Gittinger <cg@exept.de>
parents: 942
diff changeset
   216
    ^ '$Id: MCFileBasedRepository.st,v 1.7 2015-02-09 13:57:21 cg Exp $'
110
8a2078b5b002 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
! !
903
ce9914318a74 categories
Claus Gittinger <cg@exept.de>
parents: 627
diff changeset
   218