capistrano 3.6.1 → 3.7.0.beta1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/issue_template.md +19 -0
- data/.github/pull_request_template.md +26 -0
- data/.gitignore +1 -0
- data/.travis.yml +5 -1
- data/CHANGELOG.md +27 -1
- data/DEVELOPMENT.md +7 -1
- data/README.md +3 -4
- data/capistrano.gemspec +1 -1
- data/features/support/vagrant_helpers.rb +3 -5
- data/lib/capistrano/all.rb +1 -0
- data/lib/capistrano/configuration.rb +12 -2
- data/lib/capistrano/configuration/host_filter.rb +1 -1
- data/lib/capistrano/configuration/plugin_installer.rb +20 -2
- data/lib/capistrano/configuration/role_filter.rb +1 -1
- data/lib/capistrano/configuration/scm_resolver.rb +144 -0
- data/lib/capistrano/configuration/validated_variables.rb +3 -4
- data/lib/capistrano/defaults.rb +3 -1
- data/lib/capistrano/doctor/variables_doctor.rb +1 -1
- data/lib/capistrano/dsl/env.rb +2 -9
- data/lib/capistrano/dsl/paths.rb +1 -1
- data/lib/capistrano/dsl/task_enhancements.rb +0 -8
- data/lib/capistrano/scm/git.rb +73 -0
- data/lib/capistrano/scm/hg.rb +48 -0
- data/lib/capistrano/scm/plugin.rb +13 -0
- data/lib/capistrano/scm/svn.rb +47 -0
- data/lib/capistrano/{tasks → scm/tasks}/git.rake +9 -24
- data/lib/capistrano/{tasks → scm/tasks}/hg.rake +11 -10
- data/lib/capistrano/{tasks → scm/tasks}/svn.rake +11 -10
- data/lib/capistrano/setup.rb +1 -1
- data/lib/capistrano/tasks/deploy.rake +0 -3
- data/lib/capistrano/templates/Capfile +18 -7
- data/lib/capistrano/templates/deploy.rb.erb +7 -10
- data/lib/capistrano/templates/stage.rb.erb +7 -7
- data/lib/capistrano/version.rb +1 -1
- data/lib/capistrano/version_validator.rb +2 -5
- data/spec/lib/capistrano/configuration/host_filter_spec.rb +5 -0
- data/spec/lib/capistrano/configuration/plugin_installer_spec.rb +98 -0
- data/spec/lib/capistrano/configuration/role_filter_spec.rb +17 -1
- data/spec/lib/capistrano/doctor/variables_doctor_spec.rb +0 -7
- data/spec/lib/capistrano/dsl/task_enhancements_spec.rb +0 -15
- data/spec/lib/capistrano/scm/git_spec.rb +131 -0
- data/spec/lib/capistrano/scm/hg_spec.rb +104 -0
- data/spec/lib/capistrano/scm/svn_spec.rb +116 -0
- data/spec/lib/capistrano/scm_spec.rb +1 -1
- metadata +23 -20
- data/features/remote_file_task.feature +0 -14
- data/issue_template.md +0 -21
- data/lib/capistrano/git.rb +0 -54
- data/lib/capistrano/hg.rb +0 -43
- data/lib/capistrano/svn.rb +0 -42
- data/spec/lib/capistrano/git_spec.rb +0 -109
- data/spec/lib/capistrano/hg_spec.rb +0 -90
- data/spec/lib/capistrano/svn_spec.rb +0 -105
@@ -0,0 +1,104 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
require "capistrano/scm/hg"
|
4
|
+
|
5
|
+
module Capistrano
|
6
|
+
describe SCM::Hg do
|
7
|
+
subject { Capistrano::SCM::Hg.new }
|
8
|
+
|
9
|
+
# This allows us to easily use `set`, `fetch`, etc. in the examples.
|
10
|
+
let(:env) { Capistrano::Configuration.env }
|
11
|
+
|
12
|
+
# Stub the SSHKit backend so we can set up expectations without the plugin
|
13
|
+
# actually executing any commands.
|
14
|
+
let(:backend) { stub }
|
15
|
+
before { SSHKit::Backend.stubs(:current).returns(backend) }
|
16
|
+
|
17
|
+
# Mimic the deploy flow tasks so that the plugin can register its hooks.
|
18
|
+
before do
|
19
|
+
Rake::Task.define_task("deploy:new_release_path")
|
20
|
+
Rake::Task.define_task("deploy:check")
|
21
|
+
Rake::Task.define_task("deploy:set_current_revision")
|
22
|
+
end
|
23
|
+
|
24
|
+
# Clean up any tasks or variables that the plugin defined.
|
25
|
+
after do
|
26
|
+
Rake::Task.clear
|
27
|
+
Capistrano::Configuration.reset!
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "#hg" do
|
31
|
+
it "should call execute hg in the context, with arguments" do
|
32
|
+
backend.expects(:execute).with(:hg, :init)
|
33
|
+
subject.hg(:init)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
describe "#repo_mirror_exists?" do
|
38
|
+
it "should call test for repo HEAD" do
|
39
|
+
env.set(:repo_path, "/path/to/repo")
|
40
|
+
backend.expects(:test).with " [ -d /path/to/repo/.hg ] "
|
41
|
+
|
42
|
+
subject.repo_mirror_exists?
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "#check_repo_is_reachable" do
|
47
|
+
it "should test the repo url" do
|
48
|
+
env.set(:repo_url, :url)
|
49
|
+
backend.expects(:execute).with(:hg, "id", :url)
|
50
|
+
|
51
|
+
subject.check_repo_is_reachable
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "#clone_repo" do
|
56
|
+
it "should run hg clone" do
|
57
|
+
env.set(:repo_url, :url)
|
58
|
+
env.set(:repo_path, "path")
|
59
|
+
|
60
|
+
backend.expects(:execute).with(:hg, "clone", "--noupdate", :url, "path")
|
61
|
+
|
62
|
+
subject.clone_repo
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe "#update_mirror" do
|
67
|
+
it "should run hg update" do
|
68
|
+
backend.expects(:execute).with(:hg, "pull")
|
69
|
+
|
70
|
+
subject.update_mirror
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "#archive_to_release_path" do
|
75
|
+
it "should run hg archive without a subtree" do
|
76
|
+
env.set(:branch, :branch)
|
77
|
+
env.set(:release_path, "path")
|
78
|
+
|
79
|
+
backend.expects(:execute).with(:hg, "archive", "path", "--rev", :branch)
|
80
|
+
|
81
|
+
subject.archive_to_release_path
|
82
|
+
end
|
83
|
+
|
84
|
+
it "should run hg archive with a subtree" do
|
85
|
+
env.set(:repo_tree, "tree")
|
86
|
+
env.set(:branch, :branch)
|
87
|
+
env.set(:release_path, "path")
|
88
|
+
|
89
|
+
backend.expects(:execute).with(:hg, "archive --type tgz -p . -I", "tree", "--rev", :branch, "| tar -x --strip-components 1 -f - -C", "path")
|
90
|
+
|
91
|
+
subject.archive_to_release_path
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe "#fetch_revision" do
|
96
|
+
it "should capture hg log" do
|
97
|
+
env.set(:branch, :branch)
|
98
|
+
backend.expects(:capture).with(:hg, "log --rev branch --template \"{node}\n\"").returns("01abcde")
|
99
|
+
revision = subject.fetch_revision
|
100
|
+
expect(revision).to eq("01abcde")
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
require "capistrano/scm/svn"
|
4
|
+
|
5
|
+
module Capistrano
|
6
|
+
describe SCM::Svn do
|
7
|
+
subject { Capistrano::SCM::Svn.new }
|
8
|
+
|
9
|
+
# This allows us to easily use `set`, `fetch`, etc. in the examples.
|
10
|
+
let(:env) { Capistrano::Configuration.env }
|
11
|
+
|
12
|
+
# Stub the SSHKit backend so we can set up expectations without the plugin
|
13
|
+
# actually executing any commands.
|
14
|
+
let(:backend) { stub }
|
15
|
+
before { SSHKit::Backend.stubs(:current).returns(backend) }
|
16
|
+
|
17
|
+
# Mimic the deploy flow tasks so that the plugin can register its hooks.
|
18
|
+
before do
|
19
|
+
Rake::Task.define_task("deploy:new_release_path")
|
20
|
+
Rake::Task.define_task("deploy:check")
|
21
|
+
Rake::Task.define_task("deploy:set_current_revision")
|
22
|
+
end
|
23
|
+
|
24
|
+
# Clean up any tasks or variables that the plugin defined.
|
25
|
+
after do
|
26
|
+
Rake::Task.clear
|
27
|
+
Capistrano::Configuration.reset!
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "#svn" do
|
31
|
+
it "should call execute svn in the context, with arguments" do
|
32
|
+
env.set(:svn_username, "someuser")
|
33
|
+
env.set(:svn_password, "somepassword")
|
34
|
+
backend.expects(:execute).with(:svn, :init, "--username someuser", "--password somepassword")
|
35
|
+
subject.svn(:init)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "#repo_mirror_exists?" do
|
40
|
+
it "should call test for repo HEAD" do
|
41
|
+
env.set(:repo_path, "/path/to/repo")
|
42
|
+
backend.expects(:test).with " [ -d /path/to/repo/.svn ] "
|
43
|
+
|
44
|
+
subject.repo_mirror_exists?
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
describe "#check_repo_is_reachable" do
|
49
|
+
it "should test the repo url" do
|
50
|
+
env.set(:repo_url, :url)
|
51
|
+
env.set(:svn_username, "someuser")
|
52
|
+
env.set(:svn_password, "somepassword")
|
53
|
+
backend.expects(:test).with(:svn, :info, :url, "--username someuser", "--password somepassword").returns(true)
|
54
|
+
|
55
|
+
subject.check_repo_is_reachable
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
describe "#clone_repo" do
|
60
|
+
it "should run svn checkout" do
|
61
|
+
env.set(:repo_url, :url)
|
62
|
+
env.set(:repo_path, "path")
|
63
|
+
env.set(:svn_username, "someuser")
|
64
|
+
env.set(:svn_password, "somepassword")
|
65
|
+
|
66
|
+
backend.expects(:execute).with(:svn, :checkout, :url, "path", "--username someuser", "--password somepassword")
|
67
|
+
|
68
|
+
subject.clone_repo
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe "#update_mirror" do
|
73
|
+
it "should run svn update" do
|
74
|
+
env.set(:svn_username, "someuser")
|
75
|
+
env.set(:svn_password, "somepassword")
|
76
|
+
backend.expects(:execute).with(:svn, :update, "--username someuser", "--password somepassword")
|
77
|
+
|
78
|
+
subject.update_mirror
|
79
|
+
end
|
80
|
+
|
81
|
+
context "for specific revision" do
|
82
|
+
it "should run svn update" do
|
83
|
+
env.set(:svn_username, "someuser")
|
84
|
+
env.set(:svn_password, "somepassword")
|
85
|
+
env.set(:svn_revision, "12345")
|
86
|
+
backend.expects(:execute).with(:svn, :update, "--username someuser", "--password somepassword", "--revision 12345")
|
87
|
+
|
88
|
+
subject.update_mirror
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
describe "#archive_to_release_path" do
|
94
|
+
it "should run svn export" do
|
95
|
+
env.set(:release_path, "path")
|
96
|
+
env.set(:svn_username, "someuser")
|
97
|
+
env.set(:svn_password, "somepassword")
|
98
|
+
|
99
|
+
backend.expects(:execute).with(:svn, :export, "--force", ".", "path", "--username someuser", "--password somepassword")
|
100
|
+
|
101
|
+
subject.archive_to_release_path
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
describe "#fetch_revision" do
|
106
|
+
it "should capture svn version" do
|
107
|
+
env.set(:repo_path, "path")
|
108
|
+
|
109
|
+
backend.expects(:capture).with(:svnversion, "path").returns("12345")
|
110
|
+
|
111
|
+
revision = subject.fetch_revision
|
112
|
+
expect(revision).to eq("12345")
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
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: 3.
|
4
|
+
version: 3.7.0.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Clements
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-11-03 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: airbrussh
|
@@ -134,6 +134,8 @@ executables:
|
|
134
134
|
extensions: []
|
135
135
|
extra_rdoc_files: []
|
136
136
|
files:
|
137
|
+
- ".github/issue_template.md"
|
138
|
+
- ".github/pull_request_template.md"
|
137
139
|
- ".gitignore"
|
138
140
|
- ".rubocop.yml"
|
139
141
|
- ".travis.yml"
|
@@ -154,7 +156,6 @@ files:
|
|
154
156
|
- features/deploy_failure.feature
|
155
157
|
- features/doctor.feature
|
156
158
|
- features/installation.feature
|
157
|
-
- features/remote_file_task.feature
|
158
159
|
- features/sshconnect.feature
|
159
160
|
- features/stage_failure.feature
|
160
161
|
- features/step_definitions/assertions.rb
|
@@ -163,7 +164,6 @@ files:
|
|
163
164
|
- features/support/env.rb
|
164
165
|
- features/support/remote_command_helpers.rb
|
165
166
|
- features/support/vagrant_helpers.rb
|
166
|
-
- issue_template.md
|
167
167
|
- lib/Capfile
|
168
168
|
- lib/capistrano.rb
|
169
169
|
- lib/capistrano/all.rb
|
@@ -176,6 +176,7 @@ files:
|
|
176
176
|
- lib/capistrano/configuration/plugin_installer.rb
|
177
177
|
- lib/capistrano/configuration/question.rb
|
178
178
|
- lib/capistrano/configuration/role_filter.rb
|
179
|
+
- lib/capistrano/configuration/scm_resolver.rb
|
179
180
|
- lib/capistrano/configuration/server.rb
|
180
181
|
- lib/capistrano/configuration/servers.rb
|
181
182
|
- lib/capistrano/configuration/validated_variables.rb
|
@@ -196,24 +197,25 @@ files:
|
|
196
197
|
- lib/capistrano/dsl/stages.rb
|
197
198
|
- lib/capistrano/dsl/task_enhancements.rb
|
198
199
|
- lib/capistrano/framework.rb
|
199
|
-
- lib/capistrano/git.rb
|
200
|
-
- lib/capistrano/hg.rb
|
201
200
|
- lib/capistrano/i18n.rb
|
202
201
|
- lib/capistrano/immutable_task.rb
|
203
202
|
- lib/capistrano/install.rb
|
204
203
|
- lib/capistrano/plugin.rb
|
205
204
|
- lib/capistrano/proc_helpers.rb
|
206
205
|
- lib/capistrano/scm.rb
|
206
|
+
- lib/capistrano/scm/git.rb
|
207
|
+
- lib/capistrano/scm/hg.rb
|
208
|
+
- lib/capistrano/scm/plugin.rb
|
209
|
+
- lib/capistrano/scm/svn.rb
|
210
|
+
- lib/capistrano/scm/tasks/git.rake
|
211
|
+
- lib/capistrano/scm/tasks/hg.rake
|
212
|
+
- lib/capistrano/scm/tasks/svn.rake
|
207
213
|
- lib/capistrano/setup.rb
|
208
|
-
- lib/capistrano/svn.rb
|
209
214
|
- lib/capistrano/tasks/console.rake
|
210
215
|
- lib/capistrano/tasks/deploy.rake
|
211
216
|
- lib/capistrano/tasks/doctor.rake
|
212
217
|
- lib/capistrano/tasks/framework.rake
|
213
|
-
- lib/capistrano/tasks/git.rake
|
214
|
-
- lib/capistrano/tasks/hg.rake
|
215
218
|
- lib/capistrano/tasks/install.rake
|
216
|
-
- lib/capistrano/tasks/svn.rake
|
217
219
|
- lib/capistrano/templates/Capfile
|
218
220
|
- lib/capistrano/templates/deploy.rb.erb
|
219
221
|
- lib/capistrano/templates/stage.rb.erb
|
@@ -227,6 +229,7 @@ files:
|
|
227
229
|
- spec/lib/capistrano/configuration/filter_spec.rb
|
228
230
|
- spec/lib/capistrano/configuration/host_filter_spec.rb
|
229
231
|
- spec/lib/capistrano/configuration/null_filter_spec.rb
|
232
|
+
- spec/lib/capistrano/configuration/plugin_installer_spec.rb
|
230
233
|
- spec/lib/capistrano/configuration/question_spec.rb
|
231
234
|
- spec/lib/capistrano/configuration/role_filter_spec.rb
|
232
235
|
- spec/lib/capistrano/configuration/server_spec.rb
|
@@ -240,12 +243,12 @@ files:
|
|
240
243
|
- spec/lib/capistrano/dsl/paths_spec.rb
|
241
244
|
- spec/lib/capistrano/dsl/task_enhancements_spec.rb
|
242
245
|
- spec/lib/capistrano/dsl_spec.rb
|
243
|
-
- spec/lib/capistrano/git_spec.rb
|
244
|
-
- spec/lib/capistrano/hg_spec.rb
|
245
246
|
- spec/lib/capistrano/immutable_task_spec.rb
|
246
247
|
- spec/lib/capistrano/plugin_spec.rb
|
248
|
+
- spec/lib/capistrano/scm/git_spec.rb
|
249
|
+
- spec/lib/capistrano/scm/hg_spec.rb
|
250
|
+
- spec/lib/capistrano/scm/svn_spec.rb
|
247
251
|
- spec/lib/capistrano/scm_spec.rb
|
248
|
-
- spec/lib/capistrano/svn_spec.rb
|
249
252
|
- spec/lib/capistrano/upload_task_spec.rb
|
250
253
|
- spec/lib/capistrano/version_validator_spec.rb
|
251
254
|
- spec/lib/capistrano_spec.rb
|
@@ -274,12 +277,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
274
277
|
version: '2.0'
|
275
278
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
276
279
|
requirements:
|
277
|
-
- - "
|
280
|
+
- - ">"
|
278
281
|
- !ruby/object:Gem::Version
|
279
|
-
version:
|
282
|
+
version: 1.3.1
|
280
283
|
requirements: []
|
281
284
|
rubyforge_project:
|
282
|
-
rubygems_version: 2.6.
|
285
|
+
rubygems_version: 2.6.7
|
283
286
|
signing_key:
|
284
287
|
specification_version: 4
|
285
288
|
summary: Capistrano - Welcome to easy deployment with Ruby over SSH
|
@@ -289,7 +292,6 @@ test_files:
|
|
289
292
|
- features/deploy_failure.feature
|
290
293
|
- features/doctor.feature
|
291
294
|
- features/installation.feature
|
292
|
-
- features/remote_file_task.feature
|
293
295
|
- features/sshconnect.feature
|
294
296
|
- features/stage_failure.feature
|
295
297
|
- features/step_definitions/assertions.rb
|
@@ -305,6 +307,7 @@ test_files:
|
|
305
307
|
- spec/lib/capistrano/configuration/filter_spec.rb
|
306
308
|
- spec/lib/capistrano/configuration/host_filter_spec.rb
|
307
309
|
- spec/lib/capistrano/configuration/null_filter_spec.rb
|
310
|
+
- spec/lib/capistrano/configuration/plugin_installer_spec.rb
|
308
311
|
- spec/lib/capistrano/configuration/question_spec.rb
|
309
312
|
- spec/lib/capistrano/configuration/role_filter_spec.rb
|
310
313
|
- spec/lib/capistrano/configuration/server_spec.rb
|
@@ -318,12 +321,12 @@ test_files:
|
|
318
321
|
- spec/lib/capistrano/dsl/paths_spec.rb
|
319
322
|
- spec/lib/capistrano/dsl/task_enhancements_spec.rb
|
320
323
|
- spec/lib/capistrano/dsl_spec.rb
|
321
|
-
- spec/lib/capistrano/git_spec.rb
|
322
|
-
- spec/lib/capistrano/hg_spec.rb
|
323
324
|
- spec/lib/capistrano/immutable_task_spec.rb
|
324
325
|
- spec/lib/capistrano/plugin_spec.rb
|
326
|
+
- spec/lib/capistrano/scm/git_spec.rb
|
327
|
+
- spec/lib/capistrano/scm/hg_spec.rb
|
328
|
+
- spec/lib/capistrano/scm/svn_spec.rb
|
325
329
|
- spec/lib/capistrano/scm_spec.rb
|
326
|
-
- spec/lib/capistrano/svn_spec.rb
|
327
330
|
- spec/lib/capistrano/upload_task_spec.rb
|
328
331
|
- spec/lib/capistrano/version_validator_spec.rb
|
329
332
|
- spec/lib/capistrano_spec.rb
|
@@ -1,14 +0,0 @@
|
|
1
|
-
Feature: Remote file task
|
2
|
-
|
3
|
-
Background:
|
4
|
-
Given a test app with the default configuration
|
5
|
-
And a custom task to generate a file
|
6
|
-
And servers with the roles app and web
|
7
|
-
|
8
|
-
Scenario: Where the file does not exist
|
9
|
-
When I run cap "deploy:check:linked_files"
|
10
|
-
Then it creates the file with the remote_task prerequisite
|
11
|
-
|
12
|
-
Scenario: Where the file already exists
|
13
|
-
When I run cap "deploy:check:linked_files"
|
14
|
-
Then it will not recreate the file
|
data/issue_template.md
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
**Important:** GitHub issues are for feature requests or bug reports. The Capistrano team recommends you use [Stack Overflow](http://stackoverflow.com/questions/tagged/capistrano) for general questions. For more details, please see our [contribution policy](https://github.com/capistrano/capistrano/blob/master/CONTRIBUTING.md).
|
2
|
-
|
3
|
-
---
|
4
|
-
|
5
|
-
#### Steps to reproduce
|
6
|
-
|
7
|
-
1. Lorem.
|
8
|
-
2. Ipsum..
|
9
|
-
3. Dolor...
|
10
|
-
|
11
|
-
#### Expected behaviour
|
12
|
-
|
13
|
-
Tell us what should happen
|
14
|
-
|
15
|
-
#### Actual behaviour
|
16
|
-
|
17
|
-
Tell us what happens instead
|
18
|
-
|
19
|
-
#### Your configuration
|
20
|
-
|
21
|
-
Paste Capistrano's `doctor` output here (`cap <stage> doctor`):
|
data/lib/capistrano/git.rb
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
load File.expand_path("../tasks/git.rake", __FILE__)
|
2
|
-
|
3
|
-
require "capistrano/scm"
|
4
|
-
|
5
|
-
class Capistrano::Git < Capistrano::SCM
|
6
|
-
# execute git with argument in the context
|
7
|
-
#
|
8
|
-
def git(*args)
|
9
|
-
args.unshift :git
|
10
|
-
context.execute(*args)
|
11
|
-
end
|
12
|
-
|
13
|
-
# The Capistrano default strategy for git. You should want to use this.
|
14
|
-
module DefaultStrategy
|
15
|
-
def test
|
16
|
-
test! " [ -f #{repo_path}/HEAD ] "
|
17
|
-
end
|
18
|
-
|
19
|
-
def check
|
20
|
-
git :'ls-remote --heads', repo_url
|
21
|
-
end
|
22
|
-
|
23
|
-
def clone
|
24
|
-
if (depth = fetch(:git_shallow_clone))
|
25
|
-
git :clone, "--mirror", "--depth", depth, "--no-single-branch", repo_url, repo_path
|
26
|
-
else
|
27
|
-
git :clone, "--mirror", repo_url, repo_path
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
def update
|
32
|
-
# Note: Requires git version 1.9 or greater
|
33
|
-
if (depth = fetch(:git_shallow_clone))
|
34
|
-
git :fetch, "--depth", depth, "origin", fetch(:branch)
|
35
|
-
else
|
36
|
-
git :remote, :update, "--prune"
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def release
|
41
|
-
if (tree = fetch(:repo_tree))
|
42
|
-
tree = tree.slice %r#^/?(.*?)/?$#, 1
|
43
|
-
components = tree.split("/").size
|
44
|
-
git :archive, fetch(:branch), tree, "| tar -x --strip-components #{components} -f - -C", release_path
|
45
|
-
else
|
46
|
-
git :archive, fetch(:branch), "| tar -x -f - -C", release_path
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def fetch_revision
|
51
|
-
context.capture(:git, "rev-list --max-count=1 #{fetch(:branch)}")
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|