Как экспортировать историю версий из Serena Dimensions в Git?
У меня есть хранилище в Serena Dimensions; Мне нужно перенести его на Github. Я понял, что мне нужно использовать git-fast-import, но проблема, с которой я сталкиваюсь, связана с метаданными репозитория Serena Dimensions. Как экспортировать метаданные из измерений Серены?
Примечание: я обновил ответ ниже, пожалуйста, проголосуйте, если он окажется полезным.
2 ответа
Вот сценарий рубин
#!/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, month, 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, запустив скрипт.
Есть и другой способ сделать это - использовать Git SVN и CM SVN Bridge. При таком подходе вы сможете использовать git-клиент для доступа к серверу Dimensions.
Проверьте эту ссылку для деталей: CM 14.2 Новая функция: Использование Git Client для доступа к серверу CM
Также эта ветка на форуме Серены может быть полезна: Migrate Dimension repo to git
Обновить
В 14.3.3 появилась новая функция, которая позволяет сделать это намного проще.
- Размеры CM Git Connector Руководство по началу работы
- Размеры CM Git Connector Руководство пользователя