capistrano-gitflow 1.5.5 → 1.5.6

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: 223f9eb5e5673d428371970d29385b92baa58544
4
- data.tar.gz: 3ebb90f3c7bdf82d08f19c9ec656dae0e6d8f806
3
+ metadata.gz: e4efd39dbc0cd6f84c60395a3f4aadd68e0e12fc
4
+ data.tar.gz: 780070274eda305cd847d7ff2c477910ad55955f
5
5
  SHA512:
6
- metadata.gz: d77acedbcbf5b15861a91ae936b0d8117a3c9b1109abba96e9041be7be5660c2468842bcc3820e242cff49b451c4c9514bd87fd147ea67035cf5b75b055d4995
7
- data.tar.gz: 6d4b964afde31dd00ac7b157ae1e18181640e446aef9c31281e9b9bfbc8f119b5c65fb8fa58c8e70dc5b0996a50e59f32a1e4ccb4c212b39c031c77ab1f39887
6
+ metadata.gz: 8bb3b196c77f41f94c655c982d1fea1da8c55971496f635486fb57fbec4db91872b64a48f30506985b42acb3d09305b011ff4c86ec69152fa1f4b0b03ec7cd18
7
+ data.tar.gz: f70dfa30100aa35a6b692dac8de52038d7ff06d5f0321552c288eb5fbf317d6bf239d7eac9bf589ada4589985bdff6d2f8ececc4ae6458e427f25401edd85806
data/README.rdoc CHANGED
@@ -8,7 +8,7 @@ Gitflow simply adds some tagging/logging/workflow magic.
8
8
  $ cap production deploy # 'master' goes to production
9
9
 
10
10
  # AFTER
11
- $ cap deploy
11
+ $ cap deploy
12
12
  # 'master' goes to staging; tag staging-YYYY-MM-DD.X created
13
13
 
14
14
  $ cap production deploy
@@ -18,10 +18,10 @@ Gitflow simply adds some tagging/logging/workflow magic.
18
18
  # tag 'production-YYYY-MM-DD-X' created; points to staging-YYYY-MM-DD-X
19
19
 
20
20
  # BONUS
21
- $ cap gitflow:commit_log
21
+ $ cap gitflow:commit_log
22
22
  # displays a commit log pushed to staging
23
-
24
- $ cap production gitflow:commit_log
23
+
24
+ $ cap production gitflow:commit_log
25
25
  # displays a commit log of what will be pushed to production
26
26
 
27
27
  == INSTALLATION
@@ -73,6 +73,15 @@ gitflow will automatically:
73
73
  * push the code and tags to the remote "origin"
74
74
  * and run the normal deploy task for the production stage.
75
75
 
76
+ === CLEANING OLD TAGS:
77
+ Whenever you want to clean the old tags generated by this gem you can simply run this command.
78
+
79
+ cap <stage_name> gitflow:cleanup_tags
80
+
81
+ This will delete all tags that have this pattern [staging|production]{1}-[0-9]{4}-[0-9]{2}-[0-9]{2}\-([0-9]*)
82
+ The task will delete first the local tasks and then the remote tasks from your git repository.
83
+ For more details you can check here: https://github.com/technicalpickles/capistrano-gitflow/blob/master/lib/capistrano/gitflow/helpers/helper.rb#L219
84
+
76
85
  === NOTES:
77
86
 
78
87
  * you may need to wipe out the cached-copy on the remote server that cap uses when switching to this workflow; I have seen situations where the cached copy cannot cleanly checkout to the new branch/tag. it's safe to try without wiping it out first, it will fail gracefully.
@@ -31,7 +31,7 @@ module CapistranoGitFlow
31
31
  end
32
32
 
33
33
  def gitflow_capistrano_tag
34
- defined?(capistrano_configuration) ? capistrano_configuration[:tag] : ENV['TAG']
34
+ defined?(capistrano_configuration) ? capistrano_configuration[:tag] : ENV['TAG']
35
35
  end
36
36
 
37
37
  def gitflow_last_tag_matching(pattern)
@@ -86,12 +86,12 @@ module CapistranoGitFlow
86
86
  set :origin_sha, `git log --pretty=format:%H #{fetch(:local_branch)} -1`
