chicken_soup 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/.rspec +1 -0
- data/.rvmrc +1 -0
- data/chicken_soup.gemspec +3 -1
- data/lib/chicken_soup/capabilities.rb +21 -6
- data/lib/chicken_soup/capabilities/apache/apache-checks.rb +19 -0
- data/lib/chicken_soup/capabilities/apache/apache-defaults.rb +30 -0
- data/lib/chicken_soup/capabilities/apache/apache-tasks.rb +85 -0
- data/lib/chicken_soup/capabilities/bundler/bundler-checks.rb +19 -0
- data/lib/chicken_soup/capabilities/bundler/bundler-defaults.rb +14 -0
- data/lib/chicken_soup/capabilities/bundler/bundler-tasks.rb +35 -0
- data/lib/chicken_soup/capabilities/checks.rb +1 -1
- data/lib/chicken_soup/capabilities/defaults.rb +22 -5
- data/lib/chicken_soup/capabilities/{git.rb → git/git-defaults.rb} +2 -13
- data/lib/chicken_soup/capabilities/heroku/heroku-checks.rb +22 -0
- data/lib/chicken_soup/capabilities/heroku/heroku-defaults.rb +16 -0
- data/lib/chicken_soup/capabilities/{heroku.rb → heroku/heroku-tasks.rb} +5 -45
- data/lib/chicken_soup/capabilities/{mysql.rb → mysql/mysql-tasks.rb} +0 -0
- data/lib/chicken_soup/capabilities/nginx/nginx-checks.rb +19 -0
- data/lib/chicken_soup/capabilities/nginx/nginx-defaults.rb +21 -0
- data/lib/chicken_soup/capabilities/nginx/nginx-tasks.rb +85 -0
- data/lib/chicken_soup/capabilities/{passenger.rb → passenger/passenger-tasks.rb} +1 -1
- data/lib/chicken_soup/capabilities/postgres/postgres-checks.rb +17 -0
- data/lib/chicken_soup/capabilities/postgres/postgres-defaults.rb +15 -0
- data/lib/chicken_soup/capabilities/{postgres.rb → postgres/postgres-tasks.rb} +1 -1
- data/lib/chicken_soup/capabilities/rvm/rvm-checks.rb +21 -0
- data/lib/chicken_soup/capabilities/rvm/rvm-defaults.rb +13 -0
- data/lib/chicken_soup/capabilities/rvm/rvm-tasks.rb +6 -0
- data/lib/chicken_soup/capabilities/shared/db-checks.rb +19 -0
- data/lib/chicken_soup/capabilities/shared/db-defaults.rb +13 -0
- data/lib/chicken_soup/capabilities/shared/{db.rb → db-tasks.rb} +24 -11
- data/lib/chicken_soup/capabilities/shared/web_server-tasks.rb +99 -0
- data/lib/chicken_soup/capabilities/{svn.rb → svn/svn-defaults.rb} +0 -13
- data/lib/chicken_soup/capabilities/svn/svn-tasks.rb +12 -0
- data/lib/chicken_soup/capabilities/tasks.rb +12 -0
- data/lib/chicken_soup/capabilities/unix/unix-checks.rb +33 -0
- data/lib/chicken_soup/capabilities/unix/unix-defaults.rb +42 -0
- data/lib/chicken_soup/capabilities/{unix.rb → unix/unix-tasks.rb} +4 -83
- data/lib/chicken_soup/deploy.rb +0 -5
- data/lib/chicken_soup/environment.rb +10 -0
- data/lib/chicken_soup/environment/checks.rb +17 -2
- data/lib/chicken_soup/environment/defaults.rb +25 -3
- data/lib/chicken_soup/environment/tasks.rb +12 -0
- data/lib/chicken_soup/global.rb +77 -2
- data/lib/chicken_soup/notifiers.rb +7 -4
- data/lib/chicken_soup/notifiers/checks.rb +1 -1
- data/lib/chicken_soup/notifiers/defaults.rb +1 -2
- data/lib/chicken_soup/notifiers/email/email-checks.rb +26 -0
- data/lib/chicken_soup/notifiers/email/email-defaults.rb +50 -0
- data/lib/chicken_soup/notifiers/email/email-tasks.rb +37 -0
- data/lib/chicken_soup/notifiers/email/presenter.rb +56 -0
- data/lib/chicken_soup/notifiers/{git.rb → git/git-tasks.rb} +0 -0
- data/lib/chicken_soup/notifiers/{hoptoad.rb → hoptoad/hoptoad-tasks.rb} +0 -0
- data/lib/chicken_soup/notifiers/tasks.rb +12 -0
- data/lib/chicken_soup/templates/client_email.html.erb +21 -0
- data/lib/chicken_soup/templates/internal_email.html.erb +19 -0
- data/lib/chicken_soup/version.rb +1 -1
- data/lib/chicken_stock.rb +3 -3
- data/spec/support/focused.rb +10 -0
- metadata +91 -35
- data/lib/chicken_soup/capabilities/apache.rb +0 -235
- data/lib/chicken_soup/capabilities/bundler.rb +0 -68
- data/lib/chicken_soup/capabilities/rvm.rb +0 -42
- data/lib/chicken_soup/notifiers/email.rb +0 -109
File without changes
|
@@ -0,0 +1,19 @@
|
|
1
|
+
######################################################################
|
2
|
+
# NGINX CHECKS #
|
3
|
+
######################################################################
|
4
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
5
|
+
namespace :capabilities do
|
6
|
+
namespace :check do
|
7
|
+
desc <<-DESC
|
8
|
+
[internal] Checks to see if all necessary Nginx capabilities variables have been set up.
|
9
|
+
DESC
|
10
|
+
task :nginx do
|
11
|
+
required_variables = [
|
12
|
+
:web_server_control_script
|
13
|
+
]
|
14
|
+
|
15
|
+
verify_variables(required_variables)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
######################################################################
|
2
|
+
# NGINX DEFAULTS #
|
3
|
+
######################################################################
|
4
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
5
|
+
namespace :capabilities do
|
6
|
+
namespace :defaults do
|
7
|
+
desc "[internal] Checks to see what type of Nginx installation is running on the remote."
|
8
|
+
task :nginx do
|
9
|
+
find_web_server_control_script
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def find_web_server_control_script
|
16
|
+
if remote_file_exists?("/etc/init.d/nginx")
|
17
|
+
set :web_server_control_script, "/etc/init.d/nginx"
|
18
|
+
end
|
19
|
+
|
20
|
+
abort "Couldn't figure out how to control your installation of Nginx" unless exists?(:web_server_control_script)
|
21
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
######################################################################
|
2
|
+
# NGINX TASKS #
|
3
|
+
######################################################################
|
4
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
5
|
+
require 'chicken_soup/capabilities/shared/web_server-tasks'
|
6
|
+
|
7
|
+
namespace :website do
|
8
|
+
desc "Creates the site configuration for the files."
|
9
|
+
task :create do
|
10
|
+
abort "Sorry, auto-installing sites is not supported on your installation of Nginx." unless exists?(:nginx_disable_script)
|
11
|
+
|
12
|
+
passenger_friendly_error_messages = rails_env == :production ? "off" : "on"
|
13
|
+
|
14
|
+
virtual_host_config = <<-VHOST
|
15
|
+
server {
|
16
|
+
listen #{web_server_ip}:443;
|
17
|
+
server_name #{deploy_site_name} *.#{deploy_site_name};
|
18
|
+
|
19
|
+
passenger_enabled on;
|
20
|
+
passenger_friendly_error_pages #{passenger_friendly_error_pages};
|
21
|
+
passenger_min_instances 4;
|
22
|
+
|
23
|
+
rails_env #{rails_env};
|
24
|
+
rack_env #{rails_env};
|
25
|
+
|
26
|
+
ssl on;
|
27
|
+
ssl_certificate /etc/nginx/ssl/#{domain}.crt;
|
28
|
+
ssl_certificate_key /etc/nginx/ssl/#{domain}.key;
|
29
|
+
|
30
|
+
ssl_session_timeout 5m;
|
31
|
+
|
32
|
+
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
|
33
|
+
ssl_prefer_server_ciphers on;
|
34
|
+
|
35
|
+
root #{deploy_to}/current/public;
|
36
|
+
|
37
|
+
client_max_body_size 3M;
|
38
|
+
|
39
|
+
access_log /var/log/nginx/#{application}.access.log main;
|
40
|
+
error_log /var/log/nginx/#{application}.error.log warn;
|
41
|
+
|
42
|
+
error_page 500 501 504 505 506 507 508 509 /500.html;
|
43
|
+
error_page 400 401 403 404 405 406 407 409 410 413 415 416 417 /404.html;
|
44
|
+
error_page 422 444 /422.html;
|
45
|
+
error_page 502 503 /public/maintenance.html;
|
46
|
+
|
47
|
+
location / {
|
48
|
+
try_files /system/maintenance.html $request_uri;
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
server {
|
53
|
+
listen #{web_server_ip}:80;
|
54
|
+
server_name #{deploy_site_name} *.#{deploy_site_name};
|
55
|
+
|
56
|
+
location / {
|
57
|
+
rewrite ^ https://$http_host$request_uri? permanent
|
58
|
+
}
|
59
|
+
}
|
60
|
+
VHOST
|
61
|
+
|
62
|
+
put virtual_host_config, "#{user_home}/#{deploy_site_name}"
|
63
|
+
run "#{sudo} mv #{user_home}/#{deploy_site_name} /etc/nginx/sites-available"
|
64
|
+
web_server.reload
|
65
|
+
end
|
66
|
+
|
67
|
+
desc "Completely removes the site configuration from the server (but leaves the files.)"
|
68
|
+
task :remove do
|
69
|
+
abort "Sorry, auto-removing sites is not supported on your installation of Nginx." unless exists?(:nginx_disable_script)
|
70
|
+
|
71
|
+
run "#{sudo} rm /etc/nginx/sites-available/#{deploy_site_name}"
|
72
|
+
web_server.reload
|
73
|
+
end
|
74
|
+
|
75
|
+
desc "Enable Site"
|
76
|
+
task :enable do
|
77
|
+
abort "Sorry, auto-enabling sites is not supported on your installation of Nginx." unless exists?(:nginx_enable_script)
|
78
|
+
end
|
79
|
+
|
80
|
+
desc "Disable Site"
|
81
|
+
task :disable do
|
82
|
+
abort "Sorry, auto-disabling sites is not supported on your installation of Nginx." unless exists?(:nginx_disable_script)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -25,7 +25,7 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
25
25
|
changes, Passenger restarts the app.
|
26
26
|
DESC
|
27
27
|
task :restart, :except => { :no_release => true } do
|
28
|
-
run "touch #{File.join(current_path,'tmp','restart.txt')}"
|
28
|
+
run "touch #{File.join( current_path, 'tmp', 'restart.txt' )}"
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
######################################################################
|
2
|
+
# POSTGRES CHECKS #
|
3
|
+
######################################################################
|
4
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
5
|
+
require 'chicken_soup/capabilities/shared/db-checks'
|
6
|
+
|
7
|
+
namespace :capabilities do
|
8
|
+
namespace :check do
|
9
|
+
desc <<-DESC
|
10
|
+
[internal] Checks to see if all necessary Postgres capabilities variables have been set up.
|
11
|
+
DESC
|
12
|
+
task :postgres do
|
13
|
+
capabilities.check.db
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
######################################################################
|
2
|
+
# POSTGRES DEFAULTS #
|
3
|
+
######################################################################
|
4
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
5
|
+
require 'chicken_soup/capabilities/shared/db-defaults'
|
6
|
+
|
7
|
+
namespace :capabilities do
|
8
|
+
namespace :defaults do
|
9
|
+
desc "[internal] Sets intelligent defaults for Postgres deployments."
|
10
|
+
task :postgres do
|
11
|
+
capabilities.defaults.db
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
######################################################################
|
2
|
+
# RVM CHECKS #
|
3
|
+
######################################################################
|
4
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
5
|
+
namespace :capabilities do
|
6
|
+
namespace :check do
|
7
|
+
desc <<-DESC
|
8
|
+
[internal] Checks to see if all necessary RVM variables have been set up.
|
9
|
+
DESC
|
10
|
+
task :rvm do
|
11
|
+
required_variables = [
|
12
|
+
:ruby_version,
|
13
|
+
:ruby_gemset,
|
14
|
+
:rvm_ruby_string,
|
15
|
+
]
|
16
|
+
|
17
|
+
verify_variables(required_variables)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
######################################################################
|
2
|
+
# RVM DEFAULTS #
|
3
|
+
######################################################################
|
4
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
5
|
+
namespace :capabilities do
|
6
|
+
namespace :defaults do
|
7
|
+
_cset :ruby_version, ENV["rvm_ruby_string"]
|
8
|
+
_cset :ruby_gemset, ENV["GEM_HOME"].split('@')[1]
|
9
|
+
|
10
|
+
_cset(:rvm_ruby_string) {ruby_gemset ? "#{ruby_version}@#{ruby_gemset}" : ruby_version}
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
######################################################################
|
2
|
+
# DB CHECKS #
|
3
|
+
######################################################################
|
4
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
5
|
+
namespace :capabilities do
|
6
|
+
namespace :check do
|
7
|
+
desc <<-DESC
|
8
|
+
[internal] Checks to see if all necessary DB capabilities variables have been set up.
|
9
|
+
DESC
|
10
|
+
task :db do
|
11
|
+
required_variables = [
|
12
|
+
:skip_backup_before_migration
|
13
|
+
]
|
14
|
+
|
15
|
+
verify_variables(required_variables)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
######################################################################
|
2
|
+
# DB DEFAULTS #
|
3
|
+
######################################################################
|
4
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
5
|
+
namespace :capabilities do
|
6
|
+
namespace :defaults do
|
7
|
+
desc "[internal] Sets intelligent defaults for DB deployments."
|
8
|
+
task :db do
|
9
|
+
_cset :skip_backup_before_migration, false
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -5,8 +5,12 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
5
5
|
_cset(:db_root_password) {Capistrano::CLI.password_prompt("Root Password For DB: ")}
|
6
6
|
_cset(:db_app_password) {Capistrano::CLI.password_prompt("App Password For DB: ")}
|
7
7
|
|
8
|
-
run_task
|
9
|
-
run_task
|
8
|
+
run_task "db:create", :as => manager_username
|
9
|
+
run_task "db:drop", :as => manager_username
|
10
|
+
|
11
|
+
before "deploy:migrate", "db:backup" unless skip_backup_before_migration
|
12
|
+
|
13
|
+
before 'db:backup', 'db:backup:check'
|
10
14
|
|
11
15
|
namespace :db do
|
12
16
|
desc <<-DESC
|
@@ -17,9 +21,18 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
17
21
|
* The filenames are formatted with the timestamp of the backup.
|
18
22
|
* After export, each file is zipped up using a bzip2 compression format.
|
19
23
|
DESC
|
20
|
-
|
21
|
-
|
22
|
-
|
24
|
+
namespace :backup do
|
25
|
+
task :default do
|
26
|
+
run "cd #{current_path} && BACKUP_DIRECTORY=#{shared_path}/db_backups #{rake} db:backup"
|
27
|
+
end
|
28
|
+
|
29
|
+
desc "[internal] Used to check to see if the db:backup task exists on the server."
|
30
|
+
task :check do
|
31
|
+
backup_task_exists = capture("cd #{current_path} && #{rake} -T | grep db:backup | wc -l").chomp
|
32
|
+
abort("There must be a task named db:backup in order to deploy. If you do not want to backup your DB during deployments, set the skip_backup_before_migration variable to true in your deploy.rb.") if backup_task_exists == '0'
|
33
|
+
|
34
|
+
run "if [ ! -d #{shared_path}/db_backups ]; then mkdir #{shared_path}/db_backups; fi"
|
35
|
+
end
|
23
36
|
end
|
24
37
|
|
25
38
|
desc <<-DESC
|
@@ -30,12 +43,12 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
30
43
|
|
31
44
|
Warning: This task cannot be called in production mode. If you truely wish
|
32
45
|
to run this in production, you'll need to log into the server and
|
33
|
-
run the rake task manually.
|
46
|
+
run the rake task manually or use Capistrano's `console` task.
|
34
47
|
DESC
|
35
48
|
task :reset_and_seed do
|
36
|
-
|
49
|
+
abort "I'm sorry Dave, but I can't let you do that. I have full control over production." if rails_env == 'production'
|
37
50
|
db.backup
|
38
|
-
run "cd #{current_path} && rake
|
51
|
+
run "cd #{current_path} && #{rake} db:reset_and_seed"
|
39
52
|
end
|
40
53
|
|
41
54
|
desc <<-DESC
|
@@ -47,12 +60,12 @@ Capistrano::Configuration.instance(:must_exist).load do
|
|
47
60
|
|
48
61
|
Warning: This task cannot be called in production mode. If you truely wish
|
49
62
|
to run this in production, you'll need to log into the server and
|
50
|
-
run the rake task manually.
|
63
|
+
run the rake task manually or use Capistrano's `console` task.
|
51
64
|
DESC
|
52
65
|
task :seed do
|
53
|
-
|
66
|
+
abort "I'm sorry Dave, but I can't let you do that. I have full control over production." if rails_env == 'production'
|
54
67
|
db.backup
|
55
|
-
run "cd #{current_path} && rake
|
68
|
+
run "cd #{current_path} && #{rake} db:seed"
|
56
69
|
end
|
57
70
|
end
|
58
71
|
end
|
@@ -0,0 +1,99 @@
|
|
1
|
+
######################################################################
|
2
|
+
# COMMON WEB SERVER TASKS #
|
3
|
+
######################################################################
|
4
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
5
|
+
run_task 'web_server:stop', :as => manager_username
|
6
|
+
run_task 'web_server:start', :as => manager_username
|
7
|
+
run_task 'web_server:restart', :as => manager_username
|
8
|
+
run_task 'web_server:reload', :as => manager_username
|
9
|
+
|
10
|
+
run_task 'website:install', :as => manager_username
|
11
|
+
run_task 'website:remove', :as => manager_username
|
12
|
+
run_task 'website:enable', :as => manager_username
|
13
|
+
run_task 'website:disable', :as => manager_username
|
14
|
+
|
15
|
+
before 'deploy', 'deploy:web:disable'
|
16
|
+
after 'deploy', 'deploy:web:enable'
|
17
|
+
|
18
|
+
namespace :deploy do
|
19
|
+
namespace :web do
|
20
|
+
desc <<-DESC
|
21
|
+
Enables the website's application by removing the maintenance page.
|
22
|
+
DESC
|
23
|
+
task :enable do
|
24
|
+
website.maintenance_mode.disable
|
25
|
+
end
|
26
|
+
|
27
|
+
desc <<-DESC
|
28
|
+
Disables the website's application by installing the maintenance page.
|
29
|
+
DESC
|
30
|
+
task :disable do
|
31
|
+
website.maintenance_mode.enable
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
namespace :website do
|
37
|
+
namespace :maintenance_mode do
|
38
|
+
desc <<-DESC
|
39
|
+
Makes the application web-accessible again. Removes the \
|
40
|
+
"maintenance.html" page generated by deploy:web:disable, which (if your \
|
41
|
+
web servers are configured correctly) will make your application \
|
42
|
+
web-accessible again.
|
43
|
+
DESC
|
44
|
+
task :disable, :except => { :no_release => true } do
|
45
|
+
run "rm #{shared_path}/system/maintenance.html"
|
46
|
+
end
|
47
|
+
|
48
|
+
desc <<-DESC
|
49
|
+
Present a maintenance page to visitors. Disables your application's web \
|
50
|
+
interface by writing a "maintenance.html" file to each web server. The \
|
51
|
+
servers must be configured to detect the presence of this file, and if \
|
52
|
+
it is present, always display it instead of performing the request.
|
53
|
+
|
54
|
+
By default, the maintenance page will just say the site is down for \
|
55
|
+
"maintenance", and will be back "shortly", but you can customize the \
|
56
|
+
page by specifying the REASON and UNTIL environment variables:
|
57
|
+
|
58
|
+
$ cap deploy:web:disable \\
|
59
|
+
REASON="hardware upgrade" \\
|
60
|
+
UNTIL="12pm Central Time"
|
61
|
+
|
62
|
+
Further customization will require that you write your own task.
|
63
|
+
DESC
|
64
|
+
task :enable, :except => { :no_release => true } do
|
65
|
+
on_rollback { rm "#{shared_path}/system/maintenance.html" }
|
66
|
+
|
67
|
+
require 'erb'
|
68
|
+
deadline, reason = ENV['UNTIL'], ENV['REASON']
|
69
|
+
|
70
|
+
template = File.read("./public/maintenance.html.erb")
|
71
|
+
maintenance_page = ERB.new(template).result(binding)
|
72
|
+
|
73
|
+
put maintenance_page, "#{shared_path}/system/maintenance.html", :mode => 0644
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
namespace :web_server do
|
79
|
+
desc "Stop the web server"
|
80
|
+
task :stop do
|
81
|
+
run "#{sudo} #{web_server_control_script} stop"
|
82
|
+
end
|
83
|
+
|
84
|
+
desc "Start the web server"
|
85
|
+
task :start do
|
86
|
+
run "#{sudo} #{web_server_control_script} start"
|
87
|
+
end
|
88
|
+
|
89
|
+
desc "Restart the web server"
|
90
|
+
task :restart do
|
91
|
+
run "#{sudo} #{web_server_control_script} restart"
|
92
|
+
end
|
93
|
+
|
94
|
+
desc "Reloads the web server configuration"
|
95
|
+
task :reload do
|
96
|
+
run "#{sudo} #{web_server_control_script} reload"
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -1,16 +1,3 @@
|
|
1
|
-
######################################################################
|
2
|
-
# SUBVERSION TASKS #
|
3
|
-
######################################################################
|
4
|
-
Capistrano::Configuration.instance(:must_exist).load do
|
5
|
-
namespace :vc do
|
6
|
-
desc <<-DESC
|
7
|
-
DESC
|
8
|
-
task :log do
|
9
|
-
set :vc_log, `svn log -r #{previous_revision.to_i + 1}:#{current_revision}`
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
1
|
######################################################################
|
15
2
|
# SUBVERSION DEFAULTS #
|
16
3
|
######################################################################
|