MCRepository.st
author Jan Vrany <jan.vrany@labware.com>
Tue, 11 Jul 2023 12:13:27 +0100
branchjv
changeset 1173 e3dd2050492e
parent 1160 1539e58bab91
permissions -rw-r--r--
Update class category to match package name if it does not This is needed because in Squeak / Pharo world package membership is defined by (class) category prefix. This is soo annoying...
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1159
5f3f06a99a93 Make all repository types to store info change record
Jan Vrany <jan.vrany@labware.com>
parents: 1095
diff changeset
     1
"
5f3f06a99a93 Make all repository types to store info change record
Jan Vrany <jan.vrany@labware.com>
parents: 1095
diff changeset
     2
COPYRIGHT (c) 2022 LabWare
5f3f06a99a93 Make all repository types to store info change record
Jan Vrany <jan.vrany@labware.com>
parents: 1095
diff changeset
     3
"
1095
87f223484bc3 Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents: 965
diff changeset
     4
"{ Package: 'stx:goodies/monticello' }"
87f223484bc3 Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents: 965
diff changeset
     5
87f223484bc3 Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents: 965
diff changeset
     6
"{ NameSpace: Smalltalk }"
87f223484bc3 Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents: 965
diff changeset
     7
87f223484bc3 Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents: 965
diff changeset
     8
Object subclass:#MCRepository
87f223484bc3 Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents: 965
diff changeset
     9
	instanceVariableNames:'creationTemplate storeDiffs'
87f223484bc3 Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents: 965
diff changeset
    10
	classVariableNames:'Settings'
87f223484bc3 Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents: 965
diff changeset
    11
	poolDictionaries:''
87f223484bc3 Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents: 965
diff changeset
    12
	category:'SCM-Monticello-Repositories'
87f223484bc3 Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents: 965
diff changeset
    13
!
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
1159
5f3f06a99a93 Make all repository types to store info change record
Jan Vrany <jan.vrany@labware.com>
parents: 1095
diff changeset
    15
!MCRepository class methodsFor:'documentation'!
5f3f06a99a93 Make all repository types to store info change record
Jan Vrany <jan.vrany@labware.com>
parents: 1095
diff changeset
    16
5f3f06a99a93 Make all repository types to store info change record
Jan Vrany <jan.vrany@labware.com>
parents: 1095
diff changeset
    17
copyright
5f3f06a99a93 Make all repository types to store info change record
Jan Vrany <jan.vrany@labware.com>
parents: 1095
diff changeset
    18
"
5f3f06a99a93 Make all repository types to store info change record
Jan Vrany <jan.vrany@labware.com>
parents: 1095
diff changeset
    19
COPYRIGHT (c) 2022 LabWare
5f3f06a99a93 Make all repository types to store info change record
Jan Vrany <jan.vrany@labware.com>
parents: 1095
diff changeset
    20
5f3f06a99a93 Make all repository types to store info change record
Jan Vrany <jan.vrany@labware.com>
parents: 1095
diff changeset
    21
5f3f06a99a93 Make all repository types to store info change record
Jan Vrany <jan.vrany@labware.com>
parents: 1095
diff changeset
    22
"
5f3f06a99a93 Make all repository types to store info change record
Jan Vrany <jan.vrany@labware.com>
parents: 1095
diff changeset
    23
! !
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
210
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
    25
!MCRepository class methodsFor:'initialization'!
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
    26
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
    27
initialize
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
    28
        "self initialize"
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
    29
    "
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
    30
        ExternalSettings registerClient: self.
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
    31
    "
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
    32
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
    33
    "Modified: / 13-10-2010 / 14:13:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
    34
! !
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
    35
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
!MCRepository class methodsFor:'as yet unclassified'!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
fillInTheBlankRequest
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
	self subclassResponsibility.
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
morphicConfigure
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
	^ self new
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
! !
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
!MCRepository class methodsFor:'external settings'!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
fetchExternalSettingsIn: aDirectory
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
	"Scan for settings file"
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
	"MCRepository fetchExternalSettingsIn: ExternalSettings preferenceDirectory"
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
	| stream |
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
	(aDirectory fileExists: self settingsFileName)
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
		ifFalse: [^self].