87
87
  unless fetch(:local_sha) == fetch(:origin_sha)
88
88
  abort """
89
- Your #{fetch(:local_branch)} branch is not up to date with origin/#{fetch(:local_branch)}.
90
- Please make sure you have pulled and pushed all code before deploying:
89
+ Your #{fetch(:local_branch)} branch is not up to date with origin/#{fetch(:local_branch)}.
90
+ Please make sure you have pulled and pushed all code before deploying:
91
91
 
92
- git pull origin #{fetch(:local_branch)}
93
- # run tests, etc
94
- git push origin #{fetch(:local_branch)}
92
+ git pull origin #{fetch(:local_branch)}
93
+ # run tests, etc
94
+ git push origin #{fetch(:local_branch)}
95
95
 
96
96
  """
97
97
  end
@@ -108,7 +108,7 @@ git push origin #{fetch(:local_branch)}
108
108
  task_exists = gitflow_find_task(rake_task_name)
109
109
  if !task_exists.nil? && task_exists!= false
110
110
 
111
- gitflow_execute_task(rake_task_name)
111
+ gitflow_execute_task(rake_task_name)
112
112
 
113
113
  system "git push --tags origin #{fetch(:local_branch)}"
114
114
  if $? != 0
@@ -216,5 +216,26 @@ git push origin #{fetch(:local_branch)}
216
216
  set :branch, new_production_tag
217
217
  end
218
218
 
219
+ def gitflow_cleanup_tags
220
+ return if fetch(:gitflow_keep_tags).nil?
221
+ tags = `git log --tags --pretty="format:%at %D" | grep 'tag:' |sort -n | awk '{$1=""; print $0}' | tr "," "\n"| sed 's/tag:*//' | sed -e 's/^[ \t]*//'`
222
+ tags = tags.split.reject{|tag| tag.blank? }
223
+ tags = tags.select { |tag| tag =~ /^(staging|production){1}-[0-9]{4}-[0-9]{2}-[0-9]{2}\-([0-9]*)/ }
224
+ if tags.count >= fetch(:gitflow_keep_tags)
225
+ puts "Keeping #{fetch(:gitflow_keep_tags)} Tags from total #{tags.count}"
226
+ tags_to_delete = (tags - tags.last(fetch(:gitflow_keep_tags)))
227
+ if tags_to_delete.any?
228
+ system "git tag -d #{tags_to_delete.join(' ')}"
229
+ tags_with_dots = tags_to_delete.map{ |tag| tag.prepend(':refs/tags/') }.join(' ')
230
+ system "git push origin #{tags_with_dots}"
231
+ else
232
+ puts "No tags to delete"
233
+ end
234
+ else
235
+ puts "No tags to delete"
236
+ end
237
+
238
+ end
239
+
219
240
  end
220
241
  end
@@ -6,7 +6,7 @@ module CapistranoGitFlow # Returns the version of the currently loaded Rails as
6
6
  module VERSION
7
7
  MAJOR = 1
8
8
  MINOR = 5
9
- TINY = 5
9
+ TINY = 6
10
10
  PRE = nil
11
11
 
12
12
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
@@ -1,6 +1,6 @@
1
1
 
2
2
  namespace :gitflow do
3
-
3
+
4
4
  task :verify_up_to_date do
5
5
  gitflow_verify_up_to_date
6
6
  end
@@ -25,7 +25,11 @@ namespace :gitflow do
25
25
  gitflow_tag_production
26
26
  end
27
27
 
28
- gitflow_callbacks
28
+ task :cleanup_tags do
29
+ gitflow_cleanup_tags
30
+ end
31
+
32
+ gitflow_callbacks
29
33
  end
30
34
 
31
35
  namespace :deploy do
@@ -35,4 +39,3 @@ namespace :deploy do
35
39
  end
36
40
  end
37
41
  end
38
-
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-gitflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.5
4
+ version: 1.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joshua Nichols
@@ -93,7 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
93
93
  version: '0'
94
94
  requirements: []
95
95
  rubyforge_project:
96
- rubygems_version: 2.5.1
96
+ rubygems_version: 2.6.3
97
97
  signing_key:
98
98
  specification_version: 3
99
99
  summary: Capistrano recipe for a deployment workflow based on git tags