capistrano-git-copy 1.2.1 → 1.3.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0c1bd7f1f0427e2237d05ec40bfd2b04c263cc1d
4
- data.tar.gz: a04f09b5de4cf6fc31191910d20aa0809e0fe851
3
+ metadata.gz: 5674b8d5f3ded4e8674afea47a7f1f60b5642b03
4
+ data.tar.gz: 9bdc1dcf572d1172e3bfbb7a1c1dc8b76fb4fb13
5
5
  SHA512:
6
- metadata.gz: ace9a0e03014d24d19e691725adb5a068701eb1fd074d19d47d08cdf7af1d6d0e195e06c64f813c9d80c640a661046a79e4e7c8042c33714b99393a1c6e6c08a
7
- data.tar.gz: fa69a38fec6225118f9cbf35e7b38d5325802ba7506896e3991aadaf9b4abeb94991347eda42947158cf28f10bbe7f12b88fec4fe164ace0447a9f91e2959eea
6
+ metadata.gz: d4dcfa2bf859b3b332a7b2500ffd11b912724ccb670fd81d20b34bacd8abe4d5ab005a4b90e4d79d07101de304dee2bb22b144da1745973a21a777063b00bde5
7
+ data.tar.gz: 8e2dd9adb6f3ea20954d99c1641d1534ffd9cb768e0eee46660bc19fed41544c218633fd09b32c38fbb38157dbf35581cb66fafbe683ed5a50d6c9d8482a366c
@@ -1,5 +1,8 @@
1
1
  # Change Log
2
2
 
3
+ ## 1.3.0 (2016-12-11)
4
+ - capistrano 3.7.x compatibility - see updated README.md
5
+
3
6
  ## 1.2.1 (2016-12-11)
4
7
  ### Changes
5
8
  - updated _git-archive-all_ to HEAD
data/README.md CHANGED
@@ -23,23 +23,20 @@ And require it in your `Capfile`:
23
23
 
24
24
  ```ruby
25
25
  require 'capistrano/git_copy'
26
+ install_plugin Capistrano::GitCopy::SCM
26
27
  ```
27
28
 
28
- Now use `git_copy` as your SCM type in your `config/deploy.rb`:
29
-
30
- set :scm, :git_copy
31
-
32
29
  By default, it includes all submodules into the deployment package. However,
33
30
  if they are not needed in a particular deployment, you can disable them with
34
31
  a configuration option:
35
-
36
- set :with_submodules, false
37
-
32
+ ```ruby
33
+ set :with_submodules, false
34
+ ```
38
35
  Besides using `export-ignore` in `.gitattributes` it's possible exclude files and directories by
39
36
  adding them to `git_excludes`:
40
-
41
- set :git_excludes, %w(config/database.yml.example test rspec)
42
-
37
+ ```ruby
38
+ append :git_excludes, 'config/database.yml.example', 'test', 'rspec'
39
+ ```
43
40
  ## Notes
44
41
 
