lib/core/plugin/project.rb in nucleon-0.1.11 vs lib/core/plugin/project.rb in nucleon-0.1.12

- old
+ new

@@ -1,10 +1,14 @@ module Nucleon module Plugin class Project < Base + @@ignore_lock = Mutex.new + + #--- + @@projects = {} #--- def self.collection @@ -47,15 +51,10 @@ myself.plugin_name = path if ! plugin_name || plugin_name == plugin_provider ui.resource = plugin_name logger = plugin_name - unless reload - @cache = Util::Cache.new(directory, Nucleon.sha1(plugin_name), '.project_cache') - init_cache - end - if keys = delete(:keys, nil) set(:private_key, keys[:private_key]) set(:public_key, keys[:public_key]) end @@ -63,10 +62,15 @@ init_project extension(:init) pull if get(:pull, false) + + unless reload + @cache = Util::Cache.new(directory, Nucleon.sha1(plugin_name), '.project_cache') + init_cache + end end #--- def init_project @@ -89,11 +93,11 @@ end end #----------------------------------------------------------------------------- # Checks - + def can_persist? return top?(directory) if directory false end @@ -116,10 +120,20 @@ path = File.expand_path(path) return true if File.directory?(path) && (! require_top_level || top?(path)) false end protected :project_directory? + + #--- + + def manage_ignore=ignore + set(:manage_ignore, ignore) + end + + def manage_ignore? + get(:manage_ignore, false) + end #----------------------------------------------------------------------------- # Property accessor / modifiers def cache @@ -367,16 +381,22 @@ #--- def load_revision if can_persist? localize do - logger.info("Loading project #{name} revision") - + logger.info("Loading project #{plugin_name} revision") + + specified_revision = get(:revision, nil) + current_revision = revision.to_s current_revision = yield if block_given? - - if current_revision && extended_revision = extension_set(:load_revision, current_revision).to_s.strip + + if current_revision && extended_revision = extension_set(:load_revision, specified_revision).to_s.strip + if extended_revision.empty? + extended_revision = current_revision + end + set(:revision, extended_revision) checkout(extended_revision) if current_revision != extended_revision logger.debug("Loaded revision: #{revision}") @@ -443,11 +463,11 @@ load_revision extension(:commit_success, { :files => files }) if ! parent.nil? && config.get(:propogate, true) - logger.debug("Commit to parent as parent exists and propogate option given") + logger.info("Commit to parent as parent exists and propogate option given") parent.load_revision parent.commit(directory, config.import({ :message => "Updating #{path}: #{message}" })) @@ -462,14 +482,17 @@ end #--- def ignore(files) - return unless directory - files = nil - files = yield if block_given? - commit(files, { :message => "Adding project ignores." }) if files + return unless directory && manage_ignore? + + @@ignore_lock.synchronize do + files = nil + files = yield if block_given? + commit(files, { :message => "Adding project ignores." }) if files + end end #----------------------------------------------------------------------------- # Subproject operations @@ -757,10 +780,9 @@ logger.info("Pulling from #{remote} into #{directory}") success = yield(config, remote) if block_given? end if success - load_revision update_subprojects extension(:pull_success, { :directory => directory, :remote => remote, :config => config }) if ! parent.nil? && config.get(:propogate, true)