trac-upgrade-and-migration
| rev 28 | rev 29 | ||||
|---|---|---|---|---|---|
| 255 | 255 | ||||
| 256 | ticket_custom | 256 | ticket_custom | ||
| t | 257 | KEEP - ticket custom fields, might have garbage in this | t | 257 | DROP - ticket custom fields, lots of garbage from old plugins. We will be gener |
| > | ating a migration from subticket to new childticket plugin that will insert into | ||||
| > | this table. | ||||
| 258 | 258 | ||||
| 259 | ticket_template_store | 259 | ticket_template_store | ||
| rev 27 | rev 28 | ||||
|---|---|---|---|---|---|
| 295 | .. code-block:: bash | 295 | .. code-block:: bash | ||
| 296 | 296 | ||||
| t | 297 | cp trac_subtickets.csv trac_custom_ticket_children.sql | t | 297 | cp trac_subtickets.csv trac_ticket_children.sql |
| rev 26 | rev 27 | ||||
|---|---|---|---|---|---|
| 287 | .. code-block:: vim | 287 | .. code-block:: vim | ||
| 288 | 288 | ||||
| t | 289 | %s/,/,parent,#/g | t | 289 | %s/,/,"parent","#/g |
| 290 | %s/$/);/g | 290 | %s/$/");/g | ||
| 291 | %s/^/INSERT INTO "ticket_custom" VALUES(/g | 291 | %s/^/INSERT INTO "ticket_custom" VALUES(/g | ||
| 292 | 292 | ||||
| rev 25 | rev 26 | ||||
|---|---|---|---|---|---|
| 295 | .. code-block:: bash | 295 | .. code-block:: bash | ||
| 296 | 296 | ||||
| t | 297 | cp trac_subtickets.csv trac_custom_ticket_children.sq | t | 297 | cp trac_subtickets.csv trac_custom_ticket_children.sql |
| rev 24 | rev 25 | ||||
|---|---|---|---|---|---|
| 290 | %s/$/);/g | 290 | %s/$/);/g | ||
| 291 | %s/^/INSERT INTO "ticket_custom" VALUES(/g | 291 | %s/^/INSERT INTO "ticket_custom" VALUES(/g | ||
| t | t | 292 | |||
| 293 | rename | ||||
| 294 | |||||
| 295 | .. code-block:: bash | ||||
| 296 | |||||
| 297 | cp trac_subtickets.csv trac_custom_ticket_children.sq | ||||
| rev 23 | rev 24 | ||||
|---|---|---|---|---|---|
| 275 | .. code-block:: bash | 275 | .. code-block:: bash | ||
| 276 | 276 | ||||
| n | 277 | sqlite3 trac.db ".dump subtickets" > trac_subtickets.sql | n | 277 | sqlite3 trac.db |
| 278 | cp trac_subtickets.sql trac_subtickets_migrate.sql | 278 | sqlite> .mode csv | ||
| 279 | sqlite> .out trac_subtickets.csv | ||||
| 280 | sqlite> SELECT child,parent FROM subtickets; | ||||
| 281 | sqlite> .exit | ||||
| 279 | vim trac_subtickets_migrate.sql | 282 | vim trac_subtickets.csv | ||
| 280 | 283 | ||||
| n | 281 | run the following transformation search and replace regex | n | 284 | |
| 285 | run the following search and replace transformations: | ||||
| 282 | 286 | ||||
| 283 | .. code-block:: vim | 287 | .. code-block:: vim | ||
| 284 | 288 | ||||
| n | 285 | :%s/"subtickets"/"ticket_custom"/g | n | ||
| 286 | |||||
| 287 | delete the following lines: | ||||
| 288 | |||||
| 289 | .. code-block:: sql | ||||
| 290 | |||||
| 291 | CREATE TABLE subtickets ( | ||||
| 292 | parent integer, | ||||
| 293 | child integer, | ||||
| 294 | UNIQUE (parent,child) | ||||
| 295 | ); | ||||
| 296 | |||||
| 297 | run the following transformation search and replace regex | ||||
| 298 | |||||
| 299 | .. code-block:: vim | ||||
| 300 | |||||
| 301 | %s/,/,parent,#/g | 289 | %s/,/,parent,#/g | ||
| t | t | 290 | %s/$/);/g | ||
| 291 | %s/^/INSERT INTO "ticket_custom" VALUES(/g | ||||
| rev 22 | rev 23 | ||||
|---|---|---|---|---|---|
| 294 | UNIQUE (parent,child) | 294 | UNIQUE (parent,child) | ||
| 295 | ); | 295 | ); | ||
| t | t | 296 | |||
| 297 | run the following transformation search and replace regex | ||||
| 298 | |||||
| 299 | .. code-block:: vim | ||||
| 300 | |||||
| 301 | %s/,/,parent,#/g | ||||
| rev 21 | rev 22 | ||||
|---|---|---|---|---|---|
| 284 | 284 | ||||
| 285 | :%s/"subtickets"/"ticket_custom"/g | 285 | :%s/"subtickets"/"ticket_custom"/g | ||
| t | t | 286 | |||
| 287 | delete the following lines: | ||||
| 288 | |||||
| 289 | .. code-block:: sql | ||||
| 290 | |||||
| 291 | CREATE TABLE subtickets ( | ||||
| 292 | parent integer, | ||||
| 293 | child integer, | ||||
| 294 | UNIQUE (parent,child) | ||||
| 295 | ); | ||||
| rev 20 | rev 21 | ||||
|---|---|---|---|---|---|
| 271 | ================================================== | 271 | ================================================== | ||
| 272 | 272 | ||||
| t | t | 273 | dump out the data and edit with vim | ||
| 274 | |||||
| 275 | .. code-block:: bash | ||||
| 276 | |||||
| 277 | sqlite3 trac.db ".dump subtickets" > trac_subtickets.sql | ||||
| 278 | cp trac_subtickets.sql trac_subtickets_migrate.sql | ||||
| 279 | vim trac_subtickets_migrate.sql | ||||
| 280 | |||||
| 281 | run the following transformation search and replace regex | ||||
| 282 | |||||
| 273 | .. code-block:: vim | 283 | .. code-block:: vim | ||
| 274 | 284 | ||||
| rev 19 | rev 20 | ||||
|---|---|---|---|---|---|
| 268 | 268 | ||||
| 269 | 269 | ||||
| t | t | 270 | subtickets migration to child ticket plugin | ||
| 271 | ================================================== | ||||
| 272 | |||||
| 273 | .. code-block:: vim | ||||
| 274 | |||||
| 275 | :%s/"subtickets"/"ticket_custom"/g | ||||
| rev 18 | rev 19 | ||||
|---|---|---|---|---|---|
| 188 | cat trac_attachment.sql | sqlite3 trac.db | 188 | cat trac_attachment.sql | sqlite3 trac.db | ||
| 189 | cat trac_milestone.sql | sqlite3 trac.db | 189 | cat trac_milestone.sql | sqlite3 trac.db | ||
| t | 190 | scat trac_pastes.sql | sqlite3 trac.db | t | 190 | cat trac_pastes.sql | sqlite3 trac.db |
| 191 | 191 | ||||
| 192 | #. copy files/attachments directory from hot-copy to new Trac project. Make sur | 192 | #. copy files/attachments directory from hot-copy to new Trac project. Make sur | ||
| > | e owner:group is trac:trac: | > | e owner:group is trac:trac: | ||
| rev 17 | rev 18 | ||||
|---|---|---|---|---|---|
| 167 | sqlite3 trac.db ".dump attachment" > trac_attachment.sql | 167 | sqlite3 trac.db ".dump attachment" > trac_attachment.sql | ||
| 168 | sqlite3 trac.db ".dump milestone" > trac_milestone.sql | 168 | sqlite3 trac.db ".dump milestone" > trac_milestone.sql | ||
| n | n | 169 | sqlite3 trac.db ".dump pastes" > trac_pastes.sql | ||
| 169 | 170 | ||||
| 170 | #. copy \*.sql to the new trac project db directory | 171 | #. copy \*.sql to the new trac project db directory | ||
| 187 | cat trac_attachment.sql | sqlite3 trac.db | 188 | cat trac_attachment.sql | sqlite3 trac.db | ||
| 188 | cat trac_milestone.sql | sqlite3 trac.db | 189 | cat trac_milestone.sql | sqlite3 trac.db | ||
| t | t | 190 | scat trac_pastes.sql | sqlite3 trac.db | ||
| 189 | 191 | ||||
| 190 | #. copy files/attachments directory from hot-copy to new Trac project. Make sur | 192 | #. copy files/attachments directory from hot-copy to new Trac project. Make sur | ||
| > | e owner:group is trac:trac: | > | e owner:group is trac:trac: | ||
| rev 16 | rev 17 | ||||
|---|---|---|---|---|---|
| 188 | cat trac_milestone.sql | sqlite3 trac.db | 188 | cat trac_milestone.sql | sqlite3 trac.db | ||
| 189 | 189 | ||||
| t | t | 190 | #. copy files/attachments directory from hot-copy to new Trac project. Make sur | ||
| > | e owner:group is trac:trac: | ||||
| 191 | |||||
| 192 | .. code-block:: bash | ||||
| 193 | |||||
| 194 | chown -R trac:trac files/attachments | ||||
| 195 | |||||
| 190 | 196 | ||||
| 191 | trac database tables and explanations | 197 | trac database tables and explanations | ||
| rev 15 | rev 16 | ||||
|---|---|---|---|---|---|
| 256 | 256 | ||||
| 257 | wiki | 257 | wiki | ||
| t | 258 | DROP - wiki pages, we do not plan to migrate | t | 258 | DROP - discuss, we could migrate everything or we could migrate some pages |
| 259 | 259 | ||||
| 260 | 260 | ||||
| rev 14 | rev 15 | ||||
|---|---|---|---|---|---|
| 214 | 214 | ||||
| 215 | pastes | 215 | pastes | ||
| t | 216 | DROP - we don't need to migrate old pastes | t | 216 | KEEP - we need to install paste plugin |
| 217 | 217 | ||||
| 218 | permission | 218 | permission | ||
| rev 13 | rev 14 | ||||
|---|---|---|---|---|---|
| 208 | 208 | ||||
| 209 | milestone | 209 | milestone | ||
| n | 210 | KEEP - We have 7 records that need to be moved, Trac defaults to Milestone 1, | n | 210 | KEEP - we have 7 records that need to be moved, Trac defaults to Milestone 1, |
| > | 2, 3, 4 | > | 2, 3, 4 | ||
| 211 | 211 | ||||
| 212 | node_change | 212 | node_change | ||
| n | 213 | KEEP - | n | 213 | DROP - empty |
| 214 | 214 | ||||
| 215 | pastes | 215 | pastes | ||
| n | 216 | KEEP - | n | 216 | DROP - we don't need to migrate old pastes |
| 217 | |||||
| 217 | permission | 218 | permission | ||
| n | 218 | KEEP - | n | 219 | DROP - we don't need to migrate old permissions. we need a plan to place in con |
| > | fig management | ||||
| 220 | |||||
| 219 | report | 221 | report | ||
| n | 220 | KEEP - | n | 222 | DROP - we don't need old reports. we might want to back them up as examples |
| 223 | |||||
| 221 | repository | 224 | repository | ||
| n | 222 | KEEP - | n | 225 | DROP - empty |
| 226 | |||||
| 223 | revision | 227 | revision | ||
| n | 224 | KEEP - | n | 228 | DROP - empty |
| 229 | |||||
| 225 | session | 230 | session | ||
| n | 226 | KEEP - | n | 231 | DROP - session data for when people logged in and what they did to the trac sys |
| > | tem | ||||
| 232 | |||||
| 227 | session_attribute | 233 | session_attribute | ||
| n | 228 | KEEP - | n | 234 | DROP - session data for when people logged in and what they did to the trac sys |
| > | tem | ||||
| 235 | |||||
| 229 | subtickets | 236 | subtickets | ||
| n | 230 | KEEP - | n | 237 | KEEP - we might need to transform this data to work with new subticket plugin |
| 238 | |||||
| 231 | system | 239 | system | ||
| n | 232 | KEEP - | n | 240 | DROP - version numbers of plugins and modules |
| 241 | |||||
| 233 | ticket | 242 | ticket | ||
| n | 234 | KEEP - | n | 243 | KEEP - tickets |
| 244 | |||||
| 235 | ticket_change | 245 | ticket_change | ||
| n | 236 | KEEP - | n | 246 | KEEP - ticket history |
| 247 | |||||
| 237 | ticket_custom | 248 | ticket_custom | ||
| n | 238 | KEEP - | n | 249 | KEEP - ticket custom fields, might have garbage in this |
| 250 | |||||
| 239 | ticket_template_store | 251 | ticket_template_store | ||
| n | 240 | KEEP - | n | 252 | KEEP - ticket templates which auto fill body message with text, discuss this |
| 253 | |||||
| 241 | version | 254 | version | ||
| t | 242 | DROP - contains | t | 255 | DROP - empty |
| 256 | |||||
| 243 | wiki | 257 | wiki | ||
| 244 | DROP - wiki pages, we do not plan to migrate | 258 | DROP - wiki pages, we do not plan to migrate | ||
| rev 12 | rev 13 | ||||
|---|---|---|---|---|---|
| 199 | 199 | ||||
| 200 | cache | 200 | cache | ||
| n | 201 | KEEP - | n | 201 | DROP - only record: 901198563|1|trac.wiki.api.WikiSystem.pages |
| 202 | 202 | ||||
| 203 | component | 203 | component | ||
| 204 | DROP - we plan to create new components via config management | 204 | DROP - we plan to create new components via config management | ||
| n | n | 205 | |||
| 205 | enum | 206 | enum | ||
| 206 | DROP - we plan to create new enums (priority, severity, ticket_type, resolution | 207 | DROP - we plan to create new enums (priority, severity, ticket_type, resolution | ||
| > | ) via config management | > | ) via config management | ||
| n | n | 208 | |||
| 207 | milestone | 209 | milestone | ||
| n | 208 | KEEP - | n | 210 | KEEP - We have 7 records that need to be moved, Trac defaults to Milestone 1, |
| > | 2, 3, 4 | ||||
| 211 | |||||
| 209 | node_change | 212 | node_change | ||
| 210 | KEEP - | 213 | KEEP - | ||
| t | t | 214 | |||
| 211 | pastes | 215 | pastes | ||
| 212 | KEEP - | 216 | KEEP - | ||
| rev 11 | rev 12 | ||||
|---|---|---|---|---|---|
| 193 | 193 | ||||
| 194 | attachment | 194 | attachment | ||
| n | n | 195 | KEEP - meta data for attachment files. Also need underlying attachment directo | ||
| > | ry. | ||||
| 196 | |||||
| 195 | auth_cookie | 197 | auth_cookie | ||
| n | n | 198 | DROP - cookie session data for logged in users | ||
| 199 | |||||
| 196 | cache | 200 | cache | ||
| n | n | 201 | KEEP - | ||
| 202 | |||||
| 197 | component | 203 | component | ||
| n | n | 204 | DROP - we plan to create new components via config management | ||
| 198 | enum | 205 | enum | ||
| n | n | 206 | DROP - we plan to create new enums (priority, severity, ticket_type, resolution | ||
| > | ) via config management | ||||
| 199 | milestone | 207 | milestone | ||
| n | n | 208 | KEEP - | ||
| 200 | node_change | 209 | node_change | ||
| n | n | 210 | KEEP - | ||
| 201 | pastes | 211 | pastes | ||
| n | n | 212 | KEEP - | ||
| 202 | permission | 213 | permission | ||
| n | n | 214 | KEEP - | ||
| 203 | report | 215 | report | ||
| n | n | 216 | KEEP - | ||
| 204 | repository | 217 | repository | ||
| n | n | 218 | KEEP - | ||
| 205 | revision | 219 | revision | ||
| n | n | 220 | KEEP - | ||
| 206 | session | 221 | session | ||
| n | n | 222 | KEEP - | ||
| 207 | session_attribute | 223 | session_attribute | ||
| n | n | 224 | KEEP - | ||
| 208 | subtickets | 225 | subtickets | ||
| n | n | 226 | KEEP - | ||
| 209 | system | 227 | system | ||
| n | n | 228 | KEEP - | ||
| 210 | ticket | 229 | ticket | ||
| n | n | 230 | KEEP - | ||
| 211 | ticket_change | 231 | ticket_change | ||
| n | n | 232 | KEEP - | ||
| 212 | ticket_custom | 233 | ticket_custom | ||
| n | n | 234 | KEEP - | ||
| 213 | ticket_template_store | 235 | ticket_template_store | ||
| n | n | 236 | KEEP - | ||
| 214 | version | 237 | version | ||
| n | n | 238 | DROP - contains | ||
| 215 | wiki | 239 | wiki | ||
| t | t | 240 | DROP - wiki pages, we do not plan to migrate | ||
| 216 | 241 | ||||
| 217 | 242 | ||||
| rev 10 | rev 11 | ||||
|---|---|---|---|---|---|
| 188 | cat trac_milestone.sql | sqlite3 trac.db | 188 | cat trac_milestone.sql | sqlite3 trac.db | ||
| 189 | 189 | ||||
| t | t | 190 | |||
| 191 | trac database tables and explanations | ||||
| 192 | =============================================== | ||||
| 193 | |||||
| 194 | attachment | ||||
| 195 | auth_cookie | ||||
| 196 | cache | ||||
| 197 | component | ||||
| 198 | enum | ||||
| 199 | milestone | ||||
| 200 | node_change | ||||
| 201 | pastes | ||||
| 202 | permission | ||||
| 203 | report | ||||
| 204 | repository | ||||
| 205 | revision | ||||
| 206 | session | ||||
| 207 | session_attribute | ||||
| 208 | subtickets | ||||
| 209 | system | ||||
| 210 | ticket | ||||
| 211 | ticket_change | ||||
| 212 | ticket_custom | ||||
| 213 | ticket_template_store | ||||
| 214 | version | ||||
| 215 | wiki | ||||
| 216 | |||||
| 217 | |||||
| 218 | |||||
| rev 9 | rev 10 | ||||
|---|---|---|---|---|---|
| 166 | sqlite3 trac.db ".dump ticket_template_store" > trac_ticket_template_store.s | 166 | sqlite3 trac.db ".dump ticket_template_store" > trac_ticket_template_store.s | ||
| > | ql | > | ql | ||
| 167 | sqlite3 trac.db ".dump attachment" > trac_attachment.sql | 167 | sqlite3 trac.db ".dump attachment" > trac_attachment.sql | ||
| n | n | 168 | sqlite3 trac.db ".dump milestone" > trac_milestone.sql | ||
| 168 | 169 | ||||
| 169 | #. copy \*.sql to the new trac project db directory | 170 | #. copy \*.sql to the new trac project db directory | ||
| 185 | cat trac_ticket_template_store.sql | sqlite3 trac.db | 186 | cat trac_ticket_template_store.sql | sqlite3 trac.db | ||
| 186 | cat trac_attachment.sql | sqlite3 trac.db | 187 | cat trac_attachment.sql | sqlite3 trac.db | ||
| t | t | 188 | cat trac_milestone.sql | sqlite3 trac.db | ||
| 187 | 189 | ||||
| rev 8 | rev 9 | ||||
|---|---|---|---|---|---|
| 6 | We need to perform the following tasks: | 6 | We need to perform the following tasks: | ||
| 7 | 7 | ||||
| n | n | 8 | * Migrate Trac project to a new host | ||
| 8 | * Upgrade from Trac==0.12.2 to Trac==1.0.1 | 9 | * Upgrade from Trac==0.12.2 to Trac==1.0.1 | ||
| t | 9 | * Migrate Trac project to a new host | t | ||
| 10 | * Migrate tickets from old Trac project to new Trac project | 10 | * Migrate tickets from old Trac project to new Trac project | ||
| 11 | 11 | ||||
| rev 7 | rev 8 | ||||
|---|---|---|---|---|---|
| f | 1 | Trac Upgrade and Migration | f | 1 | Trac Upgrade and Migration |
| 2 | ############################# | 2 | ############################# | ||
| t | t | 3 | |||
| 4 | .. contents:: | ||||
| 3 | 5 | ||||
| 4 | We need to perform the following tasks: | 6 | We need to perform the following tasks: | ||
| rev 6 | rev 7 | ||||
|---|---|---|---|---|---|
| 147 | 147 | ||||
| 148 | dump ticket tables from hot-copy and import to new project | 148 | dump ticket tables from hot-copy and import to new project | ||
| t | 149 | ++++++++++++++++++=============================================== | t | 149 | ==================================================================== |
| 150 | 150 | ||||
| 151 | #. move to db directory: | 151 | #. move to db directory: | ||
| rev 5 | rev 6 | ||||
|---|---|---|---|---|---|
| 147 | 147 | ||||
| 148 | dump ticket tables from hot-copy and import to new project | 148 | dump ticket tables from hot-copy and import to new project | ||
| t | 149 | ------------------------------------------------------------------------ | t | 149 | ++++++++++++++++++=============================================== |
| 150 | 150 | ||||
| 151 | #. move to db directory: | 151 | #. move to db directory: | ||
| rev 4 | rev 5 | ||||
|---|---|---|---|---|---|
| 146 | tracd --port=8800 --env-parent-dir ~/trac/ | 146 | tracd --port=8800 --env-parent-dir ~/trac/ | ||
| 147 | 147 | ||||
| t | 148 | dump ticket tables from hot-copy | t | 148 | dump ticket tables from hot-copy and import to new project |
| 149 | ------------------------------------------------ | 149 | ------------------------------------------------------------------------ | ||
| 150 | 150 | ||||
| 151 | #. move to db directory: | 151 | #. move to db directory: | ||
| rev 3 | rev 4 | ||||
|---|---|---|---|---|---|
| 51 | tar -czvf trac-2013-07-2.tar.gz /cars/archive/trac-hot-copy-backup | 51 | tar -czvf trac-2013-07-2.tar.gz /cars/archive/trac-hot-copy-backup | ||
| 52 | 52 | ||||
| n | 53 | #. on your workstation scp tar archive from grail: | n | 53 | #. on your workstation scp tar archive: |
| 54 | 54 | ||||
| 55 | .. code-block:: bash | 55 | .. code-block:: bash | ||
| 58 | mkdir trac | 58 | mkdir trac | ||
| 59 | cd trac | 59 | cd trac | ||
| t | 60 | scp grail:/cars/archive/trac-2013-07-2.tar.gz . | t | 60 | scp old-server:/cars/archive/trac-2013-07-2.tar.gz . |
| 61 | 61 | ||||
| 62 | #. unarchive: | 62 | #. unarchive: | ||
| rev 2 | rev 3 | ||||
|---|---|---|---|---|---|
| 32 | 32 | ||||
| 33 | - manual migration of open tickets | 33 | - manual migration of open tickets | ||
| t | 34 | - simply as: chmod 000 pass_file | t | 34 | - simple as: chmod 000 pass_file |
| 35 | - operation headache, confusing to have two tracs | 35 | - operation headache, confusing to have two tracs | ||
| 36 | 36 | ||||
| rev 1 | rev 2 | ||||
|---|---|---|---|---|---|
| 39 | =============================================== | 39 | =============================================== | ||
| 40 | 40 | ||||
| n | 41 | #. create hot-copy of trac:: | n | 41 | #. create hot-copy of trac: |
| 42 | |||||
| 43 | .. code-block:: bash | ||||
| 42 | 44 | ||||
| 43 | trac-admin /path/to/projenv hotcopy /path/to/backupdir | 45 | trac-admin /path/to/projenv hotcopy /path/to/backupdir | ||
| 44 | 46 | ||||
| n | 45 | #. create a tar archive of hot backup:: | n | 47 | #. create a tar archive of hot backup: |
| 48 | |||||
| 49 | .. code-block:: bash | ||||
| 46 | 50 | ||||
| 47 | tar -czvf trac-2013-07-2.tar.gz /cars/archive/trac-hot-copy-backup | 51 | tar -czvf trac-2013-07-2.tar.gz /cars/archive/trac-hot-copy-backup | ||
| 48 | 52 | ||||
| n | 49 | #. on your workstation scp tar archive from grail:: | n | 53 | #. on your workstation scp tar archive from grail: |
| 54 | |||||
| 55 | .. code-block:: bash | ||||
| 50 | 56 | ||||
| 51 | cd ~ | 57 | cd ~ | ||
| 54 | scp grail:/cars/archive/trac-2013-07-2.tar.gz . | 60 | scp grail:/cars/archive/trac-2013-07-2.tar.gz . | ||
| 55 | 61 | ||||
| n | 56 | #. unarchive:: | n | 62 | #. unarchive: |
| 63 | |||||
| 64 | .. code-block:: bash | ||||
| 57 | 65 | ||||
| 58 | tar xzvf trac-2013-07-2.tar.gz | 66 | tar xzvf trac-2013-07-2.tar.gz | ||
| 59 | 67 | ||||
| n | 60 | #. create virtualenv:: | n | 68 | #. create virtualenv: |
| 69 | |||||
| 70 | .. code-block:: bash | ||||
| 61 | 71 | ||||
| 62 | cd trac-hot-copy-backup | 72 | cd trac-hot-copy-backup | ||
| 64 | source .env/bin/activate | 74 | source .env/bin/activate | ||
| 65 | 75 | ||||
| n | 66 | #. install Genshi==0.6 because Trac==0.12.2 breaks with Genshi==0.7:: | n | 76 | #. install Genshi==0.6 because Trac==0.12.2 breaks with Genshi==0.7: |
| 77 | |||||
| 78 | .. code-block:: bash | ||||
| 67 | 79 | ||||
| 68 | pip install Genshi==0.6 | 80 | pip install Genshi==0.6 | ||
| 69 | 81 | ||||
| n | 70 | #. install Trac==0.12.2:: | n | 82 | #. install Trac==0.12.2: |
| 83 | |||||
| 84 | .. code-block:: bash | ||||
| 71 | 85 | ||||
| 72 | pip install Trac==0.12.2 | 86 | pip install Trac==0.12.2 | ||
| 73 | 87 | ||||
| n | 74 | #. test setup:: | n | 88 | #. test setup: |
| 89 | |||||
| 90 | .. code-block:: bash | ||||
| 75 | 91 | ||||
| 76 | tracd --port=8800 --env-parent-dir ~/trac/ | 92 | tracd --port=8800 --env-parent-dir ~/trac/ | ||
| 83 | #. bring hot-copy tracd server offline | 99 | #. bring hot-copy tracd server offline | ||
| 84 | 100 | ||||
| n | 85 | #. Update the Trac Code to Trac==1.0:: | n | 101 | #. Update the Trac Code to Trac==1.0: |
| 102 | |||||
| 103 | .. code-block:: bash | ||||
| 86 | 104 | ||||
| 87 | # optional, but these directories are no longer used | 105 | # optional, but these directories are no longer used | ||
| 89 | pip install Trac==1.0 | 107 | pip install Trac==1.0 | ||
| 90 | 108 | ||||
| n | 91 | #. Upgrade the Trac environment:: | n | 109 | #. Upgrade the Trac environment: |
| 110 | |||||
| 111 | .. code-block:: bash | ||||
| 92 | 112 | ||||
| 93 | trac-admin ~/trac/trac-hot-copy-backup upgrade | 113 | trac-admin ~/trac/trac-hot-copy-backup upgrade | ||
| 94 | trac-admin ~/trac/trac-hot-copy-backup wiki upgrade | 114 | trac-admin ~/trac/trac-hot-copy-backup wiki upgrade | ||
| 95 | 115 | ||||
| n | 96 | #. test setup:: | n | 116 | #. test setup: |
| 117 | |||||
| 118 | .. code-block:: bash | ||||
| 97 | 119 | ||||
| 98 | tracd --port=8800 --env-parent-dir ~/trac/ | 120 | tracd --port=8800 --env-parent-dir ~/trac/ | ||
| 103 | #. bring hot-copy tracd server offline | 125 | #. bring hot-copy tracd server offline | ||
| 104 | 126 | ||||
| n | 105 | #. Update the Trac Code to Trac==1.0.1:: | n | 127 | #. Update the Trac Code to Trac==1.0.1: |
| 128 | |||||
| 129 | .. code-block:: bash | ||||
| 106 | 130 | ||||
| 107 | # optional, but these directories are no longer used | 131 | # optional, but these directories are no longer used | ||
| 109 | pip install Trac==1.0.1 | 133 | pip install Trac==1.0.1 | ||
| 110 | 134 | ||||
| n | 111 | #. Upgrade the Trac environment:: | n | 135 | #. Upgrade the Trac environment: |
| 136 | |||||
| 137 | .. code-block:: bash | ||||
| 112 | 138 | ||||
| 113 | trac-admin ~/trac/trac-hot-copy-backup upgrade | 139 | trac-admin ~/trac/trac-hot-copy-backup upgrade | ||
| 114 | trac-admin ~/trac/trac-hot-copy-backup wiki upgrade | 140 | trac-admin ~/trac/trac-hot-copy-backup wiki upgrade | ||
| 115 | 141 | ||||
| n | 116 | #. test setup:: | n | 142 | #. test setup: |
| 143 | |||||
| 144 | .. code-block:: bash | ||||
| 117 | 145 | ||||
| 118 | tracd --port=8800 --env-parent-dir ~/trac/ | 146 | tracd --port=8800 --env-parent-dir ~/trac/ | ||
| 121 | ------------------------------------------------ | 149 | ------------------------------------------------ | ||
| 122 | 150 | ||||
| n | 123 | #. move to db directory:: | n | 151 | #. move to db directory: |
| 152 | |||||
| 153 | .. code-block:: bash | ||||
| 124 | 154 | ||||
| 125 | cd ~/trac/trac-hot-copy-backup/db | 155 | cd ~/trac/trac-hot-copy-backup/db | ||
| 126 | 156 | ||||
| n | 127 | #. dump each table related to tickets:: | n | 157 | #. dump each table related to tickets: |
| 158 | |||||
| 159 | .. code-block:: bash | ||||
| 128 | 160 | ||||
| 129 | sqlite3 trac.db ".dump ticket" > trac_ticket.sql | 161 | sqlite3 trac.db ".dump ticket" > trac_ticket.sql | ||
| 135 | #. copy \*.sql to the new trac project db directory | 167 | #. copy \*.sql to the new trac project db directory | ||
| 136 | 168 | ||||
| n | 137 | #. become trac user:: | n | 169 | #. become trac user: |
| 170 | |||||
| 171 | .. code-block:: bash | ||||
| 138 | 172 | ||||
| 139 | sudo su - trac | 173 | sudo su - trac | ||
| 140 | bash | 174 | bash | ||
| 141 | 175 | ||||
| t | 142 | #. import the tables:: | t | 176 | #. import the tables: |
| 177 | |||||
| 178 | .. code-block:: bash | ||||
| 143 | 179 | ||||
| 144 | cat trac_ticket.sql | sqlite3 trac.db | 180 | cat trac_ticket.sql | sqlite3 trac.db | ||
| empty | rev 1 | ||||
|---|---|---|---|---|---|
| t | t | 1 | Trac Upgrade and Migration | ||
| 2 | ############################# | ||||
| 3 | |||||
| 4 | We need to perform the following tasks: | ||||
| 5 | |||||
| 6 | * Upgrade from Trac==0.12.2 to Trac==1.0.1 | ||||
| 7 | * Migrate Trac project to a new host | ||||
| 8 | * Migrate tickets from old Trac project to new Trac project | ||||
| 9 | |||||
| 10 | |||||
| 11 | Possible solutions to migrate tickets from old Trac project to new Trac project: | ||||
| 12 | |||||
| 13 | * Manual ticket migration | ||||
| 14 | |||||
| 15 | - allows for intelligent migration of tickets | ||||
| 16 | - allows for important ticket proceedures to be properly documented in sphinx | ||||
| 17 | - time consuming | ||||
| 18 | |||||
| 19 | * Export old, import new | ||||
| 20 | |||||
| 21 | - moves ALL data to new project (even garbage) | ||||
| 22 | - ticket numbers persist | ||||
| 23 | - NOT time consuming | ||||
| 24 | |||||
| 25 | * Research and develop a 'clone to new system' plugin | ||||
| 26 | |||||
| 27 | - allows for intelligent migration of tickets | ||||
| 28 | - allows for important tasks to be documented in Ops Handbook | ||||
| 29 | - time consuming (plugin development + manual migration) | ||||
| 30 | |||||
| 31 | * Put old Trac into read-only, leave it running till it dies? | ||||
| 32 | |||||
| 33 | - manual migration of open tickets | ||||
| 34 | - simply as: chmod 000 pass_file | ||||
| 35 | - operation headache, confusing to have two tracs | ||||
| 36 | |||||
| 37 | |||||
| 38 | setup development env from hot-copy of prod | ||||
| 39 | =============================================== | ||||
| 40 | |||||
| 41 | #. create hot-copy of trac:: | ||||
| 42 | |||||
| 43 | trac-admin /path/to/projenv hotcopy /path/to/backupdir | ||||
| 44 | |||||
| 45 | #. create a tar archive of hot backup:: | ||||
| 46 | |||||
| 47 | tar -czvf trac-2013-07-2.tar.gz /cars/archive/trac-hot-copy-backup | ||||
| 48 | |||||
| 49 | #. on your workstation scp tar archive from grail:: | ||||
| 50 | |||||
| 51 | cd ~ | ||||
| 52 | mkdir trac | ||||
| 53 | cd trac | ||||
| 54 | scp grail:/cars/archive/trac-2013-07-2.tar.gz . | ||||
| 55 | |||||
| 56 | #. unarchive:: | ||||
| 57 | |||||
| 58 | tar xzvf trac-2013-07-2.tar.gz | ||||
| 59 | |||||
| 60 | #. create virtualenv:: | ||||
| 61 | |||||
| 62 | cd trac-hot-copy-backup | ||||
| 63 | virtualenv .env | ||||
| 64 | source .env/bin/activate | ||||
| 65 | |||||
| 66 | #. install Genshi==0.6 because Trac==0.12.2 breaks with Genshi==0.7:: | ||||
| 67 | |||||
| 68 | pip install Genshi==0.6 | ||||
| 69 | |||||
| 70 | #. install Trac==0.12.2:: | ||||
| 71 | |||||
| 72 | pip install Trac==0.12.2 | ||||
| 73 | |||||
| 74 | #. test setup:: | ||||
| 75 | |||||
| 76 | tracd --port=8800 --env-parent-dir ~/trac/ | ||||
| 77 | |||||
| 78 | #. open browser to http://127.0.0.1:8800 | ||||
| 79 | |||||
| 80 | upgrade from Trac==0.12.2 to Trac==1.0.0 | ||||
| 81 | =============================================== | ||||
| 82 | |||||
| 83 | #. bring hot-copy tracd server offline | ||||
| 84 | |||||
| 85 | #. Update the Trac Code to Trac==1.0:: | ||||
| 86 | |||||
| 87 | # optional, but these directories are no longer used | ||||
| 88 | #rm -rf ~/trac/trac-hot-copy-backup/htdocs/ ~/trac/trac-hot-copy-backup/temp | ||||
| > | lates/ | ||||
| 89 | pip install Trac==1.0 | ||||
| 90 | |||||
| 91 | #. Upgrade the Trac environment:: | ||||
| 92 | |||||
| 93 | trac-admin ~/trac/trac-hot-copy-backup upgrade | ||||
| 94 | trac-admin ~/trac/trac-hot-copy-backup wiki upgrade | ||||
| 95 | |||||
| 96 | #. test setup:: | ||||
| 97 | |||||
| 98 | tracd --port=8800 --env-parent-dir ~/trac/ | ||||
| 99 | |||||
| 100 | upgrade again from Trac==1.0.0 to Trac==1.0.1 | ||||
| 101 | =============================================== | ||||
| 102 | |||||
| 103 | #. bring hot-copy tracd server offline | ||||
| 104 | |||||
| 105 | #. Update the Trac Code to Trac==1.0.1:: | ||||
| 106 | |||||
| 107 | # optional, but these directories are no longer used | ||||
| 108 | #rm -rf ~/trac/trac-hot-copy-backup/htdocs/ ~/trac/trac-hot-copy-backup/temp | ||||
| > | lates/ | ||||
| 109 | pip install Trac==1.0.1 | ||||
| 110 | |||||
| 111 | #. Upgrade the Trac environment:: | ||||
| 112 | |||||
| 113 | trac-admin ~/trac/trac-hot-copy-backup upgrade | ||||
| 114 | trac-admin ~/trac/trac-hot-copy-backup wiki upgrade | ||||
| 115 | |||||
| 116 | #. test setup:: | ||||
| 117 | |||||
| 118 | tracd --port=8800 --env-parent-dir ~/trac/ | ||||
| 119 | |||||
| 120 | dump ticket tables from hot-copy | ||||
| 121 | ------------------------------------------------ | ||||
| 122 | |||||
| 123 | #. move to db directory:: | ||||
| 124 | |||||
| 125 | cd ~/trac/trac-hot-copy-backup/db | ||||
| 126 | |||||
| 127 | #. dump each table related to tickets:: | ||||
| 128 | |||||
| 129 | sqlite3 trac.db ".dump ticket" > trac_ticket.sql | ||||
| 130 | sqlite3 trac.db ".dump ticket_change" > trac_ticket_change.sql | ||||
| 131 | sqlite3 trac.db ".dump ticket_custom" > trac_ticket_custom.sql | ||||
| 132 | sqlite3 trac.db ".dump ticket_template_store" > trac_ticket_template_store.s | ||||
| > | ql | ||||
| 133 | sqlite3 trac.db ".dump attachment" > trac_attachment.sql | ||||
| 134 | |||||
| 135 | #. copy \*.sql to the new trac project db directory | ||||
| 136 | |||||
| 137 | #. become trac user:: | ||||
| 138 | |||||
| 139 | sudo su - trac | ||||
| 140 | bash | ||||
| 141 | |||||
| 142 | #. import the tables:: | ||||
| 143 | |||||
| 144 | cat trac_ticket.sql | sqlite3 trac.db | ||||
| 145 | cat trac_ticket_change.sql | sqlite3 trac.db | ||||
| 146 | cat trac_ticket_custom.sql | sqlite3 trac.db | ||||
| 147 | cat trac_ticket_template_store.sql | sqlite3 trac.db | ||||
| 148 | cat trac_attachment.sql | sqlite3 trac.db | ||||
| 149 | |||||
Remarkbox