author | Claus Gittinger <cg@exept.de> |
Thu, 14 Jun 2018 17:02:40 +0200 | |
changeset 4329 | f1a534377d1e |
parent 4309 | 7f5421ee319d |
child 4413 | 934abbca7d85 |
permissions | -rw-r--r-- |
4309 | 1 |
"{ Encoding: utf8 }" |
2 |
||
2674 | 3 |
" |
4 |
COPYRIGHT (c) 2011 by Claus Gittinger |
|
5 |
All Rights Reserved |
|
6 |
||
7 |
This software is furnished under a license and may be used |
|
8 |
only in accordance with the terms of that license and with the |
|
9 |
inclusion of the above copyright notice. This software may not |
|
10 |
be provided or otherwise made available to, or used by, any |
|
11 |
other person. No title to or ownership of the software is |
|
12 |
hereby transferred. |
|
13 |
" |
|
14 |
"{ Package: 'stx:libbasic3' }" |
|
15 |
||
4083 | 16 |
"{ NameSpace: Smalltalk }" |
17 |
||
2674 | 18 |
AbstractSourceCodeManager subclass:#DataBaseSourceCodeManager |
2689
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
19 |
instanceVariableNames:'' |
2733
e164eb9dbd69
shownInSourceCodeManager from superclass
Claus Gittinger <cg@exept.de>
parents:
2717
diff
changeset
|
20 |
classVariableNames:'Verbose RepositoryName ModuleDBs CachedDBHandles' |
2689
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
21 |
poolDictionaries:'' |
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
22 |
category:'System-SourceCodeManagement' |
2674 | 23 |
! |
24 |
||
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
25 |
VersionInfo subclass:#DBVersionInfo |
4143 | 26 |
instanceVariableNames:'symbolicVersionName' |
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
27 |
classVariableNames:'' |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
28 |
poolDictionaries:'' |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
29 |
privateIn:DataBaseSourceCodeManager |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
30 |
! |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
31 |
|
2674 | 32 |
!DataBaseSourceCodeManager class methodsFor:'documentation'! |
33 |
||
34 |
copyright |
|
35 |
" |
|
36 |
COPYRIGHT (c) 2011 by Claus Gittinger |
|
37 |
All Rights Reserved |
|
38 |
||
39 |
This software is furnished under a license and may be used |
|
40 |
only in accordance with the terms of that license and with the |
|
41 |
inclusion of the above copyright notice. This software may not |
|
42 |
be provided or otherwise made available to, or used by, any |
|
43 |
other person. No title to or ownership of the software is |
|
44 |
hereby transferred. |
|
45 |
" |
|
46 |
! |
|
47 |
||
48 |
documentation |
|
49 |
" |
|
2687 | 50 |
A simple database sourceCodeManager, which saves versions in a relational db |
2674 | 51 |
|
2687 | 52 |
unfinished |
2674 | 53 |
|
54 |
[author:] |
|
55 |
Claus Gittinger |
|
56 |
" |
|
57 |
! ! |
|
58 |
||
59 |
!DataBaseSourceCodeManager class methodsFor:'accessing'! |
|
60 |
||
2687 | 61 |
getRepositoryDBForModule:aModuleName |
2674 | 62 |
"internal: used when accessing a source repository. |
2687 | 63 |
Return the db-name for a particular module. |
64 |
If no specific db was defined for that module, return the value of |
|
65 |
the global (fallBack) repositoryDB. |
|
2674 | 66 |
Nil is returned if no repository is available." |
67 |
||
2687 | 68 |
ModuleDBs isNil ifTrue:[^ RepositoryName]. |
69 |
aModuleName isNil ifTrue:[^ RepositoryName]. |
|
70 |
^ ModuleDBs at:aModuleName ifAbsent:RepositoryName. |
|
2674 | 71 |
|
72 |
"Modified: / 20-05-1998 / 16:30:12 / cg" |
|
2687 | 73 |
"Created: / 26-12-2011 / 00:30:17 / cg" |
2674 | 74 |
! |
75 |
||
76 |
knownModules |
|
77 |
"return the modules, we currently know" |
|
78 |
||
2687 | 79 |
ModuleDBs isEmptyOrNil ifTrue:[^ #() ]. |
80 |
^ ModuleDBs keys |
|
81 |
||
82 |
"Modified: / 26-12-2011 / 00:48:51 / cg" |
|
83 |
! |
|
2674 | 84 |
|
3598
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
85 |
repositoryInfoPerModule |
4083 | 86 |
"return the dictionary, which associates repository paths to module names. |
3598
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
87 |
If no entry is contained in this dictionary for some module, |
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
88 |
the default path will be used." |
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
89 |
|
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
90 |
^ ModuleDBs ? #() |
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
91 |
! |
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
92 |
|
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
93 |
repositoryInfoPerModule:aDictionary |
4083 | 94 |
"set the dictionary, which associates repository paths to module names. |
3598
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
95 |
If no entry is contained in this dictionary for some module, |
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
96 |
the default path will be used." |
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
97 |
|
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
98 |
ModuleDBs := aDictionary |
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
99 |
! |
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
100 |
|
2687 | 101 |
repositoryName |
102 |
"return the default repository" |
|
103 |
||
2717 | 104 |
^ RepositoryName ? self defaultRepositoryName |
2687 | 105 |
|
106 |
"Created: / 26-12-2011 / 00:34:14 / cg" |
|
2674 | 107 |
! |
108 |
||
2687 | 109 |
repositoryName:aDBSpec |
110 |
"set the default repository" |
|
111 |
||
112 |
RepositoryName := aDBSpec. |
|
113 |
||
114 |
"Created: / 26-12-2011 / 01:13:59 / cg" |
|
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
115 |
! |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
116 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
117 |
utilities |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
118 |
"Returns a 'utilities' object that can be used by tools." |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
119 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
120 |
^ DataBaseSourceCodeManagerUtilities forManager: self |
2687 | 121 |
! ! |
122 |
||
123 |
!DataBaseSourceCodeManager class methodsFor:'private'! |
|
124 |
||
3598
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
125 |
closeAllCachedConnections |
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
126 |
CachedDBHandles notNil ifTrue:[ |
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
127 |
CachedDBHandles do:[:each | |
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
128 |
each close |
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
129 |
]. |
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
130 |
CachedDBHandles := nil. |
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
131 |
]. |
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
132 |
! |
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
133 |
|
2687 | 134 |
dbHandleForModule:aModuleName |
135 |
|dbName handle| |
|
136 |
||
137 |
CachedDBHandles isNil ifTrue:[ |
|
2689
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
138 |
CachedDBHandles := WeakValueDictionary new. |
2687 | 139 |
]. |
2674 | 140 |
|
2687 | 141 |
handle := CachedDBHandles at:aModuleName ifAbsent:nil. |
142 |
handle notNil ifTrue:[^ handle ]. |
|
143 |
||
144 |
dbName := self getRepositoryDBForModule:aModuleName. |
|
145 |
dbName isNil ifTrue:[ |
|
146 |
self error:'no database'. |
|
147 |
^ nil |
|
148 |
]. |
|
2674 | 149 |
|
2687 | 150 |
handle := self openDB:dbName. |
151 |
handle isNil ifTrue:[ |
|
152 |
self error:'no database'. |
|
153 |
^ nil |
|
154 |
]. |
|
155 |
CachedDBHandles at:aModuleName put:handle. |
|
156 |
^ handle. |
|
157 |
||
158 |
"Created: / 26-12-2011 / 00:59:49 / cg" |
|
2684
4fed20db7ecb
added: #repositoryPath: (fixes preference save/load problem)
vrany
parents:
2674
diff
changeset
|
159 |
! |
4fed20db7ecb
added: #repositoryPath: (fixes preference save/load problem)
vrany
parents:
2674
diff
changeset
|
160 |
|
2687 | 161 |
openDB:aDBName |
162 |
|idx dbType dbSpec| |
|
163 |
||
164 |
idx := aDBName indexOf:$:. |
|
165 |
dbType := aDBName copyTo:idx-1. |
|
166 |
dbSpec := aDBName copyFrom:idx+1. |
|
167 |
||
168 |
dbType = 'sqlite' ifTrue:[ |
|
169 |
^ self openSQLite:dbSpec |
|
170 |
]. |
|
171 |
dbType = 'odbc' ifTrue:[ |
|
172 |
^ self openODBC:dbSpec |
|
173 |
]. |
|
174 |
self error:'unsupported dbtype' |
|
175 |
||
176 |
"Created: / 26-12-2011 / 01:05:57 / cg" |
|
177 |
! |
|
178 |
||
179 |
openODBC:dbSpec |
|
3356
6250bc835354
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
2843
diff
changeset
|
180 |
self halt:'unimplemented'. |
2684
4fed20db7ecb
added: #repositoryPath: (fixes preference save/load problem)
vrany
parents:
2674
diff
changeset
|
181 |
|
2687 | 182 |
"Created: / 26-12-2011 / 01:06:41 / cg" |
183 |
! |
|
184 |
||
185 |
openSQLite:dbSpec |
|
2689
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
186 |
|file con crsr tables row| |
2687 | 187 |
|
188 |
file := dbSpec. |
|
189 |
con := SQLiteConnection fileNamed:file. |
|
190 |
con open. |
|
2684
4fed20db7ecb
added: #repositoryPath: (fixes preference save/load problem)
vrany
parents:
2674
diff
changeset
|
191 |
|
2689
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
192 |
tables := OrderedCollection new. |
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
193 |
|
2687 | 194 |
SqliteError handle:[:ex | |
195 |
] do:[ |
|
196 |
crsr := con executeQuery:'SELECT * FROM sqlite_master WHERE type=''table'';'. |
|
197 |
]. |
|
2689
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
198 |
crsr notNil ifTrue:[ |
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
199 |
[ |
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
200 |
crsr next. |
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
201 |
row := crsr rowAsDictionary. |
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
202 |
row notNil |
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
203 |
] whileTrue:[ |
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
204 |
tables add:(row at:'name') |
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
205 |
]. |
2687 | 206 |
]. |
207 |
||
2689
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
208 |
(tables includes:'versions') ifTrue:[ |
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
209 |
Transcript showCR:'DBSourceCodeManager: table "versions" already present.'. |
2689
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
210 |
] ifFalse:[ |
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
211 |
Transcript showCR:'DBSourceCodeManager: creating table "versions"...'. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
212 |
con executeQuery:'CREATE table versions (versionId primary key, name, packageId, author, timestamp, state);'. |
2689
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
213 |
]. |
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
214 |
|
2689
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
215 |
(tables includes:'packages') ifTrue:[ |
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
216 |
Transcript showCR:'DBSourceCodeManager: table "packages" already present.'. |
2689
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
217 |
] ifFalse:[ |
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
218 |
Transcript showCR:'DBSourceCodeManager: creating table "packages"...'. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
219 |
con executeQuery:'CREATE table packages (packageId primary key, name);'. |
2689
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
220 |
]. |
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
221 |
|
2689
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
222 |
(tables includes:'classes') ifTrue:[ |
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
223 |
Transcript showCR:'DBSourceCodeManager: table "classes" already present.'. |
2689
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
224 |
] ifFalse:[ |
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
225 |
Transcript showCR:'DBSourceCodeManager: creating table "classes"...'. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
226 |
con executeQuery:'CREATE table classes (id primary key, name, superclass, category, definition, packageId, versionId, methodIdList);'. |
2689
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
227 |
]. |
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
228 |
|
2689
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
229 |
(tables includes:'methods') ifTrue:[ |
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
230 |
Transcript showCR:'DBSourceCodeManager: table "methods" already present.'. |
2689
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
231 |
] ifFalse:[ |
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
232 |
Transcript showCR:'DBSourceCodeManager: creating table "methods"...'. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
233 |
con executeQuery:'CREATE table methods (id primary key, className, selector, source, bytecode, packageId, versionId);'. |
2689
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
234 |
]. |
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
235 |
|
3598
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
236 |
(tables includes:'chunks') ifTrue:[ |
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
237 |
Transcript showCR:'DBSourceCodeManager: table "chunks" already present.'. |
3598
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
238 |
] ifFalse:[ |
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
239 |
Transcript showCR:'DBSourceCodeManager: creating table "chunks"...'. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
240 |
con executeQuery:'CREATE table chunks (id primary key, source);'. |
3598
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
241 |
]. |
2689
0c20a2edaac8
variable renamed in: #dbHandleForModule:
Claus Gittinger <cg@exept.de>
parents:
2687
diff
changeset
|
242 |
|
2687 | 243 |
^ con |
244 |
||
245 |
"Created: / 26-12-2011 / 01:06:37 / cg" |
|
2674 | 246 |
! ! |
247 |
||
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
248 |
!DataBaseSourceCodeManager class methodsFor:'private-saving'! |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
249 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
250 |
checkInClassAndCollectManifestOf:aClass db:dbConnection |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
251 |
"check in a class; write one record for the definition, |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
252 |
then one for each method. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
253 |
Return a manifest, which lists each save chunk's key." |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
254 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
255 |
^ String streamContents:[:s | |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
256 |
s nextPutLine:(self manifestOfStoredClassDefinitionOf:aClass db:dbConnection). |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
257 |
aClass theMetaclass selectorsAndMethodsDo:[:sel :mthd | |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
258 |
(self isVersionMethodSelector:sel) ifTrue:[ |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
259 |
Transcript showCR:'skip ',sel. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
260 |
] ifFalse:[ |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
261 |
s nextPutLine:(self manifestOfStoredMethod:mthd selector:sel meta:true db:dbConnection). |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
262 |
]. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
263 |
]. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
264 |
aClass theNonMetaclass selectorsAndMethodsDo:[:sel :mthd | |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
265 |
s nextPutLine:(self manifestOfStoredMethod:mthd selector:sel meta:false db:dbConnection). |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
266 |
]. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
267 |
]. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
268 |
! |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
269 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
270 |
insertChunk:chunkData key:key db:dbConnection |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
271 |
[ |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
272 |
dbConnection |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
273 |
executeQuery:( 'insert into chunks values (''%1'', ''%2'')' |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
274 |
bindWith:key |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
275 |
with:(chunkData withCEscapes copyReplaceString:'''' withString:'''''')). |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
276 |
] on:SqliteError do:[ |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
277 |
"/ already there? |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
278 |
|rslt| |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
279 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
280 |
rslt := dbConnection executeQuery:( 'select 1 from chunks where id = ''%1''' bindWith:key). |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
281 |
rslt next isNil ifTrue:[ |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
282 |
"/ not there - error |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
283 |
self error:'cannot insert chunk int db' |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
284 |
]. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
285 |
"/ ok - already there. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
286 |
]. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
287 |
! |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
288 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
289 |
keyForChunk:aString |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
290 |
"chunks are keyed by their sha1 hash value. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
291 |
This has the advantage, that: |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
292 |
- the key alone shows if anything has changed, |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
293 |
- no new record is required if a chunk uis unchanged, |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
294 |
- going back to an old version automatically reuses/refers to the old chunk, |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
295 |
- two independently changed methods will generate the same key" |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
296 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
297 |
^ (SHA1Stream hashValueOf:aString) hexPrintString |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
298 |
! |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
299 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
300 |
manifestOfStoredClassDefinitionOf:aClass db:dbConnection |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
301 |
"save a class definition; |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
302 |
return a manifest line" |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
303 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
304 |
|dfn id| |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
305 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
306 |
dfn := aClass theNonMetaclass definition. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
307 |
id := self keyForChunk:dfn. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
308 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
309 |
self insertChunk:dfn key:id db:dbConnection. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
310 |
^ 'definition: ' , id. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
311 |
! |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
312 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
313 |
manifestOfStoredMethod:aMethod selector:aSymbol meta:isMeta db:dbConnection |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
314 |
"save a method; |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
315 |
return a manifest line" |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
316 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
317 |
|src id| |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
318 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
319 |
src := aMethod source. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
320 |
id := self keyForChunk:src. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
321 |
self insertChunk:src key:id db:dbConnection. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
322 |
^ (isMeta ifTrue:'class method: ' ifFalse:'method: ') |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
323 |
, aSymbol , ' ' |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
324 |
, id. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
325 |
! |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
326 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
327 |
savePreferencesOn:aStream |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
328 |
aStream nextPutLine:'DataBaseSourceCodeManager notNil ifTrue:['. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
329 |
self repositoryInfoPerModule notEmptyOrNil ifTrue:[ |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
330 |
aStream nextPutLine:' DataBaseSourceCodeManager repositoryInfoPerModule:' , self repositoryInfoPerModule storeString , '.'. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
331 |
]. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
332 |
(Smalltalk at:#SourceCodeManager) == self ifTrue:[ |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
333 |
aStream nextPutLine:' Smalltalk at:#SourceCodeManager put:DataBaseSourceCodeManager.'. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
334 |
]. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
335 |
aStream nextPutLine:' DataBaseSourceCodeManager repositoryName:' , self repositoryName storeString , '.'. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
336 |
aStream nextPutLine:'].'. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
337 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
338 |
"Created: / 09-11-2006 / 15:09:25 / cg" |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
339 |
"Modified: / 22-12-2011 / 00:48:25 / cg" |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
340 |
"Modified: / 01-01-2012 / 17:02:25 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
341 |
! ! |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
342 |
|
2674 | 343 |
!DataBaseSourceCodeManager class methodsFor:'queries'! |
344 |
||
345 |
defaultRepositoryName |
|
346 |
"/ '<db-type>:[<user>[.<password>]@][<host>]<db-name>[:<table-name>]' |
|
347 |
||
348 |
^ 'sqlite:repository.db' |
|
349 |
||
350 |
"Created: / 22-12-2011 / 00:19:43 / cg" |
|
351 |
! |
|
352 |
||
353 |
enabled |
|
354 |
^ true "/ false. |
|
355 |
||
356 |
"Created: / 21-12-2011 / 17:53:34 / cg" |
|
357 |
! |
|
358 |
||
3675
71459bb0865d
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3664
diff
changeset
|
359 |
getDBNameForModule:anString |
71459bb0865d
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3664
diff
changeset
|
360 |
"for now, one repository for all modules" |
71459bb0865d
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3664
diff
changeset
|
361 |
|
71459bb0865d
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3664
diff
changeset
|
362 |
^ self repositoryName. |
71459bb0865d
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3664
diff
changeset
|
363 |
! |
71459bb0865d
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3664
diff
changeset
|
364 |
|
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
365 |
initialRevisionString |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
366 |
^ '0' |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
367 |
! |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
368 |
|
2674 | 369 |
isContainerBased |
370 |
"true, if the SCM uses some kind of source container (,v files). |
|
371 |
False, if it is like a database or filesystem." |
|
372 |
||
373 |
^ false |
|
374 |
||
375 |
"Created: / 21-12-2011 / 18:53:55 / cg" |
|
376 |
! |
|
377 |
||
378 |
isResponsibleForPackage:aString |
|
379 |
^ true. |
|
380 |
||
381 |
"Created: / 09-07-2011 / 14:32:20 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
382 |
"Modified (format): / 22-12-2011 / 00:05:39 / cg" |
|
383 |
! |
|
384 |
||
385 |
managerTypeName |
|
386 |
^ 'DBRepository' |
|
387 |
||
388 |
"Created: / 16-08-2006 / 11:05:56 / cg" |
|
389 |
! |
|
390 |
||
391 |
nameOfVersionMethodForExtensions |
|
392 |
^ #'extensionsVersion_DB' |
|
393 |
||
394 |
"Modified: / 22-12-2011 / 00:06:15 / cg" |
|
395 |
! |
|
396 |
||
397 |
nameOfVersionMethodInClasses |
|
398 |
^ #'version_DB' |
|
399 |
||
400 |
"Modified: / 22-12-2011 / 00:06:21 / cg" |
|
401 |
! |
|
402 |
||
403 |
repositoryNameForPackage:packageId |
|
404 |
"superclass AbstractSourceCodeManager class says that I am responsible to implement this method" |
|
405 |
||
406 |
^ self getDBNameForModule:(packageId upTo:$: ) |
|
407 |
||
408 |
"Created: / 21-12-2011 / 23:07:02 / cg" |
|
409 |
! |
|
410 |
||
411 |
settingsApplicationClass |
|
412 |
"link to my settings application (needed for the settings dialog" |
|
413 |
||
414 |
^ DataBaseSourceCodeManagementSettingsAppl |
|
415 |
||
416 |
"Created: / 19-04-2011 / 12:43:29 / cg" |
|
417 |
"Modified: / 22-12-2011 / 00:06:53 / cg" |
|
3598
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
418 |
! |
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
419 |
|
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
420 |
versionInfoClass |
3598
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
421 |
|
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
422 |
^DBVersionInfo |
2674 | 423 |
! ! |
424 |
||
425 |
!DataBaseSourceCodeManager class methodsFor:'source code administration'! |
|
426 |
||
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
427 |
basicCheckinClass:aClass fileName:classFileName directory:packageDir module:moduleDir logMessage:logMessage force:force |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
428 |
"low level checkin of a class into the source repository. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
429 |
Does not deal with any version method updates. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
430 |
Return true if ok, false if not." |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
431 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
432 |
|dbConnection author state| |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
433 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
434 |
aClass isPrivate ifTrue:[ |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
435 |
self reportError:'refuse to check in private classes.'. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
436 |
^ false. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
437 |
]. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
438 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
439 |
dbConnection := self dbHandleForModule:moduleDir. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
440 |
[ |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
441 |
|collectedVersionSpec hashKey basicRevisionString revisionString |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
442 |
oldRevision newRevision oldInfo symbolicVersion| |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
443 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
444 |
collectedVersionSpec := self checkInClassAndCollectManifestOf:aClass db:dbConnection. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
445 |
hashKey := self keyForChunk:collectedVersionSpec. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
446 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
447 |
self insertChunk:collectedVersionSpec key:hashKey db:dbConnection. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
448 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
449 |
oldRevision := aClass revisionOfManager:self. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
450 |
newRevision := hashKey. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
451 |
oldRevision ~= newRevision ifTrue:[ |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
452 |
oldInfo := aClass revisionInfoOfManager:self. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
453 |
oldInfo isNil ifTrue:[ |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
454 |
symbolicVersion := '1.0' |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
455 |
] ifFalse:[ |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
456 |
symbolicVersion := oldInfo symbolicVersionName ? '1.0' |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
457 |
]. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
458 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
459 |
basicRevisionString := (self revisionStringFor:aClass inModule:moduleDir directory:packageDir container:classFileName revision:hashKey). |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
460 |
revisionString := basicRevisionString,', SymbolicVersion: ',symbolicVersion. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
461 |
self updateVersionMethodOf:aClass for:revisionString. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
462 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
463 |
author := OperatingSystem getFullUserName. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
464 |
author isEmptyOrNil ifTrue:[ author := OperatingSystem getLoginName ]. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
465 |
author isEmptyOrNil ifTrue:[ author := 'unknown' ]. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
466 |
state := ''. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
467 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
468 |
[ |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
469 |
"/ (versionId primary key, name, packageId, author, timestamp) |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
470 |
dbConnection |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
471 |
executeQuery:( |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
472 |
'insert into versions (key, name, packageId, author, timestamp) values (''%1'', ''%2'', ''%3'', ''%4'', ''%5'', ''%6'')' |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
473 |
bindWith:newRevision |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
474 |
with:(symbolicVersion withCEscapes copyReplaceString:'''' withString:'''''') |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
475 |
with:(aClass package withCEscapes copyReplaceString:'''' withString:'''''') |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
476 |
with:(author withCEscapes copyReplaceString:'''' withString:'''''') |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
477 |
with:(UtcTimestamp now printStringIso8601) |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
478 |
with:state). |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
479 |
] on:SqliteError do:[ |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
480 |
"/ already there? |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
481 |
|rslt| |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
482 |
|
3678
a4ef1d7abbc4
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3675
diff
changeset
|
483 |
rslt := dbConnection executeQuery:( 'select * from versions where key = ''%1''' bindWith:newRevision). |
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
484 |
rslt next isNil ifTrue:[ |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
485 |
"/ not there - error |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
486 |
self error:'cannot insert chunk int db' |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
487 |
]. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
488 |
"/ already there. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
489 |
Dialog information:'An identical version was already present in the repository.'. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
490 |
]. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
491 |
]. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
492 |
] ensure:[ |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
493 |
dbConnection close |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
494 |
]. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
495 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
496 |
^ true. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
497 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
498 |
" |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
499 |
SourceCodeManager checkinClass:Array |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
500 |
" |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
501 |
! |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
502 |
|
4223 | 503 |
checkForExistingContainer:fileName inModule:moduleName directory:packageDirName |
504 |
"check for a container to exist. Return a boolean result." |
|
505 |
||
506 |
^ self checkForExistingModule:moduleName directory:packageDirName |
|
2674 | 507 |
|
508 |
"Created: / 21-12-2011 / 17:56:23 / cg" |
|
4223 | 509 |
"Modified (format): / 24-02-2017 / 11:32:29 / cg" |
2674 | 510 |
! |
511 |
||
512 |
checkForExistingModule:moduleDir |
|
513 |
"check for a package directory to be present" |
|
514 |
||
2687 | 515 |
^ true. |
2674 | 516 |
"/ |
517 |
"/ dir := self moduleDirectoryFor:moduleDir. |
|
518 |
"/ ^ dir exists |
|
519 |
||
520 |
"Created: / 21-12-2011 / 18:37:28 / cg" |
|
521 |
! |
|
522 |
||
523 |
checkForExistingModule:moduleDir directory:packageDir |
|
2687 | 524 |
"check for a package directory to be present; return true, if it does" |
525 |
||
3678
a4ef1d7abbc4
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3675
diff
changeset
|
526 |
|handle packagePresent packageName| |
2687 | 527 |
|
528 |
handle := self dbHandleForModule:moduleDir. |
|
3678
a4ef1d7abbc4
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3675
diff
changeset
|
529 |
packageName := moduleDir,':',packageDir. |
2674 | 530 |
|
2687 | 531 |
packagePresent := false. |
532 |
handle |
|
3678
a4ef1d7abbc4
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3675
diff
changeset
|
533 |
withResultForQuery: ('select 1 from packages where name = "%1"' bindWith:packageName) |
2687 | 534 |
do:[:result | |
535 |
packagePresent := result numRows > 0. |
|
536 |
]. |
|
537 |
||
538 |
^ packagePresent |
|
2674 | 539 |
|
540 |
"Created: / 21-12-2011 / 18:03:33 / cg" |
|
541 |
! |
|
542 |
||
543 |
checkinClass:aClass fileName:classFileName directory:packageDir module:moduleDir source:sourceFile logMessage:logMessage force:force |
|
544 |
"Return true if ok, false if not." |
|
545 |
||
4309 | 546 |
self halt:'should not be called (not needed for a classFile)' |
2674 | 547 |
! |
548 |
||
549 |
createModule:moduleDir |
|
550 |
"create a module directory" |
|
551 |
||
3356
6250bc835354
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
2843
diff
changeset
|
552 |
self halt:'unimplemented'. |
2674 | 553 |
"/ |dir| |
554 |
"/ |
|
555 |
"/ dir := self moduleDirectoryFor:moduleDir. |
|
556 |
"/ dir recursiveMakeDirectory. |
|
557 |
"/ ^ dir exists. |
|
558 |
||
559 |
"Created: / 21-12-2011 / 18:38:22 / cg" |
|
560 |
! |
|
561 |
||
562 |
createModule:moduleDir directory:packageDir |
|
563 |
"create a package directory" |
|
564 |
||
2687 | 565 |
|handle id name| |
566 |
||
567 |
id := UUID new. |
|
568 |
name := (moduleDir,':',packageDir). |
|
569 |
||
570 |
handle := self dbHandleForModule:moduleDir. |
|
571 |
handle |
|
572 |
withResultForQuery: ('insert into packages values (''%1'', ''%2'')' bindWith:id with:name) |
|
573 |
do:[:result | |
|
574 |
]. |
|
575 |
||
3356
6250bc835354
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
2843
diff
changeset
|
576 |
self halt:'unimplemented'. |
2674 | 577 |
"/ |dir| |
578 |
"/ |
|
579 |
"/ dir := self packageDirectoryForModule:moduleDir package:packageDir. |
|
580 |
"/ dir recursiveMakeDirectory. |
|
581 |
"/ ^ dir exists. |
|
582 |
||
583 |
"Created: / 21-12-2011 / 18:44:20 / cg" |
|
584 |
! |
|
585 |
||
586 |
initialRevisionStringFor:aClass inModule:moduleDir directory:packageDir container:fileName |
|
587 |
"return a string usable as initial revision string" |
|
588 |
||
589 |
^ self |
|
590 |
revisionStringFor:aClass |
|
591 |
inModule:moduleDir |
|
592 |
directory:packageDir |
|
593 |
container:fileName |
|
594 |
revision:'1' |
|
595 |
||
596 |
"Created: / 21-12-2011 / 18:14:03 / cg" |
|
597 |
! |
|
598 |
||
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
599 |
revisionInfoFromString:aString |
2674 | 600 |
"{ Pragma: +optSpace }" |
601 |
||
602 |
"return a VersionInfo object filled with revision info. |
|
603 |
This extracts the relevant info from aString." |
|
604 |
||
3675
71459bb0865d
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3664
diff
changeset
|
605 |
|info versionName stringWithoutDelimiters| |
71459bb0865d
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3664
diff
changeset
|
606 |
|
71459bb0865d
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3664
diff
changeset
|
607 |
stringWithoutDelimiters := aString. |
71459bb0865d
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3664
diff
changeset
|
608 |
(aString startsWith:'$') ifTrue:[ |
71459bb0865d
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3664
diff
changeset
|
609 |
stringWithoutDelimiters := aString copyButFirst:1. |
71459bb0865d
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3664
diff
changeset
|
610 |
(aString endsWith:'$') ifTrue:[ |
71459bb0865d
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3664
diff
changeset
|
611 |
stringWithoutDelimiters := aString copyButLast:1. |
71459bb0865d
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3664
diff
changeset
|
612 |
]. |
71459bb0865d
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3664
diff
changeset
|
613 |
]. |
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
614 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
615 |
info := self revisionInfoFromStandardVersionString:aString. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
616 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
617 |
versionName := self extractKeyValueFor:'SymbolicVersion' fromRevisionString:aString. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
618 |
info symbolicVersionName:versionName. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
619 |
^ info |
2674 | 620 |
|
621 |
" |
|
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
622 |
self revisionInfoFromString:'Path: stx/libbasic/Array.st, Version: 123, User: cg, Time: 2011-12-21T21:03:08.826 SymbolicVersion: foo' |
2674 | 623 |
" |
624 |
! |
|
625 |
||
3598
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
626 |
revisionLogOf:clsOrNil |
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
627 |
fromRevision:rev1OrNil toRevision:rev2OrNil numberOfRevisions:limitOrNil |
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
628 |
fileName:classFileName directory:packageDir module:moduleDir |
2674 | 629 |
|
3356
6250bc835354
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
2843
diff
changeset
|
630 |
self halt:'unimplemented'. |
3598
96223506d5ff
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3356
diff
changeset
|
631 |
^ nil |
2674 | 632 |
"/ |info log targetDir count newestRevision| |
633 |
"/ |
|
634 |
"/ targetDir := self packageDirectoryForModule:moduleDir package:packageDir. |
|
635 |
"/ targetDir exists ifFalse:[^ nil ]. |
|
636 |
"/ |
|
637 |
"/ info := IdentityDictionary new. |
|
638 |
"/ log := OrderedCollection new. |
|
639 |
"/ count := 0. |
|
640 |
"/ |
|
641 |
"/ (targetDir filesMatching:(classFileName,'_*')) do:[:eachVersionFile | |
|
642 |
"/ |versionString cs versionChange info| |
|
643 |
"/ |
|
644 |
"/ versionString := eachVersionFile copyFrom:(classFileName size + 2). |
|
645 |
"/ count := count + 1. |
|
646 |
"/ (newestRevision isNil |
|
647 |
"/ or:[ self isRevision:versionString after:newestRevision ]) ifTrue:[ |
|
648 |
"/ newestRevision := versionString |
|
649 |
"/ ]. |
|
650 |
"/ |
|
651 |
"/ (rev1OrNil isNil |
|
652 |
"/ or:[ rev1OrNil = 0 |
|
653 |
"/ or:[ versionString = rev1OrNil |
|
654 |
"/ or:[ self isRevision:versionString after:rev1OrNil ]]]) |
|
655 |
"/ ifTrue:[ |
|
656 |
"/ (rev2OrNil isNil |
|
657 |
"/ or:[ rev2OrNil = 0 |
|
658 |
"/ or:[ versionString = rev2OrNil |
|
659 |
"/ or:[ self isRevision:rev2OrNil after:versionString ]]]) |
|
660 |
"/ ifTrue:[ |
|
661 |
"/ (limitOrNil isNil |
|
662 |
"/ or:[ log size < limitOrNil ]) |
|
663 |
"/ ifTrue:[ |
|
664 |
"/ cs := ChangeSet fromFile:(targetDir construct:eachVersionFile). |
|
665 |
"/ versionChange := cs detect:[:chg | chg isMethodChange |
|
666 |
"/ and:[chg selector = self nameOfVersionMethodInClasses]] |
|
667 |
"/ ifNone:nil. |
|
668 |
"/ versionChange notNil ifTrue:[ |
|
669 |
"/ info := self revisionInfoFromString:versionChange source. |
|
670 |
"/ ] ifFalse:[ |
|
671 |
"/ info := VersionInfo new. |
|
672 |
"/ ]. |
|
673 |
"/ |
|
674 |
"/ info revision:versionString. |
|
675 |
"/ log add:info. |
|
676 |
"/ ] |
|
677 |
"/ ]. |
|
678 |
"/ ]. |
|
679 |
"/ ]. |
|
680 |
"/ log sort:[:a :b | self isRevision:b revision after:a revision]. |
|
681 |
"/ |
|
682 |
"/ info at:#revisions put:log. |
|
683 |
"/ info at:#numberOfRevisions put:count. |
|
684 |
"/ info at:#newestRevision put:newestRevision. |
|
685 |
"/ |
|
686 |
"/ ^ info |
|
687 |
"/ |
|
688 |
"/ |
|
689 |
||
690 |
"Created: / 21-12-2011 / 20:39:31 / cg" |
|
691 |
! |
|
692 |
||
693 |
streamForClass:aClass fileName:classFileName revision:revision directory:packageDir module:moduleDir cache:doCache |
|
3356
6250bc835354
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
2843
diff
changeset
|
694 |
self halt:'unimplemented'. |
2674 | 695 |
"/ |targetDir oldFile| |
696 |
"/ |
|
697 |
"/ targetDir := self packageDirectoryForModule:moduleDir package:packageDir. |
|
698 |
"/ oldFile := (targetDir construct:classFileName,'_',revision). |
|
699 |
"/ ^ oldFile readStream |
|
700 |
||
701 |
"Created: / 21-12-2011 / 20:49:01 / cg" |
|
3664
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
702 |
! |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
703 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
704 |
updateVersionMethodOf:aClass for:newRevisionString |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
705 |
"{ Pragma: +optSpace }" |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
706 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
707 |
"helper for the checkin procedure. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
708 |
Update my #version_XXX method, to now return newRevisionString." |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
709 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
710 |
self updateVersionMethod:(self nameOfVersionMethodInClasses) of:aClass for:newRevisionString. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
711 |
! ! |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
712 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
713 |
!DataBaseSourceCodeManager::DBVersionInfo class methodsFor:'documentation'! |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
714 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
715 |
copyright |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
716 |
" |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
717 |
COPYRIGHT (c) 2014 by eXept Software AG |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
718 |
All Rights Reserved |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
719 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
720 |
This software is furnished under a license and may be used |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
721 |
only in accordance with the terms of that license and with the |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
722 |
inclusion of the above copyright notice. This software may not |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
723 |
be provided or otherwise made available to, or used by, any |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
724 |
other person. No title to or ownership of the software is |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
725 |
hereby transferred. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
726 |
" |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
727 |
! |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
728 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
729 |
documentation |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
730 |
" |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
731 |
In ancient times, Class used to return a Dictionary when asked for versionInfo. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
732 |
This has been replaced by instances of VersionInfo and subclasses. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
733 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
734 |
DBVersionInfo adds some DataBaseManager specific data. |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
735 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
736 |
[author:] |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
737 |
cg |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
738 |
" |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
739 |
! ! |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
740 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
741 |
!DataBaseSourceCodeManager::DBVersionInfo methodsFor:'accessing'! |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
742 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
743 |
symbolicVersionName |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
744 |
"return an additional symbolic version name, which is used for human readers (and not unique)" |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
745 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
746 |
^ symbolicVersionName ? revision |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
747 |
! |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
748 |
|
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
749 |
symbolicVersionName:aString |
f31558d6bb42
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
3598
diff
changeset
|
750 |
symbolicVersionName := aString. |
2674 | 751 |
! ! |
752 |
||
753 |
!DataBaseSourceCodeManager class methodsFor:'documentation'! |
|
754 |
||
755 |
version |
|
4083 | 756 |
^ '$Header$' |
2674 | 757 |
! |
758 |
||
759 |
version_CVS |
|
4083 | 760 |
^ '$Header$' |
2674 | 761 |
! ! |
3356
6250bc835354
class: DataBaseSourceCodeManager
Claus Gittinger <cg@exept.de>
parents:
2843
diff
changeset
|
762 |