[Evolvis-commits] r607: Renamed db-upgrade26.pl to db-upgrade.pl. ↵
lo-lan-do at evolvis.org
lo-lan-do at evolvis.org
Thu Feb 25 15:30:47 CET 2010
Author: lo-lan-do
Date: 2010-02-25 15:30:46 +0100 (Thu, 25 Feb 2010)
New Revision: 607
Removed:
trunk/gforge_base/evolvisforge/gforge/deb-specific/db-upgrade26.pl
Modified:
trunk/gforge_base/evolvisforge/
trunk/gforge_base/evolvisforge/gforge/deb-specific/db-upgrade.pl
trunk/gforge_base/evolvisforge/gforge/deb-specific/install-db.sh
trunk/gforge_base/evolvisforge/gforge/debian/changelog
trunk/gforge_base/evolvisforge/gforge/debian/rules
Log:
Renamed db-upgrade26.pl to db-upgrade.pl.
Property changes on: trunk/gforge_base/evolvisforge
___________________________________________________________________
Modified: bzr:revision-info
- timestamp: 2002-03-14 17:37:24.000000000 +0000
committer: lo-lan-do
+ timestamp: 2002-03-14 17:44:07.000000000 +0000
committer: lo-lan-do
Modified: bzr:file-ids
- gforge/deb-specific/db-upgrade26.pl 221 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fdeb-specific%2Fdb-upgrade26.pl
+ gforge/deb-specific/db-upgrade.pl 7 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fdeb-specific%2Fdb-upgrade.pl
gforge/deb-specific/install-db.sh 203 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fdeb-specific%2Finstall-db.sh
gforge/debian/changelog 7 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fdebian%2Fchangelog
gforge/debian/rules 7 at 9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk%2Fgforge%2Fdebian%2Frules
Modified: bzr:revision-id:v4
- 1 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1
2 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:2
3 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:7
4 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:9
5 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:10
6 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:11
7 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:12
8 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:13
9 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:14
10 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:15
11 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:16
12 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:17
13 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:18
14 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:19
15 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:20
16 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:21
17 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:22
18 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:23
19 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:24
20 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:25
21 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:26
22 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:27
23 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:28
24 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:29
25 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:30
26 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:31
27 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:32
28 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:33
29 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:34
30 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:35
31 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:36
32 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:37
33 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:38
34 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:39
35 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:40
36 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:41
37 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:42
38 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:43
39 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:44
40 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:45
41 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:46
42 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:47
43 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:48
44 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:49
45 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:50
46 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:51
47 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:52
48 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:53
49 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:54
50 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:55
51 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:56
52 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:57
53 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:58
54 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:59
55 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:60
56 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:61
57 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:62
58 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:63
59 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:64
60 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:65
61 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:66
62 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:67
63 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:68
64 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:69
65 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:70
66 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:71
67 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:72
68 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:73
69 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:74
70 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:75
71 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:76
72 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:77
73 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:78
74 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:79
75 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:80
76 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:81
77 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:82
78 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:83
79 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:84
80 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:85
81 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:86
82 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:87
83 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:88
84 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:89
85 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:90
86 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:91
87 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:92
88 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:93
89 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:94
90 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:95
91 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:96
92 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:97
93 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:98
94 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:99
95 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:100
96 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:101
97 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:102
98 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:103
99 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:104
100 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:105
101 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:106
102 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:107
103 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:108
104 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:109
105 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:110
106 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:111
107 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:112
108 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:113
109 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:114
110 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:115
111 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:116
112 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:117
113 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:118
114 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:119
115 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:120
116 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:121
117 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:122
118 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:123
119 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:124
120 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:125
121 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:126
122 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:127
123 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:128
124 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:129
125 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:130
126 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:131
127 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:132
128 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:133
129 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:134
130 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:135
131 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:136
132 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:137
133 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:138
134 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:139
135 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:140
136 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:141
137 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:142
138 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:143
139 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:144
140 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:145
141 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:146
142 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:147
143 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:148
144 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:149
145 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:150
146 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:151
147 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:152
148 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:153
149 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:154
150 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:155
151 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:156
152 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:157
153 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:158
154 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:159
155 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:160
156 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:161
157 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:162
158 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:163
159 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:164
160 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:165
161 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:166
162 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:167
163 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:168
164 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:169
165 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:170
166 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:172
167 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:173
168 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:174
169 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:175
170 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:176
171 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:180
172 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:184
173 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:186
174 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:187
175 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:188
176 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:189
177 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:190
178 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:191
179 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:192
180 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:193
181 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:194
182 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:195
183 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:196
184 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:197
185 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:198
186 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:199
187 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:200
188 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:202
189 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:203
190 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:204
191 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:205
192 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:206
193 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:207
194 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:208
195 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:209
196 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:210
197 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:211
198 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:212
199 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:213
200 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:214
201 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:215
202 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:216
203 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:217
204 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:218
205 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:219
206 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:220
207 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:221
208 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:222
209 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:223
210 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:224
211 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:225
212 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:226
213 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:227
214 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:228
215 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:229
216 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:230
217 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:231
218 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:232
219 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:233
220 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:234
221 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:235
222 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:236
223 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:237
224 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:238
225 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:241
226 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:250
227 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:253
228 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:254
229 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:255
230 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:256
231 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:258
232 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:263
233 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:264
234 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:265
235 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:266
236 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:268
237 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:269
238 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:271
239 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:275
240 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:276
241 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:277
242 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:278
243 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:288
244 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:289
245 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:290
246 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:291
247 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:292
248 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:293
249 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:294
250 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:295
251 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:296
252 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:297
253 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:298
254 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:310
255 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:311
256 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:313
257 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:315
258 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:323
259 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:324
260 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:325
261 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:326
262 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:327
263 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:328
264 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:329
265 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:331
266 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:336
267 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:337
268 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:338
269 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:339
270 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:340
271 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:341
272 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:343
273 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:359
274 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:360
275 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:361
276 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:362
277 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:363
278 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:364
279 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:365
280 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:369
281 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:371
282 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:375
283 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:377
284 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:378
285 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:379
286 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:380
287 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:384
288 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:386
289 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:387
290 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:388
291 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:390
292 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:391
293 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:392
294 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:394
295 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:395
296 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:406
297 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:407
298 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:408
299 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:409
300 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:410
301 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:411
302 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:412
303 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:413
304 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:414
305 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:415
306 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:416
307 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:417
308 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:418
309 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:419
310 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:420
311 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:421
312 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:422
313 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:427
314 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:428
315 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:429
316 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:435
317 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:436
318 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:437
319 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:438
320 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:442
321 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:443
322 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:444
323 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:448
324 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:449
325 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:450
326 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:451
327 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:452
328 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:453
329 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:454
330 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:455
331 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:456
332 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:457
333 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:458
334 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:459
335 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:460
336 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:461
337 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:463
338 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:464
339 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:465
340 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:466
341 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:467
342 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:468
343 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:476
344 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:477
345 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:478
346 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:479
347 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:480
348 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:481
349 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:488
350 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:497
351 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:498
352 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:499
353 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:500
354 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:501
355 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:502
356 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:503
357 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:504
358 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:505
359 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:506
360 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:507
361 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:508
362 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:509
363 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:510
364 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:511
365 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:512
366 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:513
367 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:514
368 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:515
369 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:516
370 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:517
371 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:518
372 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:521
+ 1 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:1
2 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:2
3 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:7
4 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:9
5 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:10
6 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:11
7 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:12
8 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:13
9 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:14
10 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:15
11 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:16
12 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:17
13 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:18
14 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:19
15 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:20
16 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:21
17 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:22
18 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:23
19 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:24
20 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:25
21 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:26
22 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:27
23 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:28
24 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:29
25 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:30
26 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:31
27 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:32
28 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:33
29 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:34
30 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:35
31 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:36
32 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:37
33 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:38
34 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:39
35 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:40
36 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:41
37 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:42
38 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:43
39 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:44
40 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:45
41 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:46
42 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:47
43 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:48
44 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:49
45 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:50
46 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:51
47 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:52
48 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:53
49 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:54
50 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:55
51 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:56
52 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:57
53 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:58
54 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:59
55 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:60
56 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:61
57 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:62
58 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:63
59 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:64
60 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:65
61 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:66
62 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:67
63 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:68
64 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:69
65 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:70
66 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:71
67 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:72
68 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:73
69 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:74
70 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:75
71 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:76
72 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:77
73 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:78
74 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:79
75 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:80
76 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:81
77 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:82
78 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:83
79 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:84
80 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:85
81 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:86
82 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:87
83 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:88
84 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:89
85 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:90
86 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:91
87 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:92
88 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:93
89 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:94
90 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:95
91 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:96
92 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:97
93 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:98
94 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:99
95 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:100
96 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:101
97 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:102
98 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:103
99 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:104
100 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:105
101 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:106
102 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:107
103 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:108
104 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:109
105 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:110
106 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:111
107 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:112
108 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:113
109 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:114
110 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:115
111 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:116
112 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:117
113 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:118
114 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:119
115 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:120
116 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:121
117 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:122
118 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:123
119 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:124
120 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:125
121 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:126
122 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:127
123 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:128
124 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:129
125 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:130
126 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:131
127 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:132
128 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:133
129 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:134
130 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:135
131 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:136
132 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:137
133 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:138
134 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:139
135 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:140
136 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:141
137 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:142
138 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:143
139 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:144
140 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:145
141 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:146
142 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:147
143 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:148
144 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:149
145 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:150
146 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:151
147 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:152
148 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:153
149 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:154
150 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:155
151 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:156
152 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:157
153 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:158
154 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:159
155 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:160
156 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:161
157 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:162
158 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:163
159 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:164
160 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:165
161 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:166
162 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:167
163 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:168
164 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:169
165 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:170
166 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:172
167 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:173
168 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:174
169 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:175
170 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:176
171 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:180
172 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:184
173 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:186
174 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:187
175 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:188
176 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:189
177 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:190
178 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:191
179 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:192
180 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:193
181 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:194
182 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:195
183 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:196
184 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:197
185 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:198
186 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:199
187 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:200
188 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:202
189 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:203
190 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:204
191 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:205
192 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:206
193 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:207
194 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:208
195 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:209
196 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:210
197 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:211
198 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:212
199 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:213
200 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:214
201 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:215
202 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:216
203 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:217
204 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:218
205 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:219
206 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:220
207 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:221
208 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:222
209 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:223
210 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:224
211 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:225
212 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:226
213 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:227
214 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:228
215 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:229
216 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:230
217 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:231
218 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:232
219 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:233
220 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:234
221 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:235
222 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:236
223 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:237
224 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:238
225 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:241
226 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:250
227 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:253
228 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:254
229 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:255
230 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:256
231 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:258
232 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:263
233 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:264
234 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:265
235 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:266
236 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:268
237 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:269
238 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:271
239 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:275
240 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:276
241 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:277
242 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:278
243 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:288
244 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:289
245 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:290
246 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:291
247 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:292
248 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:293
249 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:294
250 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:295
251 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:296
252 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:297
253 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:298
254 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:310
255 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:311
256 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:313
257 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:315
258 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:323
259 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:324
260 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:325
261 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:326
262 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:327
263 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:328
264 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:329
265 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:331
266 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:336
267 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:337
268 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:338
269 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:339
270 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:340
271 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:341
272 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:343
273 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:359
274 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:360
275 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:361
276 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:362
277 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:363
278 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:364
279 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:365
280 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:369
281 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:371
282 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:375
283 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:377
284 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:378
285 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:379
286 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:380
287 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:384
288 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:386
289 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:387
290 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:388
291 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:390
292 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:391
293 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:392
294 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:394
295 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:395
296 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:406
297 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:407
298 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:408
299 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:409
300 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:410
301 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:411
302 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:412
303 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:413
304 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:414
305 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:415
306 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:416
307 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:417
308 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:418
309 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:419
310 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:420
311 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:421
312 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:422
313 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:427
314 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:428
315 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:429
316 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:435
317 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:436
318 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:437
319 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:438
320 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:442
321 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:443
322 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:444
323 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:448
324 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:449
325 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:450
326 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:451
327 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:452
328 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:453
329 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:454
330 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:455
331 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:456
332 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:457
333 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:458
334 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:459
335 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:460
336 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:461
337 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:463
338 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:464
339 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:465
340 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:466
341 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:467
342 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:468
343 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:476
344 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:477
345 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:478
346 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:479
347 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:480
348 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:481
349 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:488
350 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:497
351 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:498
352 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:499
353 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:500
354 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:501
355 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:502
356 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:503
357 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:504
358 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:505
359 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:506
360 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:507
361 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:508
362 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:509
363 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:510
364 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:511
365 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:512
366 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:513
367 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:514
368 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:515
369 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:516
370 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:517
371 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:518
372 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:521
373 svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:522
Modified: bzr:text-parents
- gforge/deb-specific/db-upgrade26.pl svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:513
+ gforge/deb-specific/db-upgrade.pl svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:7
gforge/deb-specific/install-db.sh svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:502
gforge/debian/changelog svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:518
gforge/debian/rules svn-v4:9d84d37e-dcb1-4aad-b103-6f3d92f53bf6:trunk:499
Modified: trunk/gforge_base/evolvisforge/gforge/deb-specific/db-upgrade.pl
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/deb-specific/db-upgrade.pl 2010-02-25 14:30:41 UTC (rev 606)
+++ trunk/gforge_base/evolvisforge/gforge/deb-specific/db-upgrade.pl 2010-02-25 14:30:46 UTC (rev 607)
@@ -1,20 +1,26 @@
#!/usr/bin/perl -w
#
+# $Id$
+#
# Debian-specific script to upgrade the database between releases
+# Roland Mas <lolando at debian.org>
-use DBI ;
use strict ;
use diagnostics ;
+use DBI ;
+use MIME::Base64 ;
+use HTML::Entities ;
+
use vars qw/$dbh @reqlist/ ;
-
use vars qw/$sys_default_domain $sys_cvs_host $sys_download_host
$sys_shell_host $sys_users_host $sys_docs_host $sys_lists_host
$sys_dns1_host $sys_dns2_host $FTPINCOMING_DIR $FTPFILES_DIR
$sys_urlroot $sf_cache_dir $sys_name $sys_themeroot
$sys_news_group $sys_dbhost $sys_dbname $sys_dbuser $sys_dbpasswd
$sys_ldap_base_dn $sys_ldap_host $admin_login $admin_password
- $server_admin $domain_name $newsadmin_groupid $skill_list/ ;
+ $server_admin $domain_name $newsadmin_groupid $statsadmin_groupid
+ $skill_list/ ;
sub is_lesser ( $$ ) ;
sub is_greater ( $$ ) ;
@@ -28,14 +34,17 @@
&db_connect ;
+# debug "Connected to the database OK." ;
+
$dbh->{AutoCommit} = 0;
$dbh->{RaiseError} = 1;
eval {
- my ($query, $sth, @array, $version, $action) ;
+ my ($query, $sth, @array, $version, $action, $path, $target) ;
# Do we have at least the basic schema?
$query = "SELECT count(*) from pg_class where relname = 'groups'";
+ # debug $query ;
$sth = $dbh->prepare ($query) ;
$sth->execute () ;
@array = $sth->fetchrow_array () ;
@@ -44,185 +53,296 @@
# Create Sourceforge database
if ($array [0] == 0) {
+ # Installing SF 2.6 from scratch
$action = "installation" ;
debug "Creating initial Sourceforge database from files." ;
- my @filelist = qw{ /usr/lib/sourceforge/db/SourceForge.sql
- /usr/lib/sourceforge/db/trove_defaults.sql
- /usr/lib/sourceforge/db/init-extra.sql } ;
- # TODO: user_rating.sql
-
- foreach my $file (@filelist) {
- debug "Processing $file" ;
- @reqlist = @{ &parse_sql_file ($file) } ;
-
- foreach my $s (@reqlist) {
- $query = $s ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
- }
- }
- @reqlist = () ;
+ &create_metadata_table ("2.5.9999") ;
- debug "Adding local data." ;
+ debug "Updating debian_meta_data table." ;
+ $query = "INSERT INTO debian_meta_data (key, value) VALUES ('current-path', 'scratch-to-2.6')" ;
+ # debug $query ;
+ $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ $sth->finish () ;
+ debug "Committing." ;
+ $dbh->commit () ;
-
- do "/etc/sourceforge/local.pl" or die "Cannot read /etc/sourceforge/local.pl" ;
+ } else {
+ $action = "upgrade" ;
- my ($login, $pwd, $md5pwd, $email, $shellbox, $noreplymail, $date) ;
-
- $login = $admin_login ;
- $pwd = $admin_password ;
- $md5pwd=qx/echo -n $pwd | md5sum/ ;
- chomp $md5pwd ;
- $email = $server_admin ;
- $shellbox = $domain_name ;
- $noreplymail="noreply\@$domain_name" ;
- $date = time () ;
-
- @reqlist = (
- "INSERT INTO groups (group_id, group_name, homepage, is_public, status, unix_group_name, unix_box,
- http_domain, short_description, cvs_box, license, register_purpose,
- license_other, register_time, use_bugs, rand_hash, use_mail, use_survey,
- use_patch, use_forum, use_pm, use_cvs, use_news, use_support, new_bug_address,
- new_patch_address, new_support_address, type, use_docman, send_all_bugs,
- send_all_patches, send_all_support, new_task_address, send_all_tasks,
- use_bug_depend_box, use_pm_depend_box)
- VALUES (1, 'Site Admin', '$domain_name/admin/', 1, 'A', 'siteadmin', 'shell1',
- NULL, NULL, 'cvs1', 'website', NULL, NULL, 0, 0, NULL, 1, 0, 0, 0, 0, 0, 1, 1, '', '', '', 1, 1, 0, 0, 0, '', 0, 0, 0)",
- "INSERT INTO groups (group_id, group_name, homepage, is_public, status, unix_group_name, unix_box,
- http_domain, short_description, cvs_box, license, register_purpose,
- license_other, register_time, use_bugs, rand_hash, use_mail, use_survey,
- use_patch, use_forum, use_pm, use_cvs, use_news, use_support, new_bug_address,
- new_patch_address, new_support_address, type, use_docman, send_all_bugs,
- send_all_patches, send_all_support, new_task_address, send_all_tasks,
- use_bug_depend_box, use_pm_depend_box)
- VALUES ($newsadmin_groupid, 'Site News Admin', '$domain_name/news/', 0, 'A', 'newsadmin', 'shell1',
- NULL, NULL, 'cvs1', 'website', NULL, NULL, 0, 0, NULL, 1, 0, 0, 0, 0, 0, 1, 1, '', '',
- '', 1, 0, 0, 0, 0, '', 0, 0, 0)",
- "INSERT INTO users (user_id, user_name, email, user_pw)
- VALUES (100,'None','$noreplymail','*********')",
- "INSERT INTO users VALUES (101,'$login','$email','$md5pwd','Sourceforge admin','A','/bin/bash','','N',2000,'$shellbox',$date,'',1,0,NULL,NULL,0,'','GMT', 1)",
- "INSERT INTO user_group (user_id, group_id, admin_flags) VALUES (101, 1, 'A')",
- "INSERT INTO user_group (user_id, group_id, admin_flags) VALUES (101, $newsadmin_groupid, 'A')",
- "INSERT INTO bug_category (bug_category_id, group_id, category_name) VALUES (100,1,'None')",
- "INSERT INTO bug_group (bug_group_id, group_id, group_name) VALUES (100,1,'None')",
- "INSERT INTO bug (bug_id,group_id,status_id,category_id,bug_group_id,submitted_by,assigned_to,resolution_id)
- VALUES (100,1,100,100,100,100,100,100)",
- "INSERT INTO patch_category (patch_category_id, group_id, category_name) VALUES (100,1,'None')",
- "INSERT INTO patch (group_id,patch_status_id,patch_category_id,submitted_by,assigned_to)
- VALUES (1,100,100,100,100)",
- "INSERT INTO project_group_list (group_project_id,group_id) VALUES (1,1)",
- "INSERT INTO project_task (group_project_id,created_by,status_id)
- VALUES (1,100,100)",
- "INSERT INTO support_category VALUES ('100','1','None')"
- ) ;
-
- foreach my $s (@reqlist) {
- $query = $s ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
- }
- @reqlist = () ;
-
- debug "Initialising sequences." ;
-
- @filelist = qw{ /usr/lib/sourceforge/db/init-sequences.sql } ;
-
- foreach my $file (@filelist) {
- debug "Processing $file" ;
- @reqlist = @{ &parse_sql_file ($file) } ;
+ $version = &get_db_version ;
+ if (is_lesser $version, "2.5.9999") {
+ debug "Found an old (2.5) database, will upgrade to 2.6" ;
- foreach my $s (@reqlist) {
- $query = $s ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
- }
- }
- @reqlist = () ;
+ $query = "SELECT count(*) from debian_meta_data where key = 'current-path'";
+ # debug $query ;
+ $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ @array = $sth->fetchrow_array () ;
+ $sth->finish () ;
- debug "Inserting skills." ;
-
- foreach my $skill (split /;/, $skill_list) {
- push @reqlist, "INSERT INTO people_skill (name) VALUES ('$skill')" ;
+ if ($array[0] == 0) {
+ # debug "Updating debian_meta_data table." ;
+ $query = "INSERT INTO debian_meta_data (key, value) VALUES ('current-path', '2.5-to-2.6')" ;
+ # debug $query ;
+ $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ $sth->finish () ;
+ debug "Committing." ;
+ $dbh->commit () ;
+ }
}
-
- foreach my $s (@reqlist) {
- $query = $s ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
- }
- @reqlist = () ;
-
- debug "Committing." ;
- $dbh->commit () ;
- } else {
- $action = "upgrade" ;
}
- # Do we have the metadata table?
-
- $query = "SELECT count(*) from pg_class where relname = 'debian_meta_data'";
+ $query = "SELECT count(*) from debian_meta_data where key = 'current-path'";
+ # debug $query ;
$sth = $dbh->prepare ($query) ;
$sth->execute () ;
@array = $sth->fetchrow_array () ;
$sth->finish () ;
- # Let's create this table if we have it not
-
- if ($array [0] == 0) {
- debug "Creating debian_meta_data table." ;
- $query = "CREATE TABLE debian_meta_data (key varchar primary key, value text not null)" ;
+ if ($array[0] == 0) {
+ $path = "" ;
+ } else {
+ $query = "SELECT value from debian_meta_data where key = 'current-path'";
+ # debug $query ;
$sth = $dbh->prepare ($query) ;
$sth->execute () ;
+ @array = $sth->fetchrow_array () ;
$sth->finish () ;
- # Now table should exist, let's enter its first value in it
+ $path = $array[0] ;
+ }
- debug "Inserting first data into debian_meta_data table." ;
- $query = "INSERT INTO debian_meta_data (key, value) VALUES ('db-version', '2.5-7+just+before+8')" ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
+ PATH_SWITCH: {
+ ($path eq 'scratch-to-2.6') && do {
+ $version = &get_db_version ;
+ $target = "2.5.9999.1+global+data+done" ;
+ if (is_lesser $version, $target) {
+ my @filelist = qw{ /usr/lib/sourceforge/db/sf-2.6-complete.sql } ;
+ # TODO: user_rating.sql
- debug "Committing." ;
- $dbh->commit () ;
- }
+ foreach my $file (@filelist) {
+ debug "Processing $file" ;
+ @reqlist = @{ &parse_sql_file ($file) } ;
+
+ foreach my $s (@reqlist) {
+ $query = $s ;
+ # debug $query ;
+ $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ $sth->finish () ;
+ }
+ }
+ @reqlist = () ;
+
+ &update_db_version ($target) ;
+ debug "Committing." ;
+ $dbh->commit () ;
+ }
- # Now we have the metadata table with at least the "db-version" key
- # We can continue our work based on the associated value
-
- $query = "select value from debian_meta_data where key = 'db-version'" ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- @array = $sth->fetchrow_array () ;
- $sth->finish () ;
-
- $version = $array [0] ;
+ $version = &get_db_version ;
+ $target = "2.5.9999.2+local+data+done" ;
+ if (is_lesser $version, $target) {
+ debug "Adding local data." ;
+
+ do "/etc/sourceforge/local.pl" or die "Cannot read /etc/sourceforge/local.pl" ;
+
+ my ($login, $pwd, $md5pwd, $email, $shellbox, $noreplymail, $date) ;
+
+ $login = $admin_login ;
+ $pwd = $admin_password ;
+ $md5pwd=qx/echo -n $pwd | md5sum/ ;
+ chomp $md5pwd ;
+ $email = $server_admin ;
+ $shellbox = "shell" ;
+ $noreplymail="noreply\@$domain_name" ;
+ $date = time () ;
+
+ @reqlist = (
+ "UPDATE groups SET homepage = '$domain_name/admin/' where group_id = 1",
+ "UPDATE groups SET homepage = '$domain_name/news/' where group_id = 2",
+ "UPDATE groups SET homepage = '$domain_name/stats/' where group_id = 3",
+ "UPDATE groups SET homepage = '$domain_name/peerrating/' where group_id = 4",
+ "UPDATE users SET email = '$noreplymail' where user_id = 100",
+ "INSERT INTO users VALUES (101,'$login','$email','$md5pwd','Sourceforge admin','A','/bin/bash','','N',2000,'$shellbox',$date,'',1,0,NULL,NULL,0,'','GMT', 1, 0)",
+ "SELECT setval ('\"users_pk_seq\"', 102, 'f')",
+ "INSERT INTO user_group (user_id, group_id, admin_flags) VALUES (101, 1, 'A')",
+ "INSERT INTO user_group (user_id, group_id, admin_flags) VALUES (101, 2, 'A')",
+ "INSERT INTO user_group (user_id, group_id, admin_flags) VALUES (101, 3, 'A')",
+ "INSERT INTO user_group (user_id, group_id, admin_flags) VALUES (101, 4, 'A')"
+ ) ;
+
+ foreach my $s (@reqlist) {
+ $query = $s ;
+ # debug $query ;
+ $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ $sth->finish () ;
+ }
+ @reqlist = () ;
+
+ &update_db_version ($target) ;
+ debug "Committing." ;
+ $dbh->commit () ;
+ }
+
+ $version = &get_db_version ;
+ $target = "2.5.9999.3+skills+done" ;
+ if (is_lesser $version, $target) {
+ debug "Inserting skills." ;
+
+ foreach my $skill (split /;/, $skill_list) {
+ push @reqlist, "INSERT INTO people_skill (name) VALUES ('$skill')" ;
+ }
+
+ foreach my $s (@reqlist) {
+ $query = $s ;
+ # debug $query ;
+ $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ $sth->finish () ;
+ }
+ @reqlist = () ;
+
+ &update_db_version ($target) ;
+ debug "Committing." ;
+ $dbh->commit () ;
+ }
- # $version is the last successfully installed version
-
- if (is_lesser $version, "2.5-8") {
- debug "Found version $version lesser than 2.5-8, adding row to people_job_category." ;
- $query = "INSERT INTO people_job_category VALUES (100, 'Undefined', 0)" ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
+ $version = &get_db_version ;
+ $target = "2.6-0" ;
+ if (is_lesser $version, $target) {
+ debug "Updating debian_meta_data table." ;
+ $query = "DELETE FROM debian_meta_data WHERE key = 'current-path'" ;
+ # debug $query ;
+ $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ $sth->finish () ;
+
+ &update_db_version ($target) ;
+ debug "Committing." ;
+ $dbh->commit () ;
+ }
- debug "Updating debian_meta_data table." ;
- $query = "UPDATE debian_meta_data SET value = '2.5-8' where key = 'db-version'" ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
+ last PATH_SWITCH ;
+ } ;
- debug "Committing." ;
- $dbh->commit () ;
- }
+ ($path eq '2.5-to-2.6') && do {
+
+ $version = &get_db_version ;
+ $target = "2.5.9999.1+data+upgraded" ;
+ if (is_lesser $version, $target) {
+ debug "Upgrading your database scheme from 2.5" ;
+ @reqlist = @{ &parse_sql_file ("/usr/lib/sourceforge/db/sf2.5-to-sf2.6.sql") } ;
+ foreach my $s (@reqlist) {
+ $query = $s ;
+ debug $query ;
+ $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ $sth->finish () ;
+ }
+ @reqlist = () ;
+
+ &update_db_version ($target) ;
+ debug "Committing." ;
+ $dbh->commit () ;
+ }
+
+ $version = &get_db_version ;
+ $target = "2.5.9999.2+artifact+transcoded" ;
+ if (is_lesser $version, $target) {
+ debug "Transcoding the artifact data fields" ;
+
+ $query = "SELECT id,bin_data FROM artifact_file ORDER BY id ASC" ;
+ # debug $query ;
+ $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ while (@array = $sth->fetchrow_array) {
+ my $query2 = "UPDATE artifact_file SET bin_data='" ;
+ $query2 .= encode_base64 (decode_entities ($array [1])) ;
+ $query2 .= "' WHERE id=" ;
+ $query2 .= $array [0] ;
+ $query2 .= "" ;
+ # debug $query2 ;
+ my $sth2 =$dbh->prepare ($query2) ;
+ $sth2->execute () ;
+ $sth2->finish () ;
+ }
+ $sth->finish () ;
+
+ $version = &get_db_version ;
+ $target = "2.5.9999.3+groups+inserted" ;
+ if (is_lesser $version, $target) {
+ debug "Inserting missing groups" ;
+
+ @reqlist = (
+ "INSERT INTO groups (group_name, homepage,
+ is_public, status, unix_group_name, unix_box,
+ http_domain, short_description, cvs_box, license,
+ register_purpose, license_other, register_time,
+ use_bugs, rand_hash, use_mail, use_survey, use_patch,
+ use_forum, use_pm, use_cvs, use_news, use_support,
+ new_bug_address, new_patch_address,
+ new_support_address, type, use_docman, send_all_bugs,
+ send_all_patches, send_all_support, new_task_address,
+ send_all_tasks, use_bug_depend_box,
+ use_pm_depend_box)
+ VALUES ('Stats', '$domain_name/top/', 1,
+ 'A', 'stats', '$shellbox', NULL, NULL, 'cvs',
+ 'website', NULL, NULL, 0, 0, NULL, 1, 0, 0, 0, 0, 0,
+ 1, 1, '', '', '', 1, 1, 0, 0, 0, '', 0, 0, 0)",
+ "INSERT INTO groups (group_name, homepage,
+ is_public, status, unix_group_name, unix_box,
+ http_domain, short_description, cvs_box, license,
+ register_purpose, license_other, register_time,
+ use_bugs, rand_hash, use_mail, use_survey, use_patch,
+ use_forum, use_pm, use_cvs, use_news, use_support,
+ new_bug_address, new_patch_address,
+ new_support_address, type, use_docman, send_all_bugs,
+ send_all_patches, send_all_support, new_task_address,
+ send_all_tasks, use_bug_depend_box,
+ use_pm_depend_box)
+ VALUES ('Peer Ratings', '$domain_name/people/', 0,
+ 'A', 'peerrating', '$shellbox', NULL, NULL, 'cvs1',
+ 'website', NULL, NULL, 0, 0, NULL, 1, 0, 0, 0, 0, 0,
+ 1, 1, '', '', '', 1, 0, 0, 0, 0, '', 0, 0, 0)"
+ ) ;
+
+ foreach my $s (@reqlist) {
+ $query = $s ;
+ debug $query ;
+ $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ $sth->finish () ;
+ }
+ @reqlist = () ;
+ &update_db_version ($target) ;
+ debug "Committing." ;
+ $dbh->commit () ;
+ }
+
+ $version = &get_db_version ;
+ $target = "2.6-0" ;
+ if (is_lesser $version, $target) {
+ debug "Database has successfully been converted." ;
+ $query = "DELETE FROM debian_meta_data WHERE key = 'current-path'" ;
+ # debug $query ;
+ $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ $sth->finish () ;
+
+ &update_db_version ($target) ;
+ debug "Committing." ;
+ $dbh->commit () ;
+ }
+
+ last PATH_SWITCH ;
+ } ;
+ }
+
debug "It seems your database $action went well and smoothly. That's cool." ;
debug "Please enjoy using Debian Sourceforge." ;
@@ -277,96 +397,510 @@
# This is a state machine to parse potentially complex SQL files
# into individual SQL requests/statements
+ my %states = ('INIT' => 0,
+ 'SCAN' => 1,
+ 'SQL_SCAN' => 2,
+ 'IN_SQL' => 3,
+ 'END_SQL' => 4,
+ 'QUOTE_SCAN' => 5,
+ 'IN_QUOTE' => 6,
+ 'START_COPY' => 7,
+ 'IN_COPY' => 8,
+ 'ERROR' => 666,
+ 'DONE' => 999) ;
+ my ($state, $l, $par_level, $chunk, $rest, $sql, @sql_list, $copy_table, $copy_rest, @copy_data, @copy_data_tmp, $copy_field) ;
+
# Init the state machine
- my ($l, $level, $inquote, $chunk, $rest) ;
- my $sql = "" ;
- my @sql_list = () ;
+ $state = $states{INIT} ;
# my $n = 0 ;
+
+ STATE_LOOP: while ($state != $states{DONE}) { # State machine main loop
+ # debug "STATE_LOOP: state = $state" ;
+ STATE_SWITCH: { # State machine step processing
+ $state == $states{INIT} && do {
+ # debug "State = INIT" ;
+ $par_level = 0 ;
+ $l = $sql = $chunk = $rest = "" ;
+ @sql_list = () ;
+ $copy_table = $copy_rest = "" ;
+ @copy_data = @copy_data_tmp = () ;
+ $copy_field = "" ;
+
+ $state = $states{SCAN} ;
+ last STATE_SWITCH ;
+ } ; # End of INIT state
+
+ $state == $states{SCAN} && do {
+ # debug "State = SCAN" ;
+ SCAN_STATE_SWITCH: {
+ ( ($l eq "") or ($l =~ /^\s*$/) or ($l =~ /^--/) ) && do {
+ $l = <F> ;
+ unless ($l) {
+ $state = $states{DONE} ;
+ last SCAN_STATE_SWITCH ;
+ }
+ chomp $l ;
+
+ last SCAN_STATE_SWITCH ;
+ } ;
- FILELOOP: while ($l = <F>) { # Loop over the file
- chomp $l ;
- $level = 0 ;
- $inquote = 0 ;
- $chunk = "" ;
- $rest = "" ;
-
- PARSELOOP: while (1) { # Parse a request
+ ( ($l =~ m/\s*copy\s+\"[\w_]+\"\s+from\s+stdin\s*;/i)
+ or ($l =~ m/\s*copy\s+[\w_]+\s+from\s+stdin\s*;/i) ) && do {
+ # Nothing to do
+
+ $state = $states{START_COPY} ;
+ last SCAN_STATE_SWITCH ;
+ } ;
+
+ ( 1 ) && do {
+ $sql = "" ;
- while ( ($l eq "") or ((! $inquote) and ($l =~ /^\s*$/)) ) {
- $l = <F> ;
- if ($l) {
- chomp $l ;
- } else {
- last PARSELOOP ;
- }
- }
- ($chunk, $rest) = ($l =~ /^([^()\\\';]*)(.*)/) ;
- $sql .= $chunk ;
- # debug "level = $level, inquote = $inquote, chunk = <$chunk>, rest = <$rest>, sql = <$sql>";
+ $state = $states{SQL_SCAN} ;
+ last SCAN_STATE_SWITCH ;
+ } ;
- # Here come the state transitions
- SWITCH: {
- if ($rest =~ /^\(/) { # Enter a paren block (unless we're inside a string)
- $level += 1 unless $inquote ;
- $sql .= '(' ;
- $rest = substr $rest, 1 ;
- last SWITCH;
- }
- if ($rest =~ /^\)/) { # Exit a paren block (unless we're inside a string)
- $level -= 1 unless $inquote ;
- $sql .= ')' ;
- $rest = substr $rest, 1 ;
- last SWITCH;
- }
- if ($rest =~ /^\\\'/) { # Escaped single quote
- if (!$inquote) {
- debug "Encountered a \' sequence outside of a string." ;
- debug "This really shouldn't have happened." ;
- debug "I find it more prudent to just die now." ;
- die "\' outside of a string -- check SQL file" ;
- }
- $sql .= '\\\'' ;
- $rest = substr $rest, 2 ;
- last SWITCH;
- }
- if ($rest =~ /^\\/) { # Other backslash is a normal character
- $sql .= '\\' ;
- $rest = substr $rest, 1 ;
- last SWITCH;
- }
- if ($rest =~ /^;/) { # Semi-colon
- if ($inquote) { # If inside a string, treat as a normal character
+ } # SCAN_STATE_SWITCH
+ last STATE_SWITCH ;
+ } ; # End of SCAN state
+
+ $state == $states{SQL_SCAN} && do {
+ # debug "State = SQL_SCAN" ;
+ SQL_SCAN_STATE_SWITCH: {
+ ( ($l eq "") or ($l =~ /^\s*$/) or ($l =~ /^--/) ) && do {
+ $l = <F> ;
+ unless ($l) {
+ debug "End of file detected during an SQL statement." ;
+ $state = $states{ERROR} ;
+ last SQL_SCAN_STATE_SWITCH ;
+ }
+ chomp $l ;
+
+ $state = $states{SQL_SCAN} ;
+ last SQL_SCAN_STATE_SWITCH ;
+ } ;
+
+ ( 1 ) && do {
+ ($chunk, $rest) = ($l =~ /^([^()\';-]*)(.*)/) ;
+ $sql .= $chunk ;
+
+ $state = $states{IN_SQL} ;
+ last SQL_SCAN_STATE_SWITCH ;
+ } ;
+
+ } # SQL_SCAN_STATE_SWITCH
+ last STATE_SWITCH ;
+ } ; # End of SQL_SCAN state
+
+ $state == $states{IN_SQL} && do {
+ # debug "State = IN_SQL" ;
+ IN_SQL_STATE_SWITCH: {
+ ($rest =~ /^\(/) && do {
+ $par_level += 1 ;
+ $sql .= '(' ;
+ $rest = substr $rest, 1 ;
+ $l = $rest ;
+
+ $state = $states{SQL_SCAN} ;
+ last IN_SQL_STATE_SWITCH ;
+ } ;
+
+ ( ($rest =~ /^\)/) and ($par_level > 0) ) && do {
+ $par_level -= 1 ;
+ $sql .= ')' ;
+ $rest = substr $rest, 1 ;
+ $l = $rest ;
+
+ $state = $states{SQL_SCAN} ;
+ last IN_SQL_STATE_SWITCH ;
+ } ;
+
+ ($rest =~ /^\)/) && do {
+ debug "Detected ')' without any matching '('." ;
+ $state = $states{ERROR} ;
+ last IN_SQL_STATE_SWITCH ;
+ } ;
+
+ ($rest =~ /^--/) && do {
+ $rest = "" ;
+ $l = $rest ;
+
+ $state = $states{SQL_SCAN} ;
+ last IN_SQL_STATE_SWITCH ;
+ } ;
+
+ ($rest =~ /^-[^-]/) && do {
+ $sql .= '-' ;
+ $rest = substr $rest, 1 ;
+ $l = $rest ;
+
+ $state = $states{SQL_SCAN} ;
+ last IN_SQL_STATE_SWITCH ;
+ } ;
+
+ ( ($rest =~ /^;/) and ($par_level == 0) ) && do {
$sql .= ';' ;
$rest = substr $rest, 1 ;
- } elsif ($level == 0) { # If out of a string and toplevel, end of SQL statement
- last PARSELOOP;
- } else{ # What, a semi-colon by itself not at toplevel?
- debug "Encountered a semi-colon outside of a string and not at toplevel" ;
- debug "This really shouldn't have happened." ;
- debug "I find it more prudent to just die now." ;
- die "semi-colon outside of a string and not at toplevel -- check SQL file" ;
- }
- last SWITCH;
- }
- if ($rest =~ /^\'/) { # Non-escaped single quote -- string delimiter
- $inquote = $inquote ? 0 : 1 ; # Toggle $inquote
- $sql .= '\'' ;
- $rest = substr $rest, 1 ;
- last SWITCH;
- }
- } # SWITCH
- $l = $rest ;
- } # PARSELOOP
-
- # (Do something with $sql now that we have it :-)
- push @sql_list, $sql unless $sql eq "" ;
- # $n++ ; debug "SQL OK $n" ;
- $sql = "" ;
- } # FILELOOP
-
+
+ $state = $states{END_SQL} ;
+ last IN_SQL_STATE_SWITCH ;
+ } ;
+
+ ($rest =~ /^;/) && do {
+ debug "Detected ';' within a parenthesis." ;
+ $state = $states{ERROR} ;
+ last IN_SQL_STATE_SWITCH ;
+ } ;
+
+ ($rest eq "") && do {
+ $l = $rest ;
+ $sql .= " " ;
+
+ $state = $states{SQL_SCAN} ;
+ last IN_SQL_STATE_SWITCH ;
+ } ;
+
+ ($rest =~ /^\'/) && do {
+ $sql .= '\'' ;
+ $rest = substr $rest, 1 ;
+ $l = $rest ;
+
+ $state = $states{IN_QUOTE} ;
+ last IN_SQL_STATE_SWITCH ;
+ } ;
+
+ ( 1 ) && do {
+ debug "Unknown event in IN_SQL state" ;
+ $state = $states{ERROR} ;
+ last IN_SQL_STATE_SWITCH ;
+ } ;
+ } # IN_SQL_STATE_SWITCH
+ last STATE_SWITCH ;
+ } ; # End of IN_SQL state
+
+ $state == $states{END_SQL} && do {
+ # debug "State = END_SQL" ;
+ END_SQL_STATE_SWITCH: {
+ ($sql =~ /^\s*$/) && do {
+ $sql = "" ;
+ $l = $rest ;
+
+ $state = $states{SCAN} ;
+ last END_SQL_STATE_SWITCH ;
+ } ;
+
+ ( 1 ) && do {
+ push @sql_list, $sql ;
+ $sql = "" ;
+ $l = $rest ;
+
+ $state = $states{SCAN} ;
+ last END_SQL_STATE_SWITCH ;
+ } ;
+
+ } # END_SQL_STATE_SWITCH
+ last STATE_SWITCH ;
+ } ; # End of END_SQL state
+
+ $state == $states{QUOTE_SCAN} && do {
+ # debug "State = QUOTE_SCAN" ;
+ QUOTE_SCAN_STATE_SWITCH: {
+ ($rest eq "") && do {
+ $sql .= "\n" ;
+ $l = <F> ;
+ unless ($l) {
+ debug "Detected end of file inside a quoted string." ;
+ $state = $states{ERROR} ;
+ last QUOTE_SCAN_STATE_SWITCH ;
+ }
+ chomp $l ;
+ $rest = $l ;
+
+ last QUOTE_SCAN_STATE_SWITCH ;
+ } ;
+
+ ( 1 ) && do {
+ ($chunk, $rest) = ($l =~ /^([^\\\']*)(.*)/) ;
+ # debug "chunk = $chunk" ;
+ # debug "rest = $rest" ;
+ $sql .= $chunk ;
+
+ $state = $states{IN_QUOTE} ;
+ last QUOTE_SCAN_STATE_SWITCH ;
+ } ;
+
+ } # QUOTE_SCAN_STATE_SWITCH
+ last STATE_SWITCH ;
+ } ; # End of QUOTE_SCAN state
+
+ $state == $states{IN_QUOTE} && do {
+ # debug "State = IN_QUOTE" ;
+ IN_QUOTE_STATE_SWITCH: {
+ ($rest =~ /^\'/) && do {
+ $sql .= '\'' ;
+ $rest = substr $rest, 1 ;
+ $l = $rest ;
+
+ $state = $states{SQL_SCAN} ;
+ last IN_QUOTE_STATE_SWITCH ;
+ } ;
+
+ ($rest =~ /^\\\'/) && do {
+ $sql .= '\\\'' ;
+ $rest = substr $rest, 2 ;
+
+ last IN_QUOTE_STATE_SWITCH ;
+ } ;
+
+ ($rest =~ /^\\[^\\]/) && do {
+ $sql .= '\\' ;
+ $rest = substr $rest, 1 ;
+
+ last IN_QUOTE_STATE_SWITCH ;
+ } ;
+
+ ($rest =~ /^\\$/) && do {
+ $sql .= "\n" ;
+ $rest = substr $rest, 1 ;
+
+ last IN_QUOTE_STATE_SWITCH ;
+ } ;
+
+ ( 1 ) && do {
+ $l = $rest ;
+
+ $state = $states{QUOTE_SCAN} ;
+ last IN_QUOTE_STATE_SWITCH ;
+ } ;
+
+ } # IN_QUOTE_STATE_SWITCH
+ last STATE_SWITCH ;
+ } ; # End of IN_QUOTE state
+
+ $state == $states{START_COPY} && do {
+ # debug "State = START_COPY" ;
+ START_COPY_STATE_SWITCH: {
+ ($l =~ m/\s*copy\s+\"[\w_]+\"\s+from\s+stdin\s*;/i) && do {
+ ($copy_table, $copy_rest) = ($l =~ /\s*copy\s+\"([\w_]+)\"\s+from\s+stdin\s*;(.*)/i) ;
+ $l = <F> ;
+ unless ($l) {
+ debug "Detected end of file within a COPY statement." ;
+ $state = $states{ERROR} ;
+ last START_COPY_STATE_SWITCH ;
+ }
+ chomp $l ;
+
+ $state = $states{IN_COPY} ;
+ last START_COPY_STATE_SWITCH ;
+ } ;
+
+ ($l =~ m/\s*copy\s+[\w_]+\s+from\s+stdin\s*;/i) && do {
+ ($copy_table, $copy_rest) = ($l =~ /\s*copy\s+([\w_]+)\s+from\s+stdin\s*;(.*)/i) ;
+ $l = <F> ;
+ unless ($l) {
+ debug "Detected end of file within a COPY statement." ;
+ $state = $states{ERROR} ;
+ last START_COPY_STATE_SWITCH ;
+ }
+ chomp $l ;
+
+ $state = $states{IN_COPY} ;
+ last START_COPY_STATE_SWITCH ;
+ } ;
+
+ ( 1 ) && do {
+ debug "Unknown event in START_COPY state." ;
+ $state = $states{ERROR} ;
+ last START_COPY_STATE_SWITCH ;
+ } ;
+
+ } # START_COPY_STATE_SWITCH
+ last STATE_SWITCH ;
+ } ; # End of START_COPY state
+
+ $state == $states{IN_COPY} && do {
+ # debug "State = IN_COPY" ;
+ IN_COPY_STATE_SWITCH: {
+ ($l =~ /^\\\.$/) && do {
+ $l = $copy_rest ;
+
+ $state = $states{SCAN} ;
+ last IN_COPY_STATE_SWITCH ;
+ } ;
+
+ ( 1 ) && do {
+ @copy_data = () ;
+ @copy_data_tmp = split /\t/, $l ;
+ foreach $copy_field (@copy_data_tmp) {
+ if ($copy_field eq '\N') {
+ $copy_field = 'NULL' ;
+ } else {
+ $copy_field =~ s/\'/\\\'/g ;
+ $copy_field = "'" . $copy_field . "'" ;
+ }
+ push @copy_data, $copy_field ;
+ }
+ $sql = "INSERT INTO \"$copy_table\" VALUES (" ;
+ $sql .= join (", ", @copy_data) ;
+ $sql .= ")" ;
+ push @sql_list, $sql ;
+ $l = <F> ;
+ unless ($l) {
+ debug "Detected end of file within a COPY statement." ;
+ $state = $states{ERROR} ;
+ last IN_COPY_STATE_SWITCH ;
+ }
+ chomp $l ;
+
+ last IN_COPY_STATE_SWITCH ;
+ } ;
+
+ } # IN_COPY_SWITCH
+ last STATE_SWITCH ;
+ } ; # End of IN_COPY state
+
+ $state == $states{DONE} && do {
+ # debug "State = DONE" ;
+ last STATE_SWITCH ;
+ } ; # End of DONE state
+
+ $state == $states{ERROR} && do {
+ # debug "State = ERROR" ;
+ debug "Reached the ERROR state. Dying." ;
+ die "State machine is buggy." ;
+
+ last STATE_SWITCH ;
+ } ; # End of ERROR state
+
+ ( 1 ) && do {
+ debug "State machine went in an unknown state... Redirecting to ERROR." ;
+ $state = $states{ERROR} ;
+ last STATE_SWITCH ;
+ } ;
+
+ } # STATE_SWITCH
+ } # STATE_LOOP
+
close F ;
-
return \@sql_list ;
}
+
+sub create_metadata_table ( $ ) {
+ my $v = shift || "2.5-7+just+before+8" ;
+ # Do we have the metadata table?
+
+ my $query = "SELECT count(*) from pg_class where relname = 'debian_meta_data'";
+ # debug $query ;
+ my $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ my @array = $sth->fetchrow_array () ;
+ $sth->finish () ;
+
+ # Let's create this table if we have it not
+
+ if ($array [0] == 0) {
+ debug "Creating debian_meta_data table." ;
+ $query = "CREATE TABLE debian_meta_data (key varchar primary key, value text not null)" ;
+ # debug $query ;
+ $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ $sth->finish () ;
+ }
+
+ $query = "SELECT count(*) from debian_meta_data where key = 'db-version'";
+ # debug $query ;
+ $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ @array = $sth->fetchrow_array () ;
+ $sth->finish () ;
+
+ # Empty table? We'll have to fill it up a bit
+
+ if ($array [0] == 0) {
+ debug "Inserting first data into debian_meta_data table." ;
+ $query = "INSERT INTO debian_meta_data (key, value) VALUES ('db-version', '$v')" ;
+ # debug $query ;
+ $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ $sth->finish () ;
+ }
+}
+
+sub update_db_version ( $ ) {
+ my $v = shift or die "Not enough arguments" ;
+
+ debug "Updating debian_meta_data table." ;
+ my $query = "UPDATE debian_meta_data SET value = '$v' where key = 'db-version'" ;
+ # debug $query ;
+ my $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ $sth->finish () ;
+}
+
+sub get_db_version () {
+ my $query = "select value from debian_meta_data where key = 'db-version'" ;
+ # debug $query ;
+ my $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ my @array = $sth->fetchrow_array () ;
+ $sth->finish () ;
+
+ my $version = $array [0] ;
+
+ return $version ;
+}
+
+sub drop_table_if_exists ( $ ) {
+ my $tname = shift or die "Not enough arguments" ;
+ my $query = "select count(*) from pg_class where relname='$tname'" ;
+ my $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ my @array = $sth->fetchrow_array () ;
+ $sth->finish () ;
+
+ if ($array [0] != 0) {
+ # debug "Dropping table $tname" ;
+ $query = "drop table $tname" ;
+ # debug $query ;
+ $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ $sth->finish () ;
+ }
+}
+
+sub drop_sequence_if_exists ( $ ) {
+ my $sname = shift or die "Not enough arguments" ;
+ my $query = "select count(*) from pg_class where relname='$sname'" ;
+ my $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ my @array = $sth->fetchrow_array () ;
+ $sth->finish () ;
+
+ if ($array [0] != 0) {
+ # debug "Dropping sequence $sname" ;
+ $query = "drop sequence $sname" ;
+ # debug $query ;
+ $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ $sth->finish () ;
+ }
+}
+
+sub drop_index_if_exists ( $ ) {
+ my $iname = shift or die "Not enough arguments" ;
+ my $query = "select count(*) from pg_class where relname='$iname'" ;
+ my $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ my @array = $sth->fetchrow_array () ;
+ $sth->finish () ;
+
+ if ($array [0] != 0) {
+ # debug "Dropping index $iname" ;
+ $query = "drop index $iname" ;
+ # debug $query ;
+ $sth = $dbh->prepare ($query) ;
+ $sth->execute () ;
+ $sth->finish () ;
+ }
+}
Deleted: trunk/gforge_base/evolvisforge/gforge/deb-specific/db-upgrade26.pl
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/deb-specific/db-upgrade26.pl 2010-02-25 14:30:41 UTC (rev 606)
+++ trunk/gforge_base/evolvisforge/gforge/deb-specific/db-upgrade26.pl 2010-02-25 14:30:46 UTC (rev 607)
@@ -1,906 +0,0 @@
-#!/usr/bin/perl -w
-#
-# $Id$
-#
-# Debian-specific script to upgrade the database between releases
-# Roland Mas <lolando at debian.org>
-
-use strict ;
-use diagnostics ;
-
-use DBI ;
-use MIME::Base64 ;
-use HTML::Entities ;
-
-use vars qw/$dbh @reqlist/ ;
-use vars qw/$sys_default_domain $sys_cvs_host $sys_download_host
- $sys_shell_host $sys_users_host $sys_docs_host $sys_lists_host
- $sys_dns1_host $sys_dns2_host $FTPINCOMING_DIR $FTPFILES_DIR
- $sys_urlroot $sf_cache_dir $sys_name $sys_themeroot
- $sys_news_group $sys_dbhost $sys_dbname $sys_dbuser $sys_dbpasswd
- $sys_ldap_base_dn $sys_ldap_host $admin_login $admin_password
- $server_admin $domain_name $newsadmin_groupid $statsadmin_groupid
- $skill_list/ ;
-
-sub is_lesser ( $$ ) ;
-sub is_greater ( $$ ) ;
-sub debug ( $ ) ;
-sub parse_sql_file ( $ ) ;
-
-require ("/usr/lib/sourceforge/lib/include.pl") ; # Include all the predefined functions
-
-debug "You'll see some debugging info during this installation." ;
-debug "Do not worry unless told otherwise." ;
-
-&db_connect ;
-
-# debug "Connected to the database OK." ;
-
-$dbh->{AutoCommit} = 0;
-$dbh->{RaiseError} = 1;
-eval {
- my ($query, $sth, @array, $version, $action, $path, $target) ;
-
- # Do we have at least the basic schema?
-
- $query = "SELECT count(*) from pg_class where relname = 'groups'";
- # debug $query ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- @array = $sth->fetchrow_array () ;
- $sth->finish () ;
-
- # Create Sourceforge database
-
- if ($array [0] == 0) {
- # Installing SF 2.6 from scratch
- $action = "installation" ;
- debug "Creating initial Sourceforge database from files." ;
-
- &create_metadata_table ("2.5.9999") ;
-
- debug "Updating debian_meta_data table." ;
- $query = "INSERT INTO debian_meta_data (key, value) VALUES ('current-path', 'scratch-to-2.6')" ;
- # debug $query ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
- debug "Committing." ;
- $dbh->commit () ;
-
- } else {
- $action = "upgrade" ;
-
- $version = &get_db_version ;
- if (is_lesser $version, "2.5.9999") {
- debug "Found an old (2.5) database, will upgrade to 2.6" ;
-
- $query = "SELECT count(*) from debian_meta_data where key = 'current-path'";
- # debug $query ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- @array = $sth->fetchrow_array () ;
- $sth->finish () ;
-
- if ($array[0] == 0) {
- # debug "Updating debian_meta_data table." ;
- $query = "INSERT INTO debian_meta_data (key, value) VALUES ('current-path', '2.5-to-2.6')" ;
- # debug $query ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
- debug "Committing." ;
- $dbh->commit () ;
- }
- }
- }
-
- $query = "SELECT count(*) from debian_meta_data where key = 'current-path'";
- # debug $query ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- @array = $sth->fetchrow_array () ;
- $sth->finish () ;
-
- if ($array[0] == 0) {
- $path = "" ;
- } else {
- $query = "SELECT value from debian_meta_data where key = 'current-path'";
- # debug $query ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- @array = $sth->fetchrow_array () ;
- $sth->finish () ;
-
- $path = $array[0] ;
- }
-
- PATH_SWITCH: {
- ($path eq 'scratch-to-2.6') && do {
- $version = &get_db_version ;
- $target = "2.5.9999.1+global+data+done" ;
- if (is_lesser $version, $target) {
- my @filelist = qw{ /usr/lib/sourceforge/db/sf-2.6-complete.sql } ;
- # TODO: user_rating.sql
-
- foreach my $file (@filelist) {
- debug "Processing $file" ;
- @reqlist = @{ &parse_sql_file ($file) } ;
-
- foreach my $s (@reqlist) {
- $query = $s ;
- # debug $query ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
- }
- }
- @reqlist = () ;
-
- &update_db_version ($target) ;
- debug "Committing." ;
- $dbh->commit () ;
- }
-
- $version = &get_db_version ;
- $target = "2.5.9999.2+local+data+done" ;
- if (is_lesser $version, $target) {
- debug "Adding local data." ;
-
- do "/etc/sourceforge/local.pl" or die "Cannot read /etc/sourceforge/local.pl" ;
-
- my ($login, $pwd, $md5pwd, $email, $shellbox, $noreplymail, $date) ;
-
- $login = $admin_login ;
- $pwd = $admin_password ;
- $md5pwd=qx/echo -n $pwd | md5sum/ ;
- chomp $md5pwd ;
- $email = $server_admin ;
- $shellbox = "shell" ;
- $noreplymail="noreply\@$domain_name" ;
- $date = time () ;
-
- @reqlist = (
- "UPDATE groups SET homepage = '$domain_name/admin/' where group_id = 1",
- "UPDATE groups SET homepage = '$domain_name/news/' where group_id = 2",
- "UPDATE groups SET homepage = '$domain_name/stats/' where group_id = 3",
- "UPDATE groups SET homepage = '$domain_name/peerrating/' where group_id = 4",
- "UPDATE users SET email = '$noreplymail' where user_id = 100",
- "INSERT INTO users VALUES (101,'$login','$email','$md5pwd','Sourceforge admin','A','/bin/bash','','N',2000,'$shellbox',$date,'',1,0,NULL,NULL,0,'','GMT', 1, 0)",
- "SELECT setval ('\"users_pk_seq\"', 102, 'f')",
- "INSERT INTO user_group (user_id, group_id, admin_flags) VALUES (101, 1, 'A')",
- "INSERT INTO user_group (user_id, group_id, admin_flags) VALUES (101, 2, 'A')",
- "INSERT INTO user_group (user_id, group_id, admin_flags) VALUES (101, 3, 'A')",
- "INSERT INTO user_group (user_id, group_id, admin_flags) VALUES (101, 4, 'A')"
- ) ;
-
- foreach my $s (@reqlist) {
- $query = $s ;
- # debug $query ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
- }
- @reqlist = () ;
-
- &update_db_version ($target) ;
- debug "Committing." ;
- $dbh->commit () ;
- }
-
- $version = &get_db_version ;
- $target = "2.5.9999.3+skills+done" ;
- if (is_lesser $version, $target) {
- debug "Inserting skills." ;
-
- foreach my $skill (split /;/, $skill_list) {
- push @reqlist, "INSERT INTO people_skill (name) VALUES ('$skill')" ;
- }
-
- foreach my $s (@reqlist) {
- $query = $s ;
- # debug $query ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
- }
- @reqlist = () ;
-
- &update_db_version ($target) ;
- debug "Committing." ;
- $dbh->commit () ;
- }
-
- $version = &get_db_version ;
- $target = "2.6-0" ;
- if (is_lesser $version, $target) {
- debug "Updating debian_meta_data table." ;
- $query = "DELETE FROM debian_meta_data WHERE key = 'current-path'" ;
- # debug $query ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
-
- &update_db_version ($target) ;
- debug "Committing." ;
- $dbh->commit () ;
- }
-
- last PATH_SWITCH ;
- } ;
-
- ($path eq '2.5-to-2.6') && do {
-
- $version = &get_db_version ;
- $target = "2.5.9999.1+data+upgraded" ;
- if (is_lesser $version, $target) {
- debug "Upgrading your database scheme from 2.5" ;
-
- @reqlist = @{ &parse_sql_file ("/usr/lib/sourceforge/db/sf2.5-to-sf2.6.sql") } ;
- foreach my $s (@reqlist) {
- $query = $s ;
- debug $query ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
- }
- @reqlist = () ;
-
- &update_db_version ($target) ;
- debug "Committing." ;
- $dbh->commit () ;
- }
-
- $version = &get_db_version ;
- $target = "2.5.9999.2+artifact+transcoded" ;
- if (is_lesser $version, $target) {
- debug "Transcoding the artifact data fields" ;
-
- $query = "SELECT id,bin_data FROM artifact_file ORDER BY id ASC" ;
- # debug $query ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- while (@array = $sth->fetchrow_array) {
- my $query2 = "UPDATE artifact_file SET bin_data='" ;
- $query2 .= encode_base64 (decode_entities ($array [1])) ;
- $query2 .= "' WHERE id=" ;
- $query2 .= $array [0] ;
- $query2 .= "" ;
- # debug $query2 ;
- my $sth2 =$dbh->prepare ($query2) ;
- $sth2->execute () ;
- $sth2->finish () ;
- }
- $sth->finish () ;
-
- $version = &get_db_version ;
- $target = "2.5.9999.3+groups+inserted" ;
- if (is_lesser $version, $target) {
- debug "Inserting missing groups" ;
-
- @reqlist = (
- "INSERT INTO groups (group_name, homepage,
- is_public, status, unix_group_name, unix_box,
- http_domain, short_description, cvs_box, license,
- register_purpose, license_other, register_time,
- use_bugs, rand_hash, use_mail, use_survey, use_patch,
- use_forum, use_pm, use_cvs, use_news, use_support,
- new_bug_address, new_patch_address,
- new_support_address, type, use_docman, send_all_bugs,
- send_all_patches, send_all_support, new_task_address,
- send_all_tasks, use_bug_depend_box,
- use_pm_depend_box)
- VALUES ('Stats', '$domain_name/top/', 1,
- 'A', 'stats', '$shellbox', NULL, NULL, 'cvs',
- 'website', NULL, NULL, 0, 0, NULL, 1, 0, 0, 0, 0, 0,
- 1, 1, '', '', '', 1, 1, 0, 0, 0, '', 0, 0, 0)",
- "INSERT INTO groups (group_name, homepage,
- is_public, status, unix_group_name, unix_box,
- http_domain, short_description, cvs_box, license,
- register_purpose, license_other, register_time,
- use_bugs, rand_hash, use_mail, use_survey, use_patch,
- use_forum, use_pm, use_cvs, use_news, use_support,
- new_bug_address, new_patch_address,
- new_support_address, type, use_docman, send_all_bugs,
- send_all_patches, send_all_support, new_task_address,
- send_all_tasks, use_bug_depend_box,
- use_pm_depend_box)
- VALUES ('Peer Ratings', '$domain_name/people/', 0,
- 'A', 'peerrating', '$shellbox', NULL, NULL, 'cvs1',
- 'website', NULL, NULL, 0, 0, NULL, 1, 0, 0, 0, 0, 0,
- 1, 1, '', '', '', 1, 0, 0, 0, 0, '', 0, 0, 0)"
- ) ;
-
- foreach my $s (@reqlist) {
- $query = $s ;
- debug $query ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
- }
- @reqlist = () ;
- &update_db_version ($target) ;
- debug "Committing." ;
- $dbh->commit () ;
- }
-
- $version = &get_db_version ;
- $target = "2.6-0" ;
- if (is_lesser $version, $target) {
- debug "Database has successfully been converted." ;
- $query = "DELETE FROM debian_meta_data WHERE key = 'current-path'" ;
- # debug $query ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
-
- &update_db_version ($target) ;
- debug "Committing." ;
- $dbh->commit () ;
- }
-
- last PATH_SWITCH ;
- } ;
- }
-
- debug "It seems your database $action went well and smoothly. That's cool." ;
- debug "Please enjoy using Debian Sourceforge." ;
-
- # There should be a commit at the end of every block above.
- # If there is not, then it might be symptomatic of a problem.
- # For safety, we roll back.
- $dbh->rollback ();
-};
-
-if ($@) {
- warn "Transaction aborted because $@" ;
- debug "Transaction aborted because $@" ;
- $dbh->rollback ;
- debug "Please report this bug on the Debian bug-tracking system." ;
- debug "Please include the previous messages as well to help debugging." ;
- debug "You should not worry too much about this," ;
- debug "your DB is still in a consistent state and should be usable." ;
- exit 1 ;
-}
-
-$dbh->rollback ;
-$dbh->disconnect ;
-
-sub is_lesser ( $$ ) {
- my $v1 = shift || 0 ;
- my $v2 = shift || 0 ;
-
- my $rc = system "dpkg --compare-versions $v1 lt $v2" ;
-
- return (! $rc) ;
-}
-
-sub is_greater ( $$ ) {
- my $v1 = shift || 0 ;
- my $v2 = shift || 0 ;
-
- my $rc = system "dpkg --compare-versions $v1 gt $v2" ;
-
- return (! $rc) ;
-}
-
-sub debug ( $ ) {
- my $v = shift ;
- chomp $v ;
- print STDERR "$v\n" ;
-}
-
-sub parse_sql_file ( $ ) {
- my $f = shift ;
- open F, $f || die "Could not open file $f: $!\n" ;
-
- # This is a state machine to parse potentially complex SQL files
- # into individual SQL requests/statements
-
- my %states = ('INIT' => 0,
- 'SCAN' => 1,
- 'SQL_SCAN' => 2,
- 'IN_SQL' => 3,
- 'END_SQL' => 4,
- 'QUOTE_SCAN' => 5,
- 'IN_QUOTE' => 6,
- 'START_COPY' => 7,
- 'IN_COPY' => 8,
- 'ERROR' => 666,
- 'DONE' => 999) ;
- my ($state, $l, $par_level, $chunk, $rest, $sql, @sql_list, $copy_table, $copy_rest, @copy_data, @copy_data_tmp, $copy_field) ;
-
- # Init the state machine
-
- $state = $states{INIT} ;
-
- # my $n = 0 ;
-
- STATE_LOOP: while ($state != $states{DONE}) { # State machine main loop
- # debug "STATE_LOOP: state = $state" ;
- STATE_SWITCH: { # State machine step processing
- $state == $states{INIT} && do {
- # debug "State = INIT" ;
- $par_level = 0 ;
- $l = $sql = $chunk = $rest = "" ;
- @sql_list = () ;
- $copy_table = $copy_rest = "" ;
- @copy_data = @copy_data_tmp = () ;
- $copy_field = "" ;
-
- $state = $states{SCAN} ;
- last STATE_SWITCH ;
- } ; # End of INIT state
-
- $state == $states{SCAN} && do {
- # debug "State = SCAN" ;
- SCAN_STATE_SWITCH: {
- ( ($l eq "") or ($l =~ /^\s*$/) or ($l =~ /^--/) ) && do {
- $l = <F> ;
- unless ($l) {
- $state = $states{DONE} ;
- last SCAN_STATE_SWITCH ;
- }
- chomp $l ;
-
- last SCAN_STATE_SWITCH ;
- } ;
-
- ( ($l =~ m/\s*copy\s+\"[\w_]+\"\s+from\s+stdin\s*;/i)
- or ($l =~ m/\s*copy\s+[\w_]+\s+from\s+stdin\s*;/i) ) && do {
- # Nothing to do
-
- $state = $states{START_COPY} ;
- last SCAN_STATE_SWITCH ;
- } ;
-
- ( 1 ) && do {
- $sql = "" ;
-
- $state = $states{SQL_SCAN} ;
- last SCAN_STATE_SWITCH ;
- } ;
-
- } # SCAN_STATE_SWITCH
- last STATE_SWITCH ;
- } ; # End of SCAN state
-
- $state == $states{SQL_SCAN} && do {
- # debug "State = SQL_SCAN" ;
- SQL_SCAN_STATE_SWITCH: {
- ( ($l eq "") or ($l =~ /^\s*$/) or ($l =~ /^--/) ) && do {
- $l = <F> ;
- unless ($l) {
- debug "End of file detected during an SQL statement." ;
- $state = $states{ERROR} ;
- last SQL_SCAN_STATE_SWITCH ;
- }
- chomp $l ;
-
- $state = $states{SQL_SCAN} ;
- last SQL_SCAN_STATE_SWITCH ;
- } ;
-
- ( 1 ) && do {
- ($chunk, $rest) = ($l =~ /^([^()\';-]*)(.*)/) ;
- $sql .= $chunk ;
-
- $state = $states{IN_SQL} ;
- last SQL_SCAN_STATE_SWITCH ;
- } ;
-
- } # SQL_SCAN_STATE_SWITCH
- last STATE_SWITCH ;
- } ; # End of SQL_SCAN state
-
- $state == $states{IN_SQL} && do {
- # debug "State = IN_SQL" ;
- IN_SQL_STATE_SWITCH: {
- ($rest =~ /^\(/) && do {
- $par_level += 1 ;
- $sql .= '(' ;
- $rest = substr $rest, 1 ;
- $l = $rest ;
-
- $state = $states{SQL_SCAN} ;
- last IN_SQL_STATE_SWITCH ;
- } ;
-
- ( ($rest =~ /^\)/) and ($par_level > 0) ) && do {
- $par_level -= 1 ;
- $sql .= ')' ;
- $rest = substr $rest, 1 ;
- $l = $rest ;
-
- $state = $states{SQL_SCAN} ;
- last IN_SQL_STATE_SWITCH ;
- } ;
-
- ($rest =~ /^\)/) && do {
- debug "Detected ')' without any matching '('." ;
- $state = $states{ERROR} ;
- last IN_SQL_STATE_SWITCH ;
- } ;
-
- ($rest =~ /^--/) && do {
- $rest = "" ;
- $l = $rest ;
-
- $state = $states{SQL_SCAN} ;
- last IN_SQL_STATE_SWITCH ;
- } ;
-
- ($rest =~ /^-[^-]/) && do {
- $sql .= '-' ;
- $rest = substr $rest, 1 ;
- $l = $rest ;
-
- $state = $states{SQL_SCAN} ;
- last IN_SQL_STATE_SWITCH ;
- } ;
-
- ( ($rest =~ /^;/) and ($par_level == 0) ) && do {
- $sql .= ';' ;
- $rest = substr $rest, 1 ;
-
- $state = $states{END_SQL} ;
- last IN_SQL_STATE_SWITCH ;
- } ;
-
- ($rest =~ /^;/) && do {
- debug "Detected ';' within a parenthesis." ;
- $state = $states{ERROR} ;
- last IN_SQL_STATE_SWITCH ;
- } ;
-
- ($rest eq "") && do {
- $l = $rest ;
- $sql .= " " ;
-
- $state = $states{SQL_SCAN} ;
- last IN_SQL_STATE_SWITCH ;
- } ;
-
- ($rest =~ /^\'/) && do {
- $sql .= '\'' ;
- $rest = substr $rest, 1 ;
- $l = $rest ;
-
- $state = $states{IN_QUOTE} ;
- last IN_SQL_STATE_SWITCH ;
- } ;
-
- ( 1 ) && do {
- debug "Unknown event in IN_SQL state" ;
- $state = $states{ERROR} ;
- last IN_SQL_STATE_SWITCH ;
- } ;
- } # IN_SQL_STATE_SWITCH
- last STATE_SWITCH ;
- } ; # End of IN_SQL state
-
- $state == $states{END_SQL} && do {
- # debug "State = END_SQL" ;
- END_SQL_STATE_SWITCH: {
- ($sql =~ /^\s*$/) && do {
- $sql = "" ;
- $l = $rest ;
-
- $state = $states{SCAN} ;
- last END_SQL_STATE_SWITCH ;
- } ;
-
- ( 1 ) && do {
- push @sql_list, $sql ;
- $sql = "" ;
- $l = $rest ;
-
- $state = $states{SCAN} ;
- last END_SQL_STATE_SWITCH ;
- } ;
-
- } # END_SQL_STATE_SWITCH
- last STATE_SWITCH ;
- } ; # End of END_SQL state
-
- $state == $states{QUOTE_SCAN} && do {
- # debug "State = QUOTE_SCAN" ;
- QUOTE_SCAN_STATE_SWITCH: {
- ($rest eq "") && do {
- $sql .= "\n" ;
- $l = <F> ;
- unless ($l) {
- debug "Detected end of file inside a quoted string." ;
- $state = $states{ERROR} ;
- last QUOTE_SCAN_STATE_SWITCH ;
- }
- chomp $l ;
- $rest = $l ;
-
- last QUOTE_SCAN_STATE_SWITCH ;
- } ;
-
- ( 1 ) && do {
- ($chunk, $rest) = ($l =~ /^([^\\\']*)(.*)/) ;
- # debug "chunk = $chunk" ;
- # debug "rest = $rest" ;
- $sql .= $chunk ;
-
- $state = $states{IN_QUOTE} ;
- last QUOTE_SCAN_STATE_SWITCH ;
- } ;
-
- } # QUOTE_SCAN_STATE_SWITCH
- last STATE_SWITCH ;
- } ; # End of QUOTE_SCAN state
-
- $state == $states{IN_QUOTE} && do {
- # debug "State = IN_QUOTE" ;
- IN_QUOTE_STATE_SWITCH: {
- ($rest =~ /^\'/) && do {
- $sql .= '\'' ;
- $rest = substr $rest, 1 ;
- $l = $rest ;
-
- $state = $states{SQL_SCAN} ;
- last IN_QUOTE_STATE_SWITCH ;
- } ;
-
- ($rest =~ /^\\\'/) && do {
- $sql .= '\\\'' ;
- $rest = substr $rest, 2 ;
-
- last IN_QUOTE_STATE_SWITCH ;
- } ;
-
- ($rest =~ /^\\[^\\]/) && do {
- $sql .= '\\' ;
- $rest = substr $rest, 1 ;
-
- last IN_QUOTE_STATE_SWITCH ;
- } ;
-
- ($rest =~ /^\\$/) && do {
- $sql .= "\n" ;
- $rest = substr $rest, 1 ;
-
- last IN_QUOTE_STATE_SWITCH ;
- } ;
-
- ( 1 ) && do {
- $l = $rest ;
-
- $state = $states{QUOTE_SCAN} ;
- last IN_QUOTE_STATE_SWITCH ;
- } ;
-
- } # IN_QUOTE_STATE_SWITCH
- last STATE_SWITCH ;
- } ; # End of IN_QUOTE state
-
- $state == $states{START_COPY} && do {
- # debug "State = START_COPY" ;
- START_COPY_STATE_SWITCH: {
- ($l =~ m/\s*copy\s+\"[\w_]+\"\s+from\s+stdin\s*;/i) && do {
- ($copy_table, $copy_rest) = ($l =~ /\s*copy\s+\"([\w_]+)\"\s+from\s+stdin\s*;(.*)/i) ;
- $l = <F> ;
- unless ($l) {
- debug "Detected end of file within a COPY statement." ;
- $state = $states{ERROR} ;
- last START_COPY_STATE_SWITCH ;
- }
- chomp $l ;
-
- $state = $states{IN_COPY} ;
- last START_COPY_STATE_SWITCH ;
- } ;
-
- ($l =~ m/\s*copy\s+[\w_]+\s+from\s+stdin\s*;/i) && do {
- ($copy_table, $copy_rest) = ($l =~ /\s*copy\s+([\w_]+)\s+from\s+stdin\s*;(.*)/i) ;
- $l = <F> ;
- unless ($l) {
- debug "Detected end of file within a COPY statement." ;
- $state = $states{ERROR} ;
- last START_COPY_STATE_SWITCH ;
- }
- chomp $l ;
-
- $state = $states{IN_COPY} ;
- last START_COPY_STATE_SWITCH ;
- } ;
-
- ( 1 ) && do {
- debug "Unknown event in START_COPY state." ;
- $state = $states{ERROR} ;
- last START_COPY_STATE_SWITCH ;
- } ;
-
- } # START_COPY_STATE_SWITCH
- last STATE_SWITCH ;
- } ; # End of START_COPY state
-
- $state == $states{IN_COPY} && do {
- # debug "State = IN_COPY" ;
- IN_COPY_STATE_SWITCH: {
- ($l =~ /^\\\.$/) && do {
- $l = $copy_rest ;
-
- $state = $states{SCAN} ;
- last IN_COPY_STATE_SWITCH ;
- } ;
-
- ( 1 ) && do {
- @copy_data = () ;
- @copy_data_tmp = split /\t/, $l ;
- foreach $copy_field (@copy_data_tmp) {
- if ($copy_field eq '\N') {
- $copy_field = 'NULL' ;
- } else {
- $copy_field =~ s/\'/\\\'/g ;
- $copy_field = "'" . $copy_field . "'" ;
- }
- push @copy_data, $copy_field ;
- }
- $sql = "INSERT INTO \"$copy_table\" VALUES (" ;
- $sql .= join (", ", @copy_data) ;
- $sql .= ")" ;
- push @sql_list, $sql ;
- $l = <F> ;
- unless ($l) {
- debug "Detected end of file within a COPY statement." ;
- $state = $states{ERROR} ;
- last IN_COPY_STATE_SWITCH ;
- }
- chomp $l ;
-
- last IN_COPY_STATE_SWITCH ;
- } ;
-
- } # IN_COPY_SWITCH
- last STATE_SWITCH ;
- } ; # End of IN_COPY state
-
- $state == $states{DONE} && do {
- # debug "State = DONE" ;
- last STATE_SWITCH ;
- } ; # End of DONE state
-
- $state == $states{ERROR} && do {
- # debug "State = ERROR" ;
- debug "Reached the ERROR state. Dying." ;
- die "State machine is buggy." ;
-
- last STATE_SWITCH ;
- } ; # End of ERROR state
-
- ( 1 ) && do {
- debug "State machine went in an unknown state... Redirecting to ERROR." ;
- $state = $states{ERROR} ;
- last STATE_SWITCH ;
- } ;
-
- } # STATE_SWITCH
- } # STATE_LOOP
-
- close F ;
- return \@sql_list ;
-}
-
-sub create_metadata_table ( $ ) {
- my $v = shift || "2.5-7+just+before+8" ;
- # Do we have the metadata table?
-
- my $query = "SELECT count(*) from pg_class where relname = 'debian_meta_data'";
- # debug $query ;
- my $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- my @array = $sth->fetchrow_array () ;
- $sth->finish () ;
-
- # Let's create this table if we have it not
-
- if ($array [0] == 0) {
- debug "Creating debian_meta_data table." ;
- $query = "CREATE TABLE debian_meta_data (key varchar primary key, value text not null)" ;
- # debug $query ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
- }
-
- $query = "SELECT count(*) from debian_meta_data where key = 'db-version'";
- # debug $query ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- @array = $sth->fetchrow_array () ;
- $sth->finish () ;
-
- # Empty table? We'll have to fill it up a bit
-
- if ($array [0] == 0) {
- debug "Inserting first data into debian_meta_data table." ;
- $query = "INSERT INTO debian_meta_data (key, value) VALUES ('db-version', '$v')" ;
- # debug $query ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
- }
-}
-
-sub update_db_version ( $ ) {
- my $v = shift or die "Not enough arguments" ;
-
- debug "Updating debian_meta_data table." ;
- my $query = "UPDATE debian_meta_data SET value = '$v' where key = 'db-version'" ;
- # debug $query ;
- my $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
-}
-
-sub get_db_version () {
- my $query = "select value from debian_meta_data where key = 'db-version'" ;
- # debug $query ;
- my $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- my @array = $sth->fetchrow_array () ;
- $sth->finish () ;
-
- my $version = $array [0] ;
-
- return $version ;
-}
-
-sub drop_table_if_exists ( $ ) {
- my $tname = shift or die "Not enough arguments" ;
- my $query = "select count(*) from pg_class where relname='$tname'" ;
- my $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- my @array = $sth->fetchrow_array () ;
- $sth->finish () ;
-
- if ($array [0] != 0) {
- # debug "Dropping table $tname" ;
- $query = "drop table $tname" ;
- # debug $query ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
- }
-}
-
-sub drop_sequence_if_exists ( $ ) {
- my $sname = shift or die "Not enough arguments" ;
- my $query = "select count(*) from pg_class where relname='$sname'" ;
- my $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- my @array = $sth->fetchrow_array () ;
- $sth->finish () ;
-
- if ($array [0] != 0) {
- # debug "Dropping sequence $sname" ;
- $query = "drop sequence $sname" ;
- # debug $query ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
- }
-}
-
-sub drop_index_if_exists ( $ ) {
- my $iname = shift or die "Not enough arguments" ;
- my $query = "select count(*) from pg_class where relname='$iname'" ;
- my $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- my @array = $sth->fetchrow_array () ;
- $sth->finish () ;
-
- if ($array [0] != 0) {
- # debug "Dropping index $iname" ;
- $query = "drop index $iname" ;
- # debug $query ;
- $sth = $dbh->prepare ($query) ;
- $sth->execute () ;
- $sth->finish () ;
- }
-}
Modified: trunk/gforge_base/evolvisforge/gforge/deb-specific/install-db.sh
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/deb-specific/install-db.sh 2010-02-25 14:30:41 UTC (rev 606)
+++ trunk/gforge_base/evolvisforge/gforge/deb-specific/install-db.sh 2010-02-25 14:30:46 UTC (rev 607)
@@ -84,7 +84,7 @@
#$db_passwd
#FIN
kill -HUP $(head -1 /var/lib/postgres/data/postmaster.pid)
- /usr/lib/sourceforge/bin/db-upgrade26.pl 2>&1 | grep -v ^NOTICE:
+ /usr/lib/sourceforge/bin/db-upgrade.pl 2>&1 | grep -v ^NOTICE:
;;
purge-files)
cp -a /etc/postgresql/pg_hba.conf /etc/postgresql/pg_hba.conf.sourceforge-new
Modified: trunk/gforge_base/evolvisforge/gforge/debian/changelog
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/debian/changelog 2010-02-25 14:30:41 UTC (rev 606)
+++ trunk/gforge_base/evolvisforge/gforge/debian/changelog 2010-02-25 14:30:46 UTC (rev 607)
@@ -2,8 +2,9 @@
* Let's continue
* [Christian] Added dependancy on rcs for our patched cvsweb
+ * [Roland] Renamed db-upgrade26.pl to db-upgrade.pl.
- -- Christian Bayle <bayle at aist.enst.fr> Tue, 12 Mar 2002 07:34:03 +0100
+ -- Roland Mas <lolando at debian.org> Thu, 14 Mar 2002 18:39:29 +0100
sourceforge (2.6-0+8) unstable; urgency=low
Modified: trunk/gforge_base/evolvisforge/gforge/debian/rules
===================================================================
--- trunk/gforge_base/evolvisforge/gforge/debian/rules 2010-02-25 14:30:41 UTC (rev 606)
+++ trunk/gforge_base/evolvisforge/gforge/debian/rules 2010-02-25 14:30:46 UTC (rev 607)
@@ -104,7 +104,6 @@
install -m 755 deb-specific/install-db.sh $(CURDIR)/debian/sourceforge/usr/lib/sourceforge/bin/
install -m 755 deb-specific/install-apache.sh $(CURDIR)/debian/sourceforge/usr/lib/sourceforge/bin/
install -m 755 deb-specific/db-upgrade.pl $(CURDIR)/debian/sourceforge/usr/lib/sourceforge/bin/
- install -m 755 deb-specific/db-upgrade26.pl $(CURDIR)/debian/sourceforge/usr/lib/sourceforge/bin/
install -m 755 deb-specific/fill-in-the-blanks.pl $(CURDIR)/debian/sourceforge/usr/lib/sourceforge/bin/
# install -m 755 deb-specific/sf-add-skill $(CURDIR)/debian/sourceforge/usr/bin/
# install -m 755 deb-specific/sf-register-theme $(CURDIR)/debian/sourceforge/usr/bin/
More information about the evolvis-commits
mailing list