rescue DBI::InterfaceError => e
raise BuildServerException.new("ERR950"), e.errstr
rescue => e
- @log.error e.errstr if not @log.nil?
+ @log.error e.message if not @log.nil?
@log.error e.backtrace.inspect if not @log.nil?
end
end
return result
end
+
+ public
+ def self.get_project_rows_in_distribution(db, distribution_name)
+ result = []
+ db.select_all("SELECT projects.name,distributions.name as dist_name,projects.ptype FROM projects,distributions WHERE projects.distribution_id=distributions.id AND distributions.name = '#{distribution_name}'") do |row|
+ result.push row.to_h
+ end
+ return result
+ end
end
@server.log.info "Added a new distribution \"#{target_name}\""
#Get project list
- projects = @server.prjmgr.get_all_projects()
+ projects = @server.prjmgr.get_projects_in_distribution(origin_name)
#Add project
projects.each do |prj|
if prj.type.eql? "GIT" then
@server.prjmgr.add_git_project(prj.name, prj.repository, prj.branch, prj.os_list, target_name)
-
- source = prj.get_latest_source_info(db)
- if not source.nil? then
- new_prj = @server.prjmgr.get_project(prj.name, target_name)
- db.do "INSERT INTO sources(project_id, pkg_ver,location)
- VALUES(#{new_prj.prj_id},'#{source["pkg_ver"]}','#{source["location"]}')"
- end
elsif prj.type.eql? "BINARY" then
@server.prjmgr.add_binary_project(prj.name, prj.pkg_name, prj.os_list, target_name)
end
+
+ # copy source info
+ source_cnt = db.select_one("SELECT count(*) val FROM sources WHERE project_id =#{prj.prj_id}")[0]
+ if( source_cnt > 0 )
+ new_prj = @server.prjmgr.get_project(prj.name, target_name)
+ db.do "INSERT INTO sources(project_id, pkg_ver,location)
+ SELECT #{new_prj.prj_id}, pkg_ver, location FROM sources WHERE project_id = #{prj.prj_id}"
+ end
end
result = true
end
rescue => e
if not @server.log.nil? then
- @server.log.error e.errstr
+ @server.log.error e.message
end
end
return result
#name get_all_project
#return project list
#return [] when DB error occurred
+ def get_projects_in_distribution(distribution_name)
+ result = []
+ begin
+ @server.get_db_connection() do |db|
+ rows = CommonProject.get_project_rows_in_distribution(db, distribution_name)
+ rows.each do |row|
+ if row['ptype'] == "GIT" then
+ prj = GitBuildProject.load(row['name'], row['dist_name'], @server, db)
+ else
+ prj = BinaryUploadProject.load(row['name'], row['dist_name'], @server, db)
+ end
+ if not prj.nil? then result.push prj end
+ end
+ end
+ rescue BuildServerException => e
+ if not @server.log.nil? then
+ @server.log.error e.message
+ end
+ rescue => e
+ if not @server.log.nil? then
+ @server.log.error e.errstr
+ end
+ end
+
+ return result
+ end
+
+
+ #name get_all_project
+ #return project list
+ #return [] when DB error occurred
def get_all_projects()
result = []
begin