I have a repository in Serena Dimensions; I need to migrate it to Github. I have figured it out that I need to use git-fast-import, but the issue I am facing is with the metadata of Serena Dimensions repo. How to export the metadata from Serena dimensions?
2 Answers
Here's the ruby Script
#!/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 protected]>"
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
I exported my Dimensions metadata into a spreadsheet named 'Metadata.xls'. Then read the data from it and imported into Git by running the script.
-
Did you succeed with this migration without issues? Any lesson learnt from it worth to share? Thanks Commented Jan 11, 2016 at 22:15
-
Yeah, I succeeded in the migration of the repository. Make sure you get the information about the previous authors and dates of commit correctly, otherwise you will need to carry out the migration multiple times.– tRuEsAtMCommented Feb 11, 2016 at 0:23
-
Hi @sameer do you have it still somewhere in history (examples) to share? I believe it will take some time to dive in to both dimensions and git-fast import to get there, hehe :) did you manage to save the history of commits and branches? Thank you in advance. Commented Jan 27, 2017 at 17:43
-
@IliaShakitko The example code is way too long, so posting it as an answer. If it helps, please upvote the question and the mark the answer as the correct one.– tRuEsAtMCommented Jan 28, 2017 at 22:29
-
@Sameer, how were you able to generate the Metadata.xls? I have the Dimensions Client but have been unable to figure out how to export the data.– BPaaschCommented May 16, 2017 at 16:24
There is also another way to do this - using Git SVN and CM SVN Bridge.
With such approach you should be able to use git client to access Dimensions server.
Check this link for details:
CM 14.2 New feature: Using a Git Client to access a CM server
Also this thread on Serena forum may be useful:
Migrate Dimension repo to git
Update
There is new feature in 14.3.3 which allows to do it much simpler.
- Dimensions CM Git Connector Getting Started Tutorial
- Dimensions CM Git Connector User's Guide
-
1Unfortunately that link to CM 14.2 New feature doesn't work (anymore)– JuergenCommented Aug 17, 2017 at 13:53
-
Yes, looks like that page disappeared. But since then new possibilities emerged, for example Dimensions CM Git Connector could be used for that purposes. serenacentral.com/blogs/entry/… help.serena.com/doc_center/cm/ver1433/…– ChupikCommented Aug 17, 2017 at 15:00