diff --git a/fetch-manifest.rb b/fetch-manifest.rb index 123174c2d..b80aa30f2 100755 --- a/fetch-manifest.rb +++ b/fetch-manifest.rb @@ -18,15 +18,18 @@ root = REXML::Document.new(File.new(path)).root default = root.get_elements("//default")[0] -remotes = {} +remotes_arr = [] +remotes = {} root.each_element("//remote") do |remote| + remotes_arr << remote.attributes['name'] remotes[remote.attributes['name']] = remote end +projects_arr = [] projects = {} - root.each_element("//project") do |project| + projects_arr << project.attributes['name'] projects[project.attributes['name']] = project end @@ -36,16 +39,23 @@ if more more_root = REXML::Document.new(File.new(more)).root more_root.each_element("//remote") do |remote| + unless remotes[remote.attributes['name']] + remotes_arr << remote.attributes['name'] + end remotes[remote.attributes['name']] = remote end more_root.each_element("//project") do |project| + unless projects[project.attributes['name']] + projects_arr << project.attributes['name'] + end projects[project.attributes['name']] = project end end changes = {} -projects.each do |name, project| +projects_arr.each do |name| + project = projects[name] path = project.attributes['path'] || project.attributes['name'] remote = remotes[project.attributes['remote'] || default.attributes['remote']] fetch = remote.attributes['fetch'] @@ -121,14 +131,14 @@ File.open(oxml, 'w') do |o| o.write "\n" o.write "\n" - remotes.keys.sort.each do |name| + remotes_arr.each do |name| remote = remotes[name] o.write " \n" end o.write "\n" o.write " \n" o.write "\n" - projects.keys.sort.each do |name| + projects_arr.each do |name| project = projects[name] remote = project.attributes['remote'] path = project.attributes['path'] || project.attributes['name']