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