210
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
    55
	stream := aDirectory readOnlyFileNamed: self settingsFileName.
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
	stream
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
		ifNotNil: [
210
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
    58
			[Settings := ExternalSettings parseServerEntryArgsFrom: stream]
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
				ensure: [stream close]].
210
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
    60
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
releaseExternalSettings
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
	Settings := nil.
210
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
    65
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
settingsFileName
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
	^ 'mcSettings'
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
! !
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
910
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
    72
!MCRepository class methodsFor:'queries'!
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
910
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
    74
allConcreteSubclasses
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
    75
	^ self withAllSubclasses reject: [:ea | ea isAbstract]
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
    76
!
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
    77
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
    78
creationTemplate
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
    79
	self subclassResponsibility.
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
910
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
    82
description
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
    83
	^ nil
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
910
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
    86
isAbstract
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
    87
	^ self description isNil
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
    88
! !
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
    89
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
    90
!MCRepository methodsFor:'accessing'!
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
creationTemplate
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
	^ creationTemplate
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
creationTemplate: aString
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
	self creationTemplate ifNotNil: [ self error: 'Creation template already set for this MCRepository instance.' ].
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
	
210
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
    99
	creationTemplate := aString.
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
description
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
	^ self class name
910
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   104
! !
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   105
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   106
!MCRepository methodsFor:'as yet unclassified'!
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   107
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   108
alwaysStoreDiffs
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   109
	^ storeDiffs ifNil: [false]
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   110
!
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   111
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   112
asCreationTemplate
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   113
	^ self creationTemplate
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
doAlwaysStoreDiffs
210
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
   117
	storeDiffs := true
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
doNotAlwaysStoreDiffs
210
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
   121
	storeDiffs := false
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
notificationForVersion: aVersion
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
	^ MCVersionNotification version: aVersion repository: self
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
notifyList
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
	^ #()
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
prepareVersionForStorage: aVersion
965
e5e12ca03097 class: MCRepository
Claus Gittinger <cg@exept.de>
parents: 910
diff changeset
   133
    self alwaysStoreDiffs ifTrue: [
e5e12ca03097 class: MCRepository
Claus Gittinger <cg@exept.de>
parents: 910
diff changeset
   134
        ^ aVersion 
e5e12ca03097 class: MCRepository
Claus Gittinger <cg@exept.de>
parents: 910
diff changeset
   135
            asDiffAgainst: (self closestAncestorVersionFor: aVersion info ifNone: [^ aVersion])
e5e12ca03097 class: MCRepository
Claus Gittinger <cg@exept.de>
parents: 910
diff changeset
   136
    ] ifFalse: [
e5e12ca03097 class: MCRepository
Claus Gittinger <cg@exept.de>
parents: 910
diff changeset
   137
        ^ aVersion
e5e12ca03097 class: MCRepository
Claus Gittinger <cg@exept.de>
parents: 910
diff changeset
   138
    ]
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
sendNotificationsForVersion: aVersion
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
	| notification notifyList |
210
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
   143
	notifyList := self notifyList.
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
	notifyList isEmpty ifFalse:
210
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
   145
		[notification := self notificationForVersion: aVersion.
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
		notifyList do: [:ea | notification notify: ea]]
