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