Project

General

Profile

Patch #2050 ยป migration.patch

Summarized patch - Karl Heinz Marbaise, 2008-10-19 10:58

View differences:

migrate_from_trac.rake (working copy)
90 90
  
91 91
      class TracMilestone < ActiveRecord::Base
92 92
        set_table_name :milestone
93
        
93
        # If this attribute is set a milestone has a defined target timepoint        
94 94
        def due
95 95
          if read_attribute(:due) && read_attribute(:due) > 0
96 96
            Time.at(read_attribute(:due)).to_date
......
98 98
            nil
99 99
          end
100 100
        end
101
        # This is the real timepoint at which the milestone has finished.
102
        def completed
103
          if read_attribute(:completed) && read_attribute(:completed) > 0
104
            Time.at(read_attribute(:completed)).to_date
105
          else
106
            nil
107
          end
108
        end
101 109

  
102 110
        def description
103 111
          # Attribute is named descr in Trac v0.8.x
......
284 292
            s
285 293
          end
286 294
        end
287
        # Preformatted blocks
288
        text = text.gsub(/\{\{\{/, '<pre>')
289
        text = text.gsub(/\}\}\}/, '</pre>')          
295
        # We would like to convert the Code highlighting too
296
        # This will go into the next line.
297
        shebang_line = false
298
        # Reguar expression for start of code
299
        pre_re = /\{\{\{/
300
        # Code hightlighing...
301
        shebang_re = /^\#\!([a-z]+)/
302
        # Regular expression for end of code
303
        pre_end_re = /\}\}\}/
304
        
305
        # Go through the whole text..extract it line by line
306
        text = text.gsub(/^(.*)$/) do |line|
307
          m_pre = pre_re.match(line)
308
          if m_pre
309
            line = '<pre>'
310
          else
311
            m_sl = shebang_re.match(line)
312
            if m_sl
313
              shebang_line = true
314
              line = '<code class="' + m_sl[1] + '">'
315
            end
316
            m_pre_end = pre_end_re.match(line)
317
            if m_pre_end
318
              line = '</pre>'
319
              if shebang_line
320
                line = '</code>' + line
321
              end
322
            end
323
          end
324
          line        
325
        end
326

  
290 327
        # Highlighting
291 328
        text = text.gsub(/'''''([^\s])/, '_*\1')
292 329
        text = text.gsub(/([^\s])'''''/, '\1*_')
......
315 352
        migrated_ticket_attachments = 0
316 353
        migrated_wiki_edits = 0      
317 354
        migrated_wiki_attachments = 0
355

  
356
        #Wiki system initializing...
357
        @target_project.wiki.destroy if @target_project.wiki
358
        @target_project.reload
359
        wiki = Wiki.new(:project => @target_project, :start_page => 'WikiStart')
360
        wiki_edit_count = 0
318 361
  
319 362
        # Components
320 363
        print "Migrating components"
......
336 379
        TracMilestone.find(:all).each do |milestone|
337 380
          print '.'
338 381
          STDOUT.flush
382
          # First we try to find the wiki page...
383
          p = wiki.find_or_new_page(milestone.name.to_s)
384
          p.content = WikiContent.new(:page => p) if p.new_record?
385
          p.content.text = milestone.description.to_s
386
          p.content.author = find_or_create_user('trac')
387
          p.content.comments = 'Milestone'
388
          p.save
389

  
339 390
          v = Version.new :project => @target_project,
340 391
                          :name => encode(milestone.name[0, limit_for(Version, 'name')]),
341
                          :description => encode(milestone.description.to_s[0, limit_for(Version, 'description')]),
342
                          :effective_date => milestone.due
392
                          :description => nil,
393
                          :wiki_page_title => milestone.name.to_s,
394
                          :effective_date => milestone.completed
395

  
343 396
          next unless v.save
344 397
          version_map[milestone.name] = v
345 398
          migrated_milestones += 1
......
462 515
        
463 516
        # Wiki      
464 517
        print "Migrating wiki"
465
        @target_project.wiki.destroy if @target_project.wiki
466
        @target_project.reload
467
        wiki = Wiki.new(:project => @target_project, :start_page => 'WikiStart')
468
        wiki_edit_count = 0
469 518
        if wiki.save
470 519
          TracWikiPage.find(:all, :order => 'name, version').each do |page|
471 520
            # Do not migrate Trac manual wiki pages
......
678 727
    TracMigrate.migrate
679 728
  end
680 729
end
730

  
    (1-1/1)