514
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   147
! !
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   148
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   149
!MCRepository methodsFor:'comparing'!
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   150
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   151
= other
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   152
	^ other species = self species and: [other description = self description]
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
514
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   155
hash
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   156
	^ self description hash
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
! !
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
!MCRepository methodsFor:'interface'!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
includesVersionNamed: aString
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
	self subclassResponsibility
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
1160
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   165
storePackage: packageName
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   166
    "Smalltalk/X specific: store (fileout) a package named `packageName` 
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   167
     into this repository.
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   168
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   169
     This is a utility method useful for automation: 
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   170
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   171
        (TonelRepository directory: '/tmp') storePackage: 'stx:goodies/monticello'
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   172
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   173
    "
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   174
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   175
    | mcpkg mcwc mcvi mcversion |
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   176
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   177
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   178
    mcpkg := MCPackage named: packageName.
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   179
    mcwc := mcpkg workingCopy.
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   180
    mcvi := MCVersionInfo forPackage: packageName.
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   181
    [
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   182
        mcversion := mcwc newVersion.
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   183
        mcversion snapshot options includeExtrasForSTX:false.
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   184
    ] on:MCVersionNameAndMessageRequest do:[:ex | 
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   185
        ex resume:(Array with:mcvi name with:mcvi message) 
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   186
    ].
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   187
    mcversion info:mcvi.
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   188
    self storeVersion:mcversion.
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   189
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   190
    "
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   191
    (TonelRepository directory: '/tmp') storePackage: 'jv:libgdbs'
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   192
    "
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   193
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   194
    "Created: / 25-07-2022 / 11:00:55 / Jan Vrany <jan.vrany@labware.com>"
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   195
!
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   196
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   197
storeVersion: aVersion
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   198
    | info |
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   199
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   200
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   201
    self basicStoreVersion: (self prepareVersionForStorage: aVersion).
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   202
    self sendNotificationsForVersion: aVersion.
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   203
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   204
    "/ Add entry to changeset so user can figure out when the
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   205
    "/ package was last saved and where.
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   206
    info := '%1 into %2' bindWith: aVersion package name with: self description.
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   207
    ChangeSet current addChange: 
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   208
        (InfoChange type: 'fileout' data: info timestamp: Timestamp now).
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   209
    self class addInfoRecord: 'fileout ', info
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   210
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   211
    "Modified: / 25-07-2022 / 10:42:08 / Jan Vrany <jan.vrany@labware.com>"
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   212
!
1539e58bab91 Add utility method `MCRepository >> storePackage:`
Jan Vrany <jan.vrany@labware.com>
parents: 1159
diff changeset
   213
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   214
versionWithInfo: aVersionInfo
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   215
	^ self versionWithInfo: aVersionInfo ifAbsent: [nil]
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
versionWithInfo: aVersionInfo ifAbsent: aBlock
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
	self subclassResponsibility 
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
! !
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
514
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   222
!MCRepository methodsFor:'printing & storing'!
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   223
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   224
basicStoreVersion: aVersion
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   225
	self subclassResponsibility
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   226
!
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   227
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   228
printOn: aStream
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   229
	super printOn: aStream.
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   230
	aStream
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   231
		nextPut: $(;
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   232
		nextPutAll: self description;
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   233
		nextPut: $).
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   234
! !
68b325cf69cb category changes
Claus Gittinger <cg@exept.de>
parents: 309
diff changeset
   235
910
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   236
!MCRepository methodsFor:'queries'!
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   237
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   238
closestAncestorVersionFor: anAncestry ifNone: errorBlock
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   239
	| v | 
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   240
	anAncestry breadthFirstAncestorsDo:
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   241
		[:ancestorInfo |
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   242
		(v := self versionWithInfo: ancestorInfo) ifNotNil: [ ^ v]].
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   243
	^ errorBlock value
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   244
!
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   245
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   246
possiblyNewerVersionsOfAnyOf: someVersions
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   247
	^#()
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   248
! !
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   249
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
!MCRepository methodsFor:'testing'!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   252
isValid
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
	^true
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
! !
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
!MCRepository class methodsFor:'documentation'!
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
version
965
e5e12ca03097 class: MCRepository
Claus Gittinger <cg@exept.de>
parents: 910
diff changeset
   259
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCRepository.st,v 1.8 2015-02-07 10:17:20 cg Exp $'
137
98f158a061a2 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 106
diff changeset
   260
!
98f158a061a2 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 106
diff changeset
   261
98f158a061a2 more porting (but still unfinished)
Claus Gittinger <cg@exept.de>
parents: 106
diff changeset
   262
version_CVS
965
e5e12ca03097 class: MCRepository
Claus Gittinger <cg@exept.de>
parents: 910
diff changeset
   263
    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCRepository.st,v 1.8 2015-02-07 10:17:20 cg Exp $'
210
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
   264
!
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
   265
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
   266
version_SVN
6948613cd845 added: #version_CVS
Claus Gittinger <cg@exept.de>
parents: 137
diff changeset
   267
965
e5e12ca03097 class: MCRepository
Claus Gittinger <cg@exept.de>
parents: 910
diff changeset
   268
    ^'$Id: MCRepository.st,v 1.8 2015-02-07 10:17:20 cg Exp $'
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
! !
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
910
6a56267a1e3c categories
Claus Gittinger <cg@exept.de>
parents: 675
diff changeset
   271
106
5d9bfc22f97b initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
MCRepository initialize!