加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 如何将版本历史从Serena Dimensions导出到Git?

发布时间:2020-12-17 02:55:31 所属栏目:百科 来源:网络整理
导读:我在Serena Dimensions有一个存储库;我需要将它迁移到 Github.我已经弄清楚我需要使用git-fast-import,但我面临的问题是Serena Dimensions repo的元数据.如何从Serena维度导出元数据? 注意:我已经更新了下面的答案,如果你发现它有用,请选择upvote. 解决方
我在Serena Dimensions有一个存储库;我需要将它迁移到 Github.我已经弄清楚我需要使用git-fast-import,但我面临的问题是Serena Dimensions repo的元数据.如何从Serena维度导出元数据?

注意:我已经更新了下面的答案,如果你发现它有用,请选择upvote.

解决方法

这是ruby脚本

#!/usr/bin/env ruby

$stdout.binmode
$author = ""
$date = ""

require 'spreadsheet'
book = Spreadsheet.open('Metadata.xls')
sheet1 = book.worksheet('Sheet1') # can use an index or worksheet name
sheet1.each 1 do |row|
break if row[2].nil? # if first cell empty
    $author = row[2] + " <email@domain.com>"
break if row[5].nil?
    $date = row[5]
#puts row.join(',') # looks like it calls "to_s" on each cell's Value
end

$marks = []
def convert_dir_to_mark(dir)
if !$marks.include?(dir)
    $marks << dir
end
($marks.index(dir)+1).to_s
end


def convert_dir_to_date(dir)
if dir == 'current'
    return Time.now().to_i
else
    dir = dir.gsub('back_','')
    (year,month,day) = dir.split('_')
    return Time.local(year,day).to_i
end
end

def export_data(string)
print "data #{string.size}n#{string}"
end

def inline_data(file,code='M',mode='644')
content = File.read(file)
puts "#{code} #{mode} inline #{file}"
export_data(content)
end

def print_export(dir,last_mark)
date = convert_dir_to_date(dir)
mark = convert_dir_to_mark(dir)

puts 'commit refs/heads/master'
puts "mark :#{mark}"
puts "committer #{ $author } #{ date } -0700"
export_data("imported from #{dir}")
puts "from :#{last_mark}" if last_mark

puts 'deleteall'
Dir.glob("**/*").each do |file|
    next if !File.file?(file)
    inline_data(file)
end
mark
end


# Loop through the directories
last_mark = nil
Dir.chdir(ARGV[0]) do
Dir.glob("*").each do |dir|
    next if File.file?(dir)

    # move into the target directory
    Dir.chdir(dir) do
        last_mark = print_export(dir,last_mark)
    end
end
end

我将Dimensions元数据导出到名为“Metadata.xls”的电子表格中.然后从中读取数据并通过运行脚本导入Git.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读