aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/plugins/rake_tasks/tasks/svn.rake
diff options
context:
space:
mode:
authorfrancis <francis>2007-10-31 19:48:26 +0000
committerfrancis <francis>2007-10-31 19:48:26 +0000
commit28fb182fa965467b73ad0b9bea506de8050305d3 (patch)
treeada24e870bcbca97addfdd6a065c49a44c091e90 /vendor/plugins/rake_tasks/tasks/svn.rake
parentfd677a19af54b1b10aa21c9cdb908ea9a5a40341 (diff)
Add spec:check as a rake task to show what classes we don't have test for at all. Annoying really that rspec rcov doesn't show this in its report.
Diffstat (limited to 'vendor/plugins/rake_tasks/tasks/svn.rake')
-rw-r--r--vendor/plugins/rake_tasks/tasks/svn.rake59
1 files changed, 59 insertions, 0 deletions
diff --git a/vendor/plugins/rake_tasks/tasks/svn.rake b/vendor/plugins/rake_tasks/tasks/svn.rake
new file mode 100644
index 000000000..5da3cab56
--- /dev/null
+++ b/vendor/plugins/rake_tasks/tasks/svn.rake
@@ -0,0 +1,59 @@
+namespace :svn do
+ desc 'Adds new files to subversion'
+ task :add do
+ `svn status | grep '^\?' | sed -e 's/? *//' | sed -e 's/ /\ /g' | xargs svn add`
+ end
+
+ desc 'Removes missing files from subversion'
+ task :remove do
+ `svn status | grep '^\!' | sed -e 's/! *//' | sed -e 's/ /\ /g' | xargs svn remove`
+ end
+
+ desc 'Deletes unknown files'
+ task :delete do
+ `svn status | grep '^\?' | sed -e 's/? *//' | sed -e 's/ /\ /g' | xargs rm -Rf`
+ end
+
+ desc 'Configures svn:ignore properties on log, tmp, db/schema.rb and config/database.yml'
+ task :ignore => :environment do
+ ignore :log => '*'
+ ignore :tmp => '*'
+ ignore :db => ['schema.rb', '*.sqlite3']
+ ignore :config => 'database.yml'
+ end
+
+ desc 'Resolves all svn conflicts by keeping the working file'
+ task :conflicts do
+ `svn status | grep '^C' | sed -e 's/C *//' | sed -e 's/ /\ /g'`.split("\n").each do |conflict|
+ `mv #{conflict}.working #{conflict}`
+ `rm #{conflict}.merge-*`
+ end
+ end
+end
+
+private
+
+def ignore(files)
+ files.each_pair do |location, pattern|
+ case pattern
+ when Array
+ pattern.each { |p| ignore(location => p) }
+ when String
+ remove_versioned_files(location, pattern)
+ update_ignore_property(location, pattern)
+ end
+ end
+end
+
+def remove_versioned_files(location, pattern)
+ path = File.join(location.to_s, pattern)
+ FileUtils.mv(path, "#{path}.tmp") if File.exists? path
+ `svn remove '#{path}' --force`
+ FileUtils.mv("#{path}.tmp", path) if File.exists? "#{path}.tmp"
+end
+
+def update_ignore_property(location, pattern)
+ ignored_patterns = `svn propget svn:ignore #{location}`.split(/\s/)
+ ignored_patterns << pattern unless ignored_patterns.include? pattern
+ `svn propset svn:ignore '#{ignored_patterns.join("\n")}' #{location}`
+end \ No newline at end of file