diff --git a/bin/ScriptCommands.rb b/bin/ScriptCommands.rb index 213fa3d..6244255 100644 --- a/bin/ScriptCommands.rb +++ b/bin/ScriptCommands.rb @@ -20,7 +20,7 @@ def has_any_build_flag(*flag) def set_database_name(database_name) database_name = database_name.to_s database_name = database_name.gsub('#', Utility.get_svn_head_revision) if database_name.include?('#') && $vcs == :svn - database_name = database_name.gsub('#', Utility.get_git_hash) if database_name.include?('#') && $vcs == :git + database_name = database_name.gsub('#', Utility.get_git_hash($product_sql_path)) if database_name.include?('#') && $vcs == :git $database_name = database_name $logger.writeln "Database name = #{$database_name}" end @@ -41,7 +41,7 @@ def default_database_name(database_name) def set_version(version) version = version.to_s version = version.gsub('#', Utility.get_svn_head_revision) if version.include?('#') && $vcs == :svn - version = version.gsub('#', Utility.get_git_hash) if version.include?('#') && $vcs == :git + version = version.gsub('#', Utility.get_git_hash($product_sql_path)) if version.include?('#') && $vcs == :git $version = version $logger.writeln "Version = #{$version}" set_database_name($database_name_prefix + '-' + $product.to_s + '-' + $version) if $database_name.nil? @@ -120,6 +120,11 @@ def create_database(*params) end end + def check_uncommited_code(repo) + $logger.writeln "Checking for uncommitted code in repo #{repo}..." + Utility.get_git_status(repo) + end + def clear_log $logger.clear end @@ -439,7 +444,7 @@ def add_build_constants(schema = 'system') add_constant 'CURRENT_DATABASE_NAME', get_database_name(), schema add_constant 'CURRENT_DATABASE_VERSION', get_version(), schema unless $version.nil? add_constant 'CURRENT_DATABASE_PRODUCT', $product.to_s, schema unless $product.nil? - add_constant 'CURRENT_GIT_REVISION', Utility.get_git_hash, schema if !$vcs.nil? && $vcs == :git + add_constant 'CURRENT_GIT_REVISION', Utility.get_git_hash($product_sql_path), schema if !$vcs.nil? && $vcs == :git add_constant 'CURRENT_SVN_REVISION', Utility.get_svn_head_revision, schema if !$vcs.nil? && $vcs == :svn add_constant 'CURRENT_DATABASE_BUILD_DATE', Time.now.strftime('%d-%m-%Y %H:%M:%S'), schema add_constant 'CURRENT_DATABASE_BUILD_USER', Etc.getlogin, schema rescue nil diff --git a/bin/Utility.rb b/bin/Utility.rb index 19fa959..2f289fe 100644 --- a/bin/Utility.rb +++ b/bin/Utility.rb @@ -80,12 +80,34 @@ def self.get_last_cmd_output(lines) return lines.last(lastnum).join("") end - def self.get_git_hash + def self.get_git_status(gitpath) raise 'Git bin path not set ($git_bin_path)' if $git_bin_path.nil? raise "Git bin path not found ($git_bin_path = \"#{$git_bin_path}\")" unless ((File.exist?($git_bin_path) && File.directory?($git_bin_path)) || ($git_bin_path.empty?)) curr_dir = Dir.pwd - Dir.chdir($product_sql_path) + Dir.chdir(gitpath) + cmd = "\"#{$git_bin_path}git\" status -s" + socket = IO.popen(cmd) + begin + line = socket.gets + if line != nil + raise "Uncommitted code detected!: #{line}" + return line + else return + end + ensure + socket.close + Dir.chdir(curr_dir) + end + raise "Could not read GIT status with command: #{cmd}" + end + + def self.get_git_hash(gitpath) + raise 'Git bin path not set ($git_bin_path)' if $git_bin_path.nil? + raise "Git bin path not found ($git_bin_path = \"#{$git_bin_path}\")" unless ((File.exist?($git_bin_path) && File.directory?($git_bin_path)) || ($git_bin_path.empty?)) + + curr_dir = Dir.pwd + Dir.chdir(gitpath) cmd = "\"#{$git_bin_path}git\" log -1 --pretty=format:%h" socket = IO.popen(cmd) begin