diff options
author | francis <francis> | 2007-10-31 19:48:26 +0000 |
---|---|---|
committer | francis <francis> | 2007-10-31 19:48:26 +0000 |
commit | 28fb182fa965467b73ad0b9bea506de8050305d3 (patch) | |
tree | ada24e870bcbca97addfdd6a065c49a44c091e90 /vendor/plugins/rake_tasks/tasks/svn.rake | |
parent | fd677a19af54b1b10aa21c9cdb908ea9a5a40341 (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.rake | 59 |
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 |