TracLightning を動かしているサーバーが
なので、新しいサーバーに移行することになった。
当然、Subversion の履歴や Trac のチケットも移行しないといけない。手作業で trac-admin や svnadmin をたたくなんてやってられないので、Ruby で Trac のデータをエクスポートするスクリプトを書いてみた。
# coding: utf-8 require "fileutils" TRAC_HOME = "E:¥TracLight" TRAC_ADMIN = File.join(TRAC_HOME, "bin", "trac-admin.bat") TRAC_SRC_DIR = File.join(TRAC_HOME, "projects", "trac") SVN_SRC_DIR = File.join(TRAC_HOME, "projects", "svn") EXPORT_HOME = "F:¥TracMigration" TRAC_DEST_DIR = File.join(EXPORT_HOME, "trac") SVN_DEST_DIR = File.join(EXPORT_HOME, "svn") # エクスポート先のディレクトリを作り直す if Dir.exist?(EXPORT_HOME) puts "#{EXPORT_HOME} を削除" FileUtils.rmtree(EXPORT_HOME) end FileUtils.makedirs(TRAC_DEST_DIR) FileUtils.makedirs(SVN_DEST_DIR) # Trac のデータをコピー Dir.glob(File.join(TRAC_SRC_DIR, "*")).each do |path| name = File.basename(path) dest_dir = File.join(TRAC_DEST_DIR, name) puts "#{path} をコピー" system "trac-admin #{path} hotcopy #{dest_dir}" end # SVN のダンプを出力 Dir.glob(File.join(SVN_SRC_DIR, "*")).each do |path| name = File.basename(path) dest_path = File.join(SVN_DEST_DIR, name + ".dat") puts "#{path} のダンプを出力" system "svnadmin dump #{path} > #{dest_path}" end