45
42
  * Uses [git-archive-all](https://github.com/Kentzo/git-archive-all) for bundling repositories.
@@ -8,8 +8,8 @@ Gem::Specification.new do |spec|
8
8
  spec.version = Capistrano::GitCopy::VERSION
9
9
  spec.authors = ['Florian Schwab']
10
10
  spec.email = ['me@ydkn.de']
11
- spec.description = 'Copy local git repository deploy strategy for capistrano'
12
- spec.summary = 'Copy local git repository deploy strategy for capistrano'
11
+ spec.description = 'Copy local git repository deploy strategy for capistrano.'
12
+ spec.summary = 'Copy local git repository deploy strategy for capistrano.'
13
13
  spec.homepage = 'https://github.com/ydkn/capistrano-git-copy'
14
14
  spec.license = 'MIT'
15
15
 
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency 'capistrano', '>= 3.1.0', '< 3.7.0'
21
+ spec.add_dependency 'capistrano', '>= 3.7.0', '< 4.0.0'
22
22
 
23
23
  spec.add_development_dependency 'bundler', '~> 1.3'
24
24
  spec.add_development_dependency 'rake'
@@ -1,2 +1 @@
1
- require 'capistrano/git_copy/utility'
2
- require 'capistrano/git_copy/task'
1
+ require 'capistrano/git_copy/scm'
@@ -0,0 +1,203 @@
1
+ require 'capistrano/scm/plugin'
2
+
3
+ module Capistrano
4
+ module GitCopy
5
+ class SCM < ::Capistrano::SCM::Plugin
6
+ # set default values
7
+ def set_defaults
8
+ set_if_empty :with_submodules, true
9
+ set_if_empty :git_excludes, []
10
+ set_if_empty :repo_tree, false
11
+ end
12
+
13
+ # define plugin tasks
14
+ def define_tasks
15
+ eval_rakefile File.expand_path('../tasks/git_copy.rake', __FILE__)
16
+ end
17
+
18
+ # register capistrano hooks
19
+ def register_hooks
20
+ after 'deploy:new_release_path', 'git_copy:create_release'
21
+ before 'deploy:check', 'git_copy:check'
22
+ before 'deploy:set_current_revision', 'git_copy:set_current_revision'
23
+ end
24
+
25
+ # Check if repository is accessible
26
+ #
27
+ # @return void
28
+ def check
29
+ git(:'ls-remote --heads', repo_url)
30
+ end
31
+
32
+ # Check if repository cache exists and is valid
33
+ #
34
+ # @return [Boolean] indicates if repo cache exists
35
+ def test
36
+ if backend.test("[ -d #{repo_cache_path} ]")
37
+ backend.within(repo_cache_path) do
38
+ if backend.test(:git, :status, '>/dev/null 2>/dev/null')
39
+ true
40
+ else
41
+ backend.execute(:rm, '-rf', repo_cache_path)
42
+
43
+ false
44
+ end
45
+ end
46
+ else
47
+ false
48
+ end
49
+ end
50
+
51
+ # Clone repo to cache
52
+ #
53
+ # @return void
54
+ def clone
55
+ backend.execute(:mkdir, '-p', tmp_path)
56
+
57
+ git(:clone, fetch(:repo_url), repo_cache_path)
58
+ end
59
+
60
+ # Update repo and submodules to branch
61
+ #
62
+ # @return void
63
+ def update
64
+ git(:remote, :update)
65
+ git(:reset, '--hard', commit_hash)
66
+
67
+ # submodules
68
+ if fetch(:with_submodules)
69
+ git(:submodule, :init)
70
+ git(:submodule, :update)
71
+ git(:submodule, :foreach, '--recursive', :git, :submodule, :update, '--init')
72
+ end
73
+
74
+ # cleanup
75
+ git(:clean, '-d', '-f')
76
+
77
+ if fetch(:with_submodules)
78
+ git(:submodule, :foreach, '--recursive', :git, :clean, '-d', '-f')
79
+ end
80
+ end
81
+
82
+ # Create tar archive
83
+ #
84
+ # @return void
85
+ def prepare_release
86
+ target = fetch(:repo_tree) ? "HEAD:#{fetch(:repo_tree)}" : 'HEAD'
87
+
88
+ if fetch(:with_submodules)
89
+ backend.execute(git_archive_all_bin, "--prefix=''", archive_path)
90
+ else
91
+ git(:archive, '--format=tar', target, '|', 'gzip', "> #{archive_path}")
92
+ end
93
+
94
+ exclude_files_from_archive if fetch(:git_excludes, []).count > 0
95
+ end
96
+
97
+ # Upload and extract release
98
+ #
99
+ # @return void
100
+ def release
101
+ backend.execute :mkdir, '-p', release_path
102
+
103
+ remote_archive_path = File.join(fetch(:deploy_to), File.basename(archive_path))
104
+
105
+ backend.upload!(archive_path, remote_archive_path)
106
+
107
+ backend.execute(:mkdir, '-p', release_path)
108
+ backend.execute(:tar, '-f', remote_archive_path, '-x', '-C', release_path)
109
+ backend.execute(:rm, '-f', remote_archive_path)
110
+ end
111
+
112
+ # Set deployed revision
113
+ #
114
+ # @return void
115
+ def fetch_revision
116
+ backend.capture(:git, 'rev-list', '--max-count=1', '--abbrev-commit', commit_hash).strip
117
+ end
118
+
119
+ # Cleanup repo cache
120
+ #
121
+ # @return void
122
+ def cleanup
123
+ backend.execute(:rm, '-rf', tmp_path)
124
+
125
+ backend.info('Local repo cache was removed')
126
+ end
127
+
128
+ # Temporary path for all git-copy operations
129
+ #
130
+ # @return [String]
131
+ def tmp_path
132
+ @_tmp_path ||= File.join(Dir.tmpdir, deploy_id)
133
+ end
134
+
135
+ # Path to repository cache
136
+ #
137
+ # @return [String]
138
+ def repo_cache_path
139
+ @_repo_cache_path ||= File.join(tmp_path, 'repo')
140
+ end
141
+
142
+ # Path to archive
143
+ #
144
+ # @return [String]
145
+ def archive_path
146
+ @_archive_path ||= File.join(tmp_path, 'archive.tar.gz')
147
+ end
148
+
149
+ private
150
+
151
+ def deploy_id
152
+ [
153
+ fetch(:application),
154
+ fetch(:stage),
155
+ Digest::MD5.hexdigest(fetch(:repo_url))[0..7],
156
+ Digest::MD5.hexdigest(Dir.getwd)[0..7]
157
+ ].compact.join('_').gsub(/[^\w]/, '')
158
+ end
159
+
160
+ def commit_hash
161
+ return @_commit_hash if @_commit_hash
162
+
163
+ branch = fetch(:branch, 'master').to_s.strip
164
+
165
+ if backend.test(:git, 'rev-parse', "origin/#{branch}", '>/dev/null 2>/dev/null')
166
+ @_commit_hash = backend.capture(:git, 'rev-parse', "origin/#{branch}").strip
167
+ else
168
+ @_commit_hash = backend.capture(:git, 'rev-parse', branch).strip
169
+ end
170
+ end
171
+
172
+ def git_archive_all_bin
173
+ File.expand_path('../../../../vendor/git-archive-all/git_archive_all.py', __FILE__)
174
+ end
175
+
176
+ def git(*args)
177
+ backend.execute(:git, *args)
178
+ end
179
+
180
+ def exclude_files_from_archive
181
+ archive_dir = File.join(tmp_path, 'archive')
182
+
183
+ backend.execute :rm, '-rf', archive_dir
184
+ backend.execute :mkdir, '-p', archive_dir
185
+ backend.execute :tar, '-xzf', archive_path, '-C', archive_dir
186
+
187
+ fetch(:git_excludes, []).each do |f|
188
+ file_path = File.join(archive_dir, f.gsub(/\A\//, ''))
189
+
190
+ unless File.exists?(file_path)
191
+ backend.warn("#{f} does not exists!")
192
+
193
+ next
194
+ end
195
+
196
+ FileUtils.rm_rf(file_path)
197
+ end
198
+
199
+ backend.execute :tar, '-czf', archive_path, '-C', archive_dir, '.'
200
+ end
201
+ end
202
+ end
203
+ end
@@ -0,0 +1,59 @@
1
+ git_copy_plugin = self
2
+
3
+ namespace :git_copy do
4
+ desc 'Check that the repository is reachable'
5
+ task :check do
6
+ run_locally do
7
+ git_copy_plugin.check
8
+ end
9
+ end
10
+
11
+ desc 'Clone the repo to the cache'
12
+ task :clone do
13
+ run_locally do
14
+ if git_copy_plugin.test
15
+ info t(:mirror_exists, at: git_copy_plugin.repo_cache_path)
16
+ else
17
+ git_copy_plugin.clone
18
+ end
19
+ end
20
+ end
21
+
22
+ desc 'Update the repo mirror to reflect the origin state'
23
+ task update: :'git_copy:clone' do
24
+ run_locally do
25
+ within git_copy_plugin.repo_cache_path do
26
+ git_copy_plugin.update
27
+ end
28
+ end
29
+ end
30
+
31
+ desc 'Copy repo to releases'
32
+ task create_release: :'git_copy:update' do
33
+ run_locally do
34
+ within git_copy_plugin.repo_cache_path do
35
+ git_copy_plugin.prepare_release
36
+ end
37
+ end
38
+
39
+ on release_roles :all do
40
+ git_copy_plugin.release
41
+ end
42
+ end
43
+
44
+ desc 'Determine the revision that will be deployed'
45
+ task set_current_revision: :'git_copy:update' do
46
+ run_locally do
47
+ within git_copy_plugin.repo_cache_path do
48
+ set :current_revision, git_copy_plugin.fetch_revision
49
+ end
50
+ end
51
+ end
52
+
53
+ desc 'Clean repo cache'
54
+ task :cleanup do
55
+ run_locally do
56
+ git_copy_plugin.cleanup
57
+ end
58
+ end
59
+ end
@@ -3,6 +3,6 @@ module Capistrano
3
3
  # GitCopy
4
4
  module GitCopy
5
5
  # gem version
6
- VERSION = '1.2.1'
6
+ VERSION = '1.3.0'
7
7
  end
8
8
  end
@@ -34,7 +34,7 @@ import tarfile
34
34
  from zipfile import ZipFile, ZipInfo, ZIP_DEFLATED
35
35
  import re
36
36
 
37
- __version__ = "1.13"
37
+ __version__ = "1.15"
38
38
 
39
39
 
40
40
  class GitArchiver(object):
@@ -306,10 +306,8 @@ class GitArchiver(object):
306
306
  file_name = path.basename(repo_file_path)
307
307
  main_repo_file_path = path.join(repo_path, repo_file_path) # file path relative to the main repo
308
308
 
309
- # Only list symlinks and files that don't start with git.
310
- if file_name.startswith(".git") or (
311
- not path.islink(main_repo_file_path) and path.isdir(main_repo_file_path)
312
- ):
309
+ # Only list symlinks and files.
310
+ if not path.islink(main_repo_file_path) and path.isdir(main_repo_file_path):
313
311
  continue
314
312
 
315
313
  if self.is_file_excluded(repo_abspath, repo_file_path, exclude_patterns):
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-git-copy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Schwab
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 3.1.0
19
+ version: 3.7.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: 3.7.0
22
+ version: 4.0.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 3.1.0
29
+ version: 3.7.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: 3.7.0
32
+ version: 4.0.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: bundler
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -72,7 +72,7 @@ dependencies:
72
72
  - - ">="
73
73
  - !ruby/object:Gem::Version
74
74
  version: '0'
75
- description: Copy local git repository deploy strategy for capistrano
75
+ description: Copy local git repository deploy strategy for capistrano.
76
76
  email:
77
77
  - me@ydkn.de
78
78
  executables: []
@@ -87,11 +87,9 @@ files:
87
87
  - README.md
88
88
  - Rakefile
89
89
  - capistrano-git-copy.gemspec
90
- - lib/capistrano/git/copy.rb
91
90
  - lib/capistrano/git_copy.rb
92
- - lib/capistrano/git_copy/task.rb
93
- - lib/capistrano/git_copy/tasks/deploy.cap
94
- - lib/capistrano/git_copy/utility.rb
91
+ - lib/capistrano/git_copy/scm.rb
92
+ - lib/capistrano/git_copy/tasks/git_copy.rake
95
93
  - lib/capistrano/git_copy/version.rb
96
94
  - vendor/git-archive-all/git_archive_all.py
97
95
  homepage: https://github.com/ydkn/capistrano-git-copy
@@ -117,5 +115,5 @@ rubyforge_project:
117
115
  rubygems_version: 2.5.2
118
116
  signing_key:
119
117
  specification_version: 4
120
- summary: Copy local git repository deploy strategy for capistrano
118
+ summary: Copy local git repository deploy strategy for capistrano.
121
119
  test_files: []
@@ -1 +0,0 @@
1
- STDERR.puts("[DEPRECATION] Please change \"require 'capistrano/git/copy'\" to \"require 'capistrano/git_copy'\" in your Capfile, and make sure to disable the default require in your Gemfile with 'gem \"capistrano-git-copy\", require: false\"' to make this warning disappear.")
@@ -1 +0,0 @@
1
- load File.expand_path('../tasks/deploy.cap', __FILE__)
@@ -1,70 +0,0 @@
1
- namespace :load do
2
- task :defaults do
3
- set :with_submodules, fetch(:with_submodules, true)
4
- set :git_excludes, fetch(:git_excludes, [])
5
- end
6
- end
7
-
8
- namespace :git_copy do
9
- def git_copy_utility
10
- @git_copy_utility ||= Capistrano::GitCopy::Utility.new(self)
11
- end
12
-
13
- task :wrapper do; end
14
-
15
- desc 'Check that the repository is reachable'
16
- task check: :'git_copy:wrapper' do
17
- run_locally do
18
- git_copy_utility.check
19
- end
20
- end
21
-
22
- desc 'Clone the repo to the cache'
23
- task clone: :'git_copy:wrapper' do
24
- run_locally do
25
- if git_copy_utility.test
26
- info t(:mirror_exists, at: git_copy_utility.repo_path)
27
- else
28
- git_copy_utility.clone
29
- end
30
- end
31
- end
32
-
33
- desc 'Update the repo mirror to reflect the origin state'
34
- task update: :'git_copy:clone' do
35
- run_locally do
36
- within git_copy_utility.repo_path do
37
- git_copy_utility.update
38
- end
39
- end
40
- end
41
-
42
- desc 'Copy repo to releases'
43
- task create_release: :'git_copy:update' do
44
- run_locally do
45
- within git_copy_utility.repo_path do
46
- git_copy_utility.prepare_release
47
- end
48
- end
49
-
50
- on release_roles :all do
51
- git_copy_utility.release
52
- end
53
- end
54
-
55
- desc 'Determine the revision that will be deployed'
56
- task set_current_revision: :'git_copy:update' do
57
- run_locally do
58
- within git_copy_utility.repo_path do
59
- set :current_revision, git_copy_utility.fetch_revision
60
- end
61
- end
62
- end
63
-
64
- desc 'Clean repo cache'
65
- task :cleanup do
66
- run_locally do
67
- git_copy_utility.cleanup
68
- end
69
- end
70
- end
@@ -1,219 +0,0 @@
1
- require 'tmpdir'
2
- require 'digest/md5'
3
-
4
- module Capistrano
5
- module GitCopy
6
- # Utility stuff to avoid cluttering of deploy.cap
7
- class Utility
8
- attr_reader :with_submodules
9
- attr_reader :git_excludes
10
-
11
- def initialize(context)
12
- @context = context
13
- @with_submodules = fetch(:with_submodules, true)
14
- @repo_tree = fetch(:repo_tree, false)
15
- @with_submodules = @repo_tree? false : @with_submodules # If repo_tree is specified, set with_submodules to false
16
- @git_excludes = fetch(:git_excludes, [])
17
- end
18
-
19
- # Check if repo cache exists and is valid
20
- #
21
- # @return [Boolean] indicates if repo cache exists
22
- def test
23
- if test!("[ -d #{repo_path} ]")
24
- @context.within(repo_path) do
25
- if test!(:git, :status, '>/dev/null 2>/dev/null')
26
- true
27
- else
28
- execute(:rm, '-rf', repo_path)
29
- false
30
- end
31
- end
32
- else
33
- false
34
- end
35
- end
36
-
37
- # Check if repo is accessible
38
- #
39
- # @return void
40
- def check
41
- git(:'ls-remote --heads', repo_url)
42
- end
43
-
44
- # Clone repo to cache
45
- #
46
- # @return void
47
- def clone
48
- execute(:mkdir, '-p', tmp_path)
49
-
50
- git(:clone, fetch(:repo_url), repo_path)
51
- end
52
-
53
- # Update repo and submodules to branch
54
- #
55
- # @return void
56
- def update
57
- git(:remote, :update)
58
- git(:reset, '--hard', commit_hash)
59
-
60
- # submodules
61
- if with_submodules
62
- git(:submodule, :init)
63
- git(:submodule, :update)
64
- git(:submodule, :foreach, '--recursive', :git, :submodule, :update, '--init')
65
- end
66
-
67
- # cleanup
68
- git(:clean, '-d', '-f')
69
- if with_submodules
70
- git(:submodule, :foreach, '--recursive', :git, :clean, '-d', '-f')
71
- end
72
- end
73
-
74
- # Create tar archive
75
- #
76
- # @return void
77
- def prepare_release
78
- target = @repo_tree? "HEAD:#{@repo_tree}" : 'HEAD'
79
- if with_submodules
80
- execute(git_archive_all_bin, "--prefix=''", archive_path)
81
- else
82
- git(:archive, '--format=tar', target, '|', 'gzip', "> #{archive_path}")
83
- end
84
-
85
- exclude_files_from_archive if git_excludes.count > 0
86
- end
87
-
88
- # Upload and extract release
89
- #
90
- # @return void
91
- def release
92
- remote_archive_path = File.join(fetch(:deploy_to), File.basename(archive_path))
93
-
94
- upload!(archive_path, remote_archive_path)
95
-
96
- execute(:mkdir, '-p', release_path)
97
- execute(:tar, '-f', remote_archive_path, '-x', '-C', release_path)
98
- execute(:rm, '-f', remote_archive_path)
99
- end
100
-
101
- # Set deployed revision
102
- #
103
- # @return void
104
- def fetch_revision
105
- capture(:git, 'rev-list', '--max-count=1', '--abbrev-commit', commit_hash).strip
106
- end
107
-
108
- # Cleanup repo cache
109
- #
110
- # @return void
111
- def cleanup
112
- execute(:rm, '-rf', tmp_path)
113
-
114
- info('Local repo cache was removed')
115
- end
116
-
117
- # Temporary path for all git-copy operations
118
- #
119
- # @return [String]
120
- def tmp_path
121
- @_tmp_path ||= File.join(Dir.tmpdir, deploy_id)
122
- end
123
-
124
- # Path to repo cache
125
- #
126
- # @return [String]
127
- def repo_path
128
- @_repo_path ||= File.join(tmp_path, 'repo')
129
- end
130
-
131
- # Path to archive
132
- #
133
- # @return [String]
134
- def archive_path
135
- @_archive_path ||= File.join(tmp_path, 'archive.tar.gz')
136
- end
137
-
138
- private
139
-
140
- def fetch(*args)
141
- @context.fetch(*args)
142
- end
143
-
144
- def test!(*args)
145
- @context.test(*args)
146
- end
147
-
148
- def execute(*args)
149
- @context.execute(*args)
150
- end
151
-
152
- def capture(*args)
153
- @context.capture(*args)
154
- end
155
-
156
- def upload!(*args)
157
- @context.upload!(*args)
158
- end
159
-
160
- def info(*args)
161
- @context.info(*args)
162
- end
163
-
164
- def warn(*args)
165
- @context.warn(*args)
166
- end
167
-
168
- def git(*args)
169
- execute(:git, *args)
170
- end
171
-
172
- def git_archive_all_bin
173
- File.expand_path('../../../../vendor/git-archive-all/git_archive_all.py', __FILE__)
174
- end
175
-
176
- def deploy_id
177
- [
178
- fetch(:application),
179
- fetch(:stage),
180
- Digest::MD5.hexdigest(fetch(:repo_url))[0..7],
181
- Digest::MD5.hexdigest(Dir.getwd)[0..7]
182
- ].compact.join('_').gsub(/[^\w]/, '')
183
- end
184
-
185
- def commit_hash
186
- return @_commit_hash if @_commit_hash
187
-
188
- branch = fetch(:branch, 'master').to_s.strip
189
-
190
- if test!(:git, 'rev-parse', "origin/#{branch}", '>/dev/null 2>/dev/null')
191
- @_commit_hash = capture(:git, 'rev-parse', "origin/#{branch}").strip
192
- else
193
- @_commit_hash = capture(:git, 'rev-parse', branch).strip
194
- end
195
- end
196
- end
197
-
198
- def exclude_files_from_archive
199
- archive_dir = File.join(tmp_path, 'archive')
200
-
201
- execute :rm, '-rf', archive_dir
202
- execute :mkdir, '-p', archive_dir
203
- execute :tar, '-xzf', archive_path, '-C', archive_dir
204
-
205
- git_excludes.each do |f|
206
- file_path = File.join(archive_dir, f.gsub(/\A\//, ''))
207
-
208
- unless File.exists?(file_path)
209
- warn("#{f} does not exists!")
210
- next
211
- end
212
-
213
- FileUtils.rm_rf(file_path)
214
- end
215
-
216
- execute :tar, '-czf', archive_path, '-C', archive_dir, '.'
217
- end
218
- end
219
- end