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)