capistrano 2.5.10 → 2.5.11
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/bin/capify +2 -2
- data/lib/capistrano.rb +1 -1
- data/lib/capistrano/errors.rb +11 -7
- data/lib/capistrano/recipes/deploy.rb +7 -11
- data/lib/capistrano/recipes/deploy/scm/bzr.rb +4 -1
- data/test/deploy/scm/bzr_test.rb +51 -0
- metadata +4 -2
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.5.
|
1
|
+
2.5.11
|
data/bin/capify
CHANGED
@@ -59,8 +59,8 @@ role :db, "your slave db-server here"
|
|
59
59
|
# these http://github.com/rails/irs_process_scripts
|
60
60
|
|
61
61
|
# namespace :deploy do
|
62
|
-
# task :start
|
63
|
-
# task :stop
|
62
|
+
# task :start do ; end
|
63
|
+
# task :stop do ; end
|
64
64
|
# task :restart, :roles => :app, :except => { :no_release => true } do
|
65
65
|
# run "#{try_sudo} touch #{File.join(current_path,\'tmp\',\'restart.txt\')}"
|
66
66
|
# end
|
data/lib/capistrano.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
require 'capistrano/configuration'
|
2
|
-
require 'capistrano/extensions'
|
2
|
+
require 'capistrano/extensions'
|
data/lib/capistrano/errors.rb
CHANGED
@@ -1,15 +1,19 @@
|
|
1
1
|
module Capistrano
|
2
|
-
|
2
|
+
|
3
|
+
Error = Class.new(RuntimeError)
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
|
5
|
+
CaptureError = Class.new(Capistrano::Error)
|
6
|
+
NoSuchTaskError = Class.new(Capistrano::Error)
|
7
|
+
NoMatchingServersError = Class.new(Capistrano::Error)
|
7
8
|
|
8
9
|
class RemoteError < Error
|
9
10
|
attr_accessor :hosts
|
10
11
|
end
|
11
12
|
|
12
|
-
|
13
|
-
|
14
|
-
|
13
|
+
ConnectionError = Class.new(Capistrano::RemoteError)
|
14
|
+
TransferError = Class.new(Capistrano::RemoteError)
|
15
|
+
CommandError = Class.new(Capistrano::RemoteError)
|
16
|
+
|
17
|
+
LocalArgumentError = Class.new(Capistrano::Error)
|
18
|
+
|
15
19
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'yaml'
|
2
|
-
require 'mkmf'
|
3
2
|
require 'capistrano/recipes/deploy/scm'
|
4
3
|
require 'capistrano/recipes/deploy/strategy'
|
5
4
|
|
@@ -39,6 +38,7 @@ _cset(:real_revision) { source.local.query_revision(revision) { |cmd| with_e
|
|
39
38
|
|
40
39
|
_cset(:strategy) { Capistrano::Deploy::Strategy.new(deploy_via, self) }
|
41
40
|
|
41
|
+
# If overriding release name, please also select an appropriate setting for :releases below.
|
42
42
|
_cset(:release_name) { set :deploy_timestamped, true; Time.now.utc.strftime("%Y%m%d%H%M%S") }
|
43
43
|
|
44
44
|
_cset :version_dir, "releases"
|
@@ -51,7 +51,7 @@ _cset(:shared_path) { File.join(deploy_to, shared_dir) }
|
|
51
51
|
_cset(:current_path) { File.join(deploy_to, current_dir) }
|
52
52
|
_cset(:release_path) { File.join(releases_path, release_name) }
|
53
53
|
|
54
|
-
_cset(:releases) { capture("ls -
|
54
|
+
_cset(:releases) { capture("ls -x #{releases_path}").split.reverse }
|
55
55
|
_cset(:current_release) { File.join(releases_path, releases.last) }
|
56
56
|
_cset(:previous_release) { releases.length > 1 ? File.join(releases_path, releases[-2]) : nil }
|
57
57
|
|
@@ -95,18 +95,14 @@ end
|
|
95
95
|
# returns the command output as a string
|
96
96
|
def run_locally(cmd)
|
97
97
|
logger.trace "executing locally: #{cmd.inspect}" if logger
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
# tests if the given command is present on the local system
|
103
|
-
def command_present?(cmd)
|
104
|
-
executable = cmd.to_s.split(" ").first
|
105
|
-
unless find_executable(executable)
|
106
|
-
logger.important "executable '#{executable}' not present or not in $PATH on the local system!"
|
98
|
+
output_on_stdout = `#{cmd}`
|
99
|
+
if $?.to_i > 0 # $? is command exit code (posix style)
|
100
|
+
raise Capistrano::LocalArgumentError, "Command #{cmd} returned status code #{$?}"
|
107
101
|
end
|
102
|
+
output_on_stdout
|
108
103
|
end
|
109
104
|
|
105
|
+
|
110
106
|
# If a command is given, this will try to execute the given command, as
|
111
107
|
# described below. Otherwise, it will return a string for use in embedding in
|
112
108
|
# another command, for executing that command as described below.
|
@@ -59,7 +59,10 @@ module Capistrano
|
|
59
59
|
# If the 'revision' argument, on the other hand, is not :head, it is
|
60
60
|
# simply returned.
|
61
61
|
def query_revision(revision)
|
62
|
-
revision
|
62
|
+
return revision unless :head == revision
|
63
|
+
|
64
|
+
command = scm('revno', repository)
|
65
|
+
result = yield(command)
|
63
66
|
end
|
64
67
|
|
65
68
|
# Increments the given revision number and returns it.
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require "utils"
|
2
|
+
require 'capistrano/recipes/deploy/scm/bzr'
|
3
|
+
|
4
|
+
class DeploySCMBzrTest < Test::Unit::TestCase
|
5
|
+
class TestSCM < Capistrano::Deploy::SCM::Bzr
|
6
|
+
default_command "bzr"
|
7
|
+
end
|
8
|
+
|
9
|
+
def setup
|
10
|
+
@config = { :repository => "." }
|
11
|
+
|
12
|
+
def @config.exists?(name); key?(name); end # is this actually needed?
|
13
|
+
|
14
|
+
@source = TestSCM.new(@config)
|
15
|
+
end
|
16
|
+
|
17
|
+
# The bzr scm does not support pseudo-ids. The bzr adapter uses symbol :head
|
18
|
+
# to refer to the recently committed revision.
|
19
|
+
def test_head_revision
|
20
|
+
assert_equal(:head,
|
21
|
+
@source.head,
|
22
|
+
"Since bzr doesn't know a real head revision, symbol :head is used instead.")
|
23
|
+
end
|
24
|
+
|
25
|
+
# The bzr scm does support many different ways to specify a revision. Only
|
26
|
+
# symbol :head triggers the bzr command 'revno'.
|
27
|
+
def test_query_revision
|
28
|
+
assert_equal("bzr revno #{@config[:repository]}",
|
29
|
+
@source.query_revision(:head) { |o| o },
|
30
|
+
"Query for :head revision should call bzr command 'revno' in repository directory.")
|
31
|
+
|
32
|
+
# Many valid revision specifications, some invalid on the last line
|
33
|
+
revision_samples = [ 5, -7, '2', '-4',
|
34
|
+
'revid:revid:aaaa@bbbb-123456789',
|
35
|
+
'submit:',
|
36
|
+
'ancestor:/path/to/branch',
|
37
|
+
'date:yesterday',
|
38
|
+
'branch:/path/to/branch',
|
39
|
+
'tag:trunk',
|
40
|
+
'revno:3:/path/to/branch',
|
41
|
+
'before:revid:aaaa@bbbb-1234567890',
|
42
|
+
'last:3',
|
43
|
+
nil, {}, [], true, false, 1.34, ]
|
44
|
+
|
45
|
+
revision_samples.each do |revivsion_spec|
|
46
|
+
assert_equal(revivsion_spec,
|
47
|
+
@source.query_revision(revivsion_spec),
|
48
|
+
"Any revision specification other than symbol :head should simply by returned.")
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.5.
|
4
|
+
version: 2.5.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jamis Buck
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-
|
13
|
+
date: 2009-12-29 00:00:00 +00:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -175,6 +175,7 @@ files:
|
|
175
175
|
- test/deploy/remote_dependency_test.rb
|
176
176
|
- test/deploy/scm/accurev_test.rb
|
177
177
|
- test/deploy/scm/base_test.rb
|
178
|
+
- test/deploy/scm/bzr_test.rb
|
178
179
|
- test/deploy/scm/darcs_test.rb
|
179
180
|
- test/deploy/scm/git_test.rb
|
180
181
|
- test/deploy/scm/mercurial_test.rb
|
@@ -244,6 +245,7 @@ test_files:
|
|
244
245
|
- test/deploy/remote_dependency_test.rb
|
245
246
|
- test/deploy/scm/accurev_test.rb
|
246
247
|
- test/deploy/scm/base_test.rb
|
248
|
+
- test/deploy/scm/bzr_test.rb
|
247
249
|
- test/deploy/scm/darcs_test.rb
|
248
250
|
- test/deploy/scm/git_test.rb
|
249
251
|
- test/deploy/scm/mercurial_test.rb
|