capistrano-git-copy 0.5.0 → 0.6.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ebf8972754ecc7f4d30e9226bc5ce379c0e140b5
4
- data.tar.gz: 89e3eb756e62ffe59be1e5376caa79995021e631
3
+ metadata.gz: f0294d9a08b688020ce1e8d6a2cb9f1a34809ea8
4
+ data.tar.gz: 5187fe2733f233ccb0fa28d09e20d7c98f3ee261
5
5
  SHA512:
6
- metadata.gz: c08617c6f6d583355e3371f73efa84c385e924723e77e8b1e50ea5d7913a8b3b7ffdfd0b25ef01aee5380bbffd7456988c9c12e317b04c874e54e10f14797738
7
- data.tar.gz: 95adbebfb60bf7e59625406026c01d76146d397d4a27aa9e5a238a0a455a24ad7850d30cf3458261c8f2021a124b0ed933749eb64864002b7b8c441e78bbc118
6
+ metadata.gz: c72c8755b87d71e150d12b5549f1fa10576446d6cfc9b79821674e1cb3b2c24dd54af724084fdcd043c8c0eaf0fcc279279003d49d14d1afb165f4b00b90e84c
7
+ data.tar.gz: 97ab0f19de8b67651ebd697f8687cfcf65c41bbe0d22d2ecbd206eaef65544937860c6accbeb7b80005214a72893bdec8fa832d5f2cb3a370c7cf20543dc151c
data/README.md CHANGED
@@ -1,10 +1,6 @@
1
1
  # Capistrano::GIT::Copy
2
2
 
3
- Creates a tar archive from the locale git repository and uploads it to the remote server.
4
-
5
- ## Requirements
6
-
7
- * [git-archive-all](https://github.com/Kentzo/git-archive-all)
3
+ Creates a tar archive locally from the git repository and uploads it to the remote server.
8
4
 
9
5
  ## Setup
10
6
 
@@ -16,7 +12,7 @@ group :development do
16
12
  end
17
13
  ```
18
14
 
19
- And load it in your `Capfile`:
15
+ And require it in your `Capfile`:
20
16
 
21
17
  ```ruby
22
18
  require 'capistrano/git/copy'
@@ -28,10 +24,20 @@ Now use `git_copy` as your SCM type in your `config/deploy.rb`:
28
24
 
29
25
  ## Configuration
30
26
 
31
- You can modify any of the following Capistrano variables in your deploy.rb config.
27
+ You can modify any of the following Capistrano variables in your `deploy.rb` config.
28
+
29
+ - `git_archive_all_bin` - Set the path for the git-archive-all command. Defaults to git-archive-all found in $PATH or the included version as a fallback.
30
+ - `git_copy_tmp_path` - Temporary path where the repository is cloned to and the archive is created.
31
+
32
+ ## Notes
33
+
34
+ * Uses [git-archive-all](https://github.com/Kentzo/git-archive-all) for bundling repositories.
35
+
36
+ ## Code status
32
37
 
33
- - `git_archive_all_bin` - Set git-archive-all command. Defaults to git-archive-all found in $PATH or to included version.
34
- - `git_copy_tmp_path` - Temp path used to clone the repository and create archive.
38
+ * [![Gem Version](https://badge.fury.io/rb/capistrano-git-copy.png)](http://badge.fury.io/rb/capistrano-git-copy)
39
+ * [![Dependencies](https://gemnasium.com/ydkn/capistrano-git-copy.png?travis)](https://gemnasium.com/ydkn/capistrano-git-copy)
40
+ * [![PullReview stats](https://www.pullreview.com/github/ydkn/capistrano-git-copy/badges/master.svg?)](https://www.pullreview.com/github/ydkn/capistrano-git-copy/reviews/master)
35
41
 
36
42
  ## Contributing
37
43
 
@@ -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.0.0'
21
+ spec.add_dependency 'capistrano', '>= 3.1.0'
22
22
 
23
23
  spec.add_development_dependency 'bundler', '~> 1.3'
24
24
  spec.add_development_dependency 'rake'
@@ -12,6 +12,8 @@ end
12
12
  namespace :git_copy do
13
13
  task :wrapper do
14
14
  fail "git-archive-all binary not found" if fetch(:git_archive_all_bin).strip.length == 0
15
+
16
+ invoke 'git_copy:update_local_working_copy'
15
17
  end
16
18
 
17
19
  task :check do; end
@@ -19,25 +21,19 @@ namespace :git_copy do
19
21
 
20
22
  desc 'Create tar and upload to server'
21
23
  task update: :'git_copy:wrapper' do
22
- tmp_path = fetch(:git_copy_tmp_path)
23
- local_repo_path = File.join(tmp_path, 'repo')
24
- local_tar_file = File.join(tmp_path, 'archive.tar.gz')
25
-
26
- local_repo_url = `cd #{local_repo_path} 2>/dev/null && git config --get remote.origin.url 2>/dev/null`.strip
27
-
28
- system("rm -rf #{tmp_path}") unless fetch(:repo_url) == local_repo_url
29
- system("mkdir -p #{tmp_path}")
30
-
31
- system("if [ -d #{local_repo_path} ]; then cd #{local_repo_path} && git fetch origin; else git clone #{fetch(:repo_url)} #{local_repo_path}; fi")
24
+ # create tar with git-archive-all
25
+ system("cd #{fetch(:local_repo_path)} && #{fetch(:git_archive_all_bin)} __tmp.tar")
32
26
 
33
- system("cd #{local_repo_path} && git reset --hard origin/#{fetch(:branch, 'master')} && git submodule init && git submodule update && #{fetch(:git_archive_all_bin)} __tmp.tar")
34
- system("cd #{local_repo_path} && tar -xf __tmp.tar && cd __tmp && tar -czf #{local_tar_file} .")
27
+ # create tar.gz for upload
28
+ system("cd #{fetch(:local_repo_path)} && tar -xf __tmp.tar && cd __tmp && tar -czf #{fetch(:local_tar_file)} .")
35
29
 
30
+ # upload to all servers
36
31
  on release_roles :all do
37
- upload!(local_tar_file, "#{fetch(:tmp_dir)}/#{fetch(:application)}_#{fetch(:stage)}.tar.gz")
32
+ upload!(fetch(:local_tar_file), "#{fetch(:tmp_dir)}/#{fetch(:application)}_#{fetch(:stage)}.tar.gz")
38
33
  end
39
34
 
40
- system("rm -rf #{local_tar_file}")
35
+ # delete temporary tar.gz archive
36
+ system("rm -rf #{fetch(:local_tar_file)}")
41
37
  end
42
38
 
43
39
  desc 'Extract tar to release path'
@@ -51,10 +47,54 @@ namespace :git_copy do
51
47
 
52
48
  desc 'Determine the revision that will be deployed'
53
49
  task set_current_revision: :'git_copy:wrapper' do
54
- revision = `git rev-parse --short #{fetch(:branch, 'master')} 2>/dev/null`.strip
50
+ revision = `cd #{fetch(:local_repo_path)} && git rev-parse --short #{fetch(:branch, 'master')} 2>/dev/null`.strip
55
51
 
56
52
  on release_roles :all do
57
53
  set :current_revision, revision
58
54
  end
59
55
  end
56
+
57
+ desc 'Clean up temp dir'
58
+ task :cleanup do
59
+ tmp_path = fetch(:git_copy_tmp_path)
60
+
61
+ if File.exists?(tmp_path)
62
+ system("rm -rf #{tmp_path}")
63
+ print "Removed #{tmp_path}\n"
64
+ else
65
+ print "Nothing to cleanup (#{tmp_path} not found on filesystem)\n"
66
+ end
67
+ end
68
+
69
+ task update_local_working_copy: :'git_copy:wrapper' do
70
+ tmp_path = fetch(:git_copy_tmp_path)
71
+
72
+ set :local_repo_path, File.join(tmp_path, 'repo')
73
+ set :local_tar_file, File.join(tmp_path, 'archive.tar.gz')
74
+
75
+ # track if the repo url has changed
76
+ local_repo_url = `cd #{fetch(:local_repo_path)} 2>/dev/null && git config --get remote.origin.url 2>/dev/null`.strip
77
+ system("rm -rf #{tmp_path}") unless fetch(:repo_url) == local_repo_url
78
+
79
+ # prepare temp directory
80
+ system("mkdir -p #{tmp_path}")
81
+
82
+ # clone or update repository
83
+ if File.exists?(fetch(:local_repo_path))
84
+ system("cd #{fetch(:local_repo_path)} && git fetch origin")
85
+ else
86
+ system("git clone #{fetch(:repo_url)} #{fetch(:local_repo_path)}")
87
+ end
88
+
89
+ # reset repository
90
+ system("cd #{fetch(:local_repo_path)} && git reset --hard origin/#{fetch(:branch, 'master')} && git submodule init && git submodule update")
91
+
92
+ # init and update submodules
93
+ system("cd #{fetch(:local_repo_path)} && git submodule init && git submodule update")
94
+ system("cd #{fetch(:local_repo_path)} && git submodule foreach --recursive git submodule update --init")
95
+
96
+ # clean up working directory
97
+ system("cd #{fetch(:local_repo_path)} && git clean -d -f")
98
+ system("cd #{fetch(:local_repo_path)} && git submodule foreach --recursive git clean -d -f")
99
+ end
60
100
  end
@@ -2,7 +2,7 @@ module Capistrano
2
2
  module Git
3
3
  module Copy
4
4
  # gem version
5
- VERSION = '0.5.0'
5
+ VERSION = '0.6.0.rc1'
6
6
  end
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-git-copy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Schwab
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-20 00:00:00.000000000 Z
11
+ date: 2014-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 3.0.0
19
+ version: 3.1.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 3.0.0
26
+ version: 3.1.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -101,9 +101,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
101
101
  version: '0'
102
102
  required_rubygems_version: !ruby/object:Gem::Requirement
103
103
  requirements:
104
- - - ">="
104
+ - - ">"
105
105
  - !ruby/object:Gem::Version
106
- version: '0'
106
+ version: 1.3.1
107
107
  requirements: []
108
108
  rubyforge_project:
109
109
  rubygems_version: 2.2.2