rake-deveiate 0.16.0 → 0.16.1
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
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/History.md +6 -0
- data/lib/rake/deveiate.rb +1 -1
- data/lib/rake/deveiate/git.rb +524 -0
- metadata +2 -1
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bbd17de1c4ec17eea0db8875fc492b5d0805a0d82aa7de27b23e2b01b2c7a4ff
|
4
|
+
data.tar.gz: f0c875ad3e5210dbef77df28ed6250e9c48cd44a0a9919e0155b94073244a9d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 796a4604fbd50022c1cb5524de7e04615b4efcd9b15d9527cd0373b02efd77539e2b21aae7ae14edf0ed861c6b5c1d130f363359cdff99b9e7d37bfa4beb1671
|
7
|
+
data.tar.gz: b6c7300e3a40aaa5fa8d890621f88d59b1a1f51ae7257eb803dd5e6573d3d56d626cbb87f5ee1d0818b667c4d16be7434752eaf8118a0bbb33c298b65717f7da
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/History.md
CHANGED
data/lib/rake/deveiate.rb
CHANGED
@@ -35,7 +35,7 @@ class Rake::DevEiate < Rake::TaskLib
|
|
35
35
|
VERSION_PATTERN = /VERSION\s*=\s*(?<quote>['"])(?<version>\d+(\.\d+){2}.*)\k<quote>/
|
36
36
|
|
37
37
|
# The version of this library
|
38
|
-
VERSION = '0.16.
|
38
|
+
VERSION = '0.16.1'
|
39
39
|
|
40
40
|
# The server to release to by default
|
41
41
|
DEFAULT_GEMSERVER = 'https://rubygems.org/'
|
@@ -0,0 +1,524 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'tempfile'
|
5
|
+
require 'shellwords'
|
6
|
+
require 'git'
|
7
|
+
require 'tty/editor'
|
8
|
+
|
9
|
+
require 'rake/deveiate' unless defined?( Rake::DevEiate )
|
10
|
+
require 'rake/deveiate/git-refinements'
|
11
|
+
|
12
|
+
using Rake::DevEiate::GitRefinements
|
13
|
+
|
14
|
+
|
15
|
+
# Git version-control tasks
|
16
|
+
module Rake::DevEiate::Git
|
17
|
+
|
18
|
+
# The name of the file to edit for the commit message
|
19
|
+
COMMIT_MSG_FILE = Pathname( 'commit-msg.txt' )
|
20
|
+
|
21
|
+
# The name of the ignore file
|
22
|
+
IGNORE_FILE = Rake::DevEiate::PROJECT_DIR + '.gitignore'
|
23
|
+
|
24
|
+
# Colors for presenting file statuses
|
25
|
+
STATUS_COLORS = {
|
26
|
+
'M' => [:blue], # modified
|
27
|
+
'A' => [:bold, :green], # added
|
28
|
+
'R' => [:bold, :black], # removed
|
29
|
+
'C' => [:white], # clean
|
30
|
+
'!' => [:bold, :white, :on_red], # missing
|
31
|
+
'?' => [:yellow], # not tracked
|
32
|
+
'I' => [:dim, :white], # ignored
|
33
|
+
}
|
34
|
+
|
35
|
+
# File indentation
|
36
|
+
FILE_INDENT = " • "
|
37
|
+
|
38
|
+
|
39
|
+
### Define version-control tasks
|
40
|
+
def define_tasks
|
41
|
+
super if defined?( super )
|
42
|
+
|
43
|
+
return unless self.is_git_working_copy?
|
44
|
+
|
45
|
+
# :TODO: Should be refactored up with the same code in the hg lib.
|
46
|
+
file COMMIT_MSG_FILE.to_s do |task|
|
47
|
+
commit_log = Pathname( task.name )
|
48
|
+
|
49
|
+
edit_git_commit_log( commit_log )
|
50
|
+
unless commit_log.size?
|
51
|
+
self.prompt.error "Empty commit message; aborting."
|
52
|
+
commit_log.unlink if commit_log.exist?
|
53
|
+
abort
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
CLEAN.include( COMMIT_MSG_FILE.to_s )
|
58
|
+
|
59
|
+
namespace :git do
|
60
|
+
|
61
|
+
desc "Prepare for a new release"
|
62
|
+
task( :prerelease, &method(:do_git_prerelease) )
|
63
|
+
|
64
|
+
desc "Check for new files and offer to add/ignore/delete them."
|
65
|
+
task( :newfiles, &method(:do_git_newfiles) )
|
66
|
+
task :add => :newfiles
|
67
|
+
|
68
|
+
desc "Pull and update from the default repo"
|
69
|
+
task( :pull, &method(:do_git_pull) )
|
70
|
+
|
71
|
+
desc "Pull and update without confirmation"
|
72
|
+
task( :pull_without_confirmation, &method(:do_git_pull_without_confirmation) )
|
73
|
+
|
74
|
+
desc "Update to tip"
|
75
|
+
task( :update, &method(:do_git_update) )
|
76
|
+
|
77
|
+
desc "Clobber all changes (git up -C)"
|
78
|
+
task( :update_and_clobber, &method(:do_git_update_and_clobber) )
|
79
|
+
|
80
|
+
desc "Git-specific pre-checkin hook"
|
81
|
+
task :precheckin => [ :pull, :newfiles, :check_for_changes ]
|
82
|
+
|
83
|
+
desc "Check the current code in if tests pass"
|
84
|
+
task( :checkin => COMMIT_MSG_FILE.to_s, &method(:do_git_checkin) )
|
85
|
+
|
86
|
+
desc "Git-specific pre-release hook"
|
87
|
+
task :prerelease => 'git:check_history'
|
88
|
+
|
89
|
+
desc "Git-specific post-release hook"
|
90
|
+
task( :postrelease, &method(:do_git_postrelease) )
|
91
|
+
|
92
|
+
desc "Push to the default origin repo (if there is one)"
|
93
|
+
task( :push, &method(:do_git_push) )
|
94
|
+
|
95
|
+
desc "Push to the default repo without confirmation"
|
96
|
+
task :push_without_confirmation do |task, args|
|
97
|
+
self.git.push
|
98
|
+
end
|
99
|
+
|
100
|
+
desc "Check the history file to ensure it contains an entry for each release tag"
|
101
|
+
task( :check_history, &method(:do_git_check_history) )
|
102
|
+
|
103
|
+
desc "Generate and edit a new version entry in the history file"
|
104
|
+
task( :update_history, &method(:do_git_update_history) )
|
105
|
+
|
106
|
+
task( :check_for_changes, &method(:do_git_check_for_changes) )
|
107
|
+
task( :debug, &method(:do_git_debug) )
|
108
|
+
end
|
109
|
+
|
110
|
+
|
111
|
+
# Hook some generic tasks to the mercurial-specific ones
|
112
|
+
task :checkin => 'git:checkin'
|
113
|
+
task :precheckin => 'git:precheckin'
|
114
|
+
|
115
|
+
task :prerelease => 'git:prerelease'
|
116
|
+
task :postrelease => 'git:postrelease'
|
117
|
+
|
118
|
+
desc "Update the history file with the changes since the last version tag."
|
119
|
+
task :update_history => 'git:update_history'
|
120
|
+
|
121
|
+
task :debug => 'git:debug'
|
122
|
+
rescue ::Exception => err
|
123
|
+
$stderr.puts "%s while defining Git tasks: %s" % [ err.class.name, err.message ]
|
124
|
+
raise
|
125
|
+
end
|
126
|
+
|
127
|
+
|
128
|
+
### Returns +true+ if the current directory looks like a Git working copy.
|
129
|
+
def is_git_working_copy?
|
130
|
+
return File.directory?( '.git' )
|
131
|
+
end
|
132
|
+
|
133
|
+
|
134
|
+
### The body of the git:prerelease task.
|
135
|
+
def do_git_prerelease( task, args )
|
136
|
+
uncommitted_files = self.git.status( n: true )
|
137
|
+
unless uncommitted_files.empty?
|
138
|
+
self.show_git_file_statuses( uncommitted_files )
|
139
|
+
|
140
|
+
fail unless self.prompt.yes?( "Release anyway?" ) do |q|
|
141
|
+
q.default( false )
|
142
|
+
end
|
143
|
+
|
144
|
+
self.prompt.warn "Okay, releasing with uncommitted versions."
|
145
|
+
end
|
146
|
+
|
147
|
+
pkg_version_tag = self.current_git_version_tag
|
148
|
+
rev = self.git.identity.id
|
149
|
+
|
150
|
+
# Look for a tag for the current release version, and if it exists abort
|
151
|
+
if self.git.tags.find {|tag| tag.name == pkg_version_tag }
|
152
|
+
self.prompt.error "Version #{self.version} already has a tag."
|
153
|
+
fail
|
154
|
+
end
|
155
|
+
|
156
|
+
# Tag the current rev
|
157
|
+
self.prompt.ok "Tagging rev %s as %s" % [ rev, pkg_version_tag ]
|
158
|
+
self.git.tag( pkg_version_tag, rev: rev )
|
159
|
+
|
160
|
+
# Sign the tag
|
161
|
+
if self.git.extension_enabled?( :gpg )
|
162
|
+
if self.prompt.yes?( "Sign %s?" % [pkg_version_tag] )
|
163
|
+
self.git.sign( pkg_version_tag, message: "Signing %s" % [pkg_version_tag] )
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
|
169
|
+
### The body of the git:postrelease task.
|
170
|
+
def do_git_postrelease( task, args )
|
171
|
+
if self.git.status( 'checksum', unknown: true ).any?
|
172
|
+
self.prompt.say "Adding release artifacts..."
|
173
|
+
self.git.add( 'checksum' )
|
174
|
+
self.git.commit( 'checksum', message: "Adding release checksum." )
|
175
|
+
end
|
176
|
+
|
177
|
+
if self.prompt.yes?( "Move released changesets to public phase?" )
|
178
|
+
self.prompt.say "Publicising changesets..."
|
179
|
+
self.git.phase( public: true )
|
180
|
+
end
|
181
|
+
|
182
|
+
if self.git.extension_enabled?( :topic )
|
183
|
+
current_topic = self.git.topic
|
184
|
+
if current_topic && self.prompt.yes?( "Clear the current topic (%s)?" %[current_topic] )
|
185
|
+
self.git.topic( clear: true )
|
186
|
+
end
|
187
|
+
end
|
188
|
+
|
189
|
+
Rake::Task['git:push'].invoke
|
190
|
+
end
|
191
|
+
|
192
|
+
|
193
|
+
### The body of the git:newfiles task.
|
194
|
+
def do_git_newfiles( task, args )
|
195
|
+
self.prompt.say "Checking for new files..."
|
196
|
+
status = self.git.status
|
197
|
+
|
198
|
+
files_to_add = status.changed.keys
|
199
|
+
files_to_ignore = []
|
200
|
+
files_to_delete = []
|
201
|
+
|
202
|
+
status.untracked.each do |path, status_file|
|
203
|
+
description = " %s: untracked" % [ path ]
|
204
|
+
action = self.prompt.select( description ) do |menu|
|
205
|
+
menu.choice "add", :a
|
206
|
+
menu.choice "ignore", :i
|
207
|
+
menu.choice "skip", :s
|
208
|
+
menu.choice "delete", :d
|
209
|
+
end
|
210
|
+
|
211
|
+
case action
|
212
|
+
when :a
|
213
|
+
files_to_add << path
|
214
|
+
when :i
|
215
|
+
files_to_ignore << path
|
216
|
+
when :d
|
217
|
+
files_to_delete << path
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
unless files_to_add.empty?
|
222
|
+
$stderr.puts "Adding: %p" % [ files_to_add ]
|
223
|
+
self.git.add( files_to_add )
|
224
|
+
end
|
225
|
+
|
226
|
+
unless files_to_ignore.empty?
|
227
|
+
git_ignore_files( *files_to_ignore )
|
228
|
+
end
|
229
|
+
|
230
|
+
unless files_to_delete.empty?
|
231
|
+
delete_extra_files( *files_to_delete )
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
|
236
|
+
### The body of the git:pull task.
|
237
|
+
def do_git_pull( task, args )
|
238
|
+
origin = self.git.remote
|
239
|
+
|
240
|
+
if ( origin_url = origin.url )
|
241
|
+
if self.prompt.yes?( "Pull and update from '#{origin_url}'?" )
|
242
|
+
self.prompt.say "Fetching..."
|
243
|
+
self.git.fetch( 'origin', prune: true )
|
244
|
+
self.prompt.say "Pulling..."
|
245
|
+
self.git.pull( 'origin', self.git.current_branch )
|
246
|
+
end
|
247
|
+
else
|
248
|
+
trace "Skipping pull: No 'origin' remote."
|
249
|
+
end
|
250
|
+
end
|
251
|
+
|
252
|
+
|
253
|
+
### The body of the git:pull_without_confirmation task.
|
254
|
+
def do_git_pull_without_confirmation( task, args )
|
255
|
+
self.git.pull
|
256
|
+
end
|
257
|
+
|
258
|
+
|
259
|
+
### The body of the git:update task.
|
260
|
+
def do_git_update( task, args )
|
261
|
+
self.git.pull_update
|
262
|
+
end
|
263
|
+
|
264
|
+
|
265
|
+
### The body of the git:update_and_clobber task.
|
266
|
+
def do_git_update_and_clobber( task, args )
|
267
|
+
self.git.update( clean: true )
|
268
|
+
end
|
269
|
+
|
270
|
+
|
271
|
+
### The body of the checkin task.
|
272
|
+
def do_git_checkin( task, args )
|
273
|
+
commit_msg = COMMIT_MSG_FILE.read.strip
|
274
|
+
|
275
|
+
self.prompt.say( "---", color: :cyan )
|
276
|
+
self.prompt.say( commit_msg )
|
277
|
+
self.prompt.say( "---", color: :cyan )
|
278
|
+
|
279
|
+
if self.prompt.yes?( "Continue with checkin?" )
|
280
|
+
self.git.commit( COMMIT_MSG_FILE.read )
|
281
|
+
rm_f COMMIT_MSG_FILE
|
282
|
+
else
|
283
|
+
abort
|
284
|
+
end
|
285
|
+
Rake::Task[ 'git:push' ].invoke
|
286
|
+
end
|
287
|
+
|
288
|
+
|
289
|
+
### The body of the push task.
|
290
|
+
def do_git_push( task, args )
|
291
|
+
git = self.git
|
292
|
+
origin = git.remote
|
293
|
+
|
294
|
+
if (origin_url = origin.url)
|
295
|
+
if self.prompt.yes?( "Push to '#{origin_url}'?" ) {|q| q.default(false) }
|
296
|
+
unless git.is_remote_branch?( git.current_branch )
|
297
|
+
if self.prompt.yes?( "Create tracking branch?" ) {|q| q.default(true) }
|
298
|
+
tracking_branch = "origin/%s" % [ git.current_branch ]
|
299
|
+
git.cmd( 'branch', ['-u', tracking_branch] )
|
300
|
+
end
|
301
|
+
end
|
302
|
+
|
303
|
+
git.push( 'origin', git.current_branch )
|
304
|
+
self.prompt.ok "Done."
|
305
|
+
else
|
306
|
+
abort
|
307
|
+
end
|
308
|
+
else
|
309
|
+
trace "Skipping push: No 'default' path."
|
310
|
+
end
|
311
|
+
end
|
312
|
+
|
313
|
+
|
314
|
+
### Check the history file against the list of release tags in the working copy
|
315
|
+
### and ensure there's an entry for each tag.
|
316
|
+
def do_git_check_history( task, args )
|
317
|
+
unless self.history_file.readable?
|
318
|
+
self.prompt.error "History file is missing or unreadable."
|
319
|
+
abort
|
320
|
+
end
|
321
|
+
|
322
|
+
self.prompt.say "Checking history..."
|
323
|
+
missing_tags = self.get_git_unhistoried_version_tags
|
324
|
+
|
325
|
+
unless missing_tags.empty?
|
326
|
+
self.prompt.error "%s needs updating; missing entries for tags: %s" %
|
327
|
+
[ self.history_file, missing_tags.join(', ') ]
|
328
|
+
abort
|
329
|
+
end
|
330
|
+
end
|
331
|
+
|
332
|
+
|
333
|
+
### Check the status of the repo and ensure there are outstanding changes. If there
|
334
|
+
### are no changes, abort.
|
335
|
+
def do_git_check_for_changes( task, args )
|
336
|
+
# :FIXME: Figure out a better way to do this.
|
337
|
+
unless self.git.status.any?( &:type )
|
338
|
+
self.prompt.error "Working copy is clean."
|
339
|
+
abort
|
340
|
+
end
|
341
|
+
end
|
342
|
+
|
343
|
+
|
344
|
+
### Generate a new history file entry for the current version.
|
345
|
+
def do_git_update_history( task, args ) # Needs refactoring
|
346
|
+
unless self.history_file.readable?
|
347
|
+
self.prompt.error "History file is missing or unreadable."
|
348
|
+
abort
|
349
|
+
end
|
350
|
+
|
351
|
+
version_tag = self.current_git_version_tag
|
352
|
+
previous_tag = self.previous_git_version_tag
|
353
|
+
self.prompt.say "Updating history for %s..." % [ version_tag ]
|
354
|
+
|
355
|
+
if self.get_history_file_versions.include?( version_tag )
|
356
|
+
self.trace "History file already includes a section for %s" % [ version_tag ]
|
357
|
+
abort
|
358
|
+
end
|
359
|
+
|
360
|
+
header, rest = self.history_file.read( encoding: 'utf-8' ).
|
361
|
+
split( /(?<=^---)/m, 2 )
|
362
|
+
|
363
|
+
self.trace "Rest is: %p" % [ rest ]
|
364
|
+
if !rest || rest.empty?
|
365
|
+
self.prompt.warn "History file needs a header with a `---` marker to support updating."
|
366
|
+
self.prompt.say "Adding an auto-generated one."
|
367
|
+
rest = header
|
368
|
+
header = self.load_and_render_template( 'History.erb', self.history_file )
|
369
|
+
end
|
370
|
+
|
371
|
+
header_char = self.header_char_for( self.history_file )
|
372
|
+
ext = self.history_file.extname
|
373
|
+
log_entries = if previous_tag
|
374
|
+
self.git.log( rev: "#{previous_tag}~-2::" )
|
375
|
+
else
|
376
|
+
self.git.log
|
377
|
+
end
|
378
|
+
|
379
|
+
Tempfile.create( ['History', ext], encoding: 'utf-8' ) do |tmp_copy|
|
380
|
+
tmp_copy.print( header )
|
381
|
+
tmp_copy.puts
|
382
|
+
|
383
|
+
tmp_copy.puts "%s %s [%s] %s" % [
|
384
|
+
header_char * 2,
|
385
|
+
version_tag,
|
386
|
+
Date.today.strftime( '%Y-%m-%d' ),
|
387
|
+
self.authors.first,
|
388
|
+
]
|
389
|
+
|
390
|
+
tmp_copy.puts
|
391
|
+
log_entries.each do |entry|
|
392
|
+
tmp_copy.puts "- %s" % [ entry.message ]
|
393
|
+
end
|
394
|
+
tmp_copy.puts
|
395
|
+
tmp_copy.puts
|
396
|
+
|
397
|
+
tmp_copy.print( rest )
|
398
|
+
tmp_copy.close
|
399
|
+
|
400
|
+
TTY::Editor.open( tmp_copy.path )
|
401
|
+
|
402
|
+
if File.size?( tmp_copy.path )
|
403
|
+
cp( tmp_copy.path, self.history_file )
|
404
|
+
else
|
405
|
+
self.prompt.error "Empty file: aborting."
|
406
|
+
end
|
407
|
+
end
|
408
|
+
|
409
|
+
end
|
410
|
+
|
411
|
+
|
412
|
+
### Show debugging information.
|
413
|
+
def do_git_debug( task, args )
|
414
|
+
self.prompt.say( "Git Info", color: :bright_green )
|
415
|
+
|
416
|
+
if self.is_git_working_copy?
|
417
|
+
self.prompt.say( "Release tag prefix: " )
|
418
|
+
self.prompt.say( self.release_tag_prefix, color: :bold )
|
419
|
+
|
420
|
+
self.prompt.say( "Version tags:" )
|
421
|
+
self.get_git_version_tag_names.each do |tag|
|
422
|
+
self.prompt.say( '- ' )
|
423
|
+
self.prompt.say( tag, color: :bold )
|
424
|
+
end
|
425
|
+
|
426
|
+
self.prompt.say( "History file versions:" )
|
427
|
+
self.get_history_file_versions.each do |tag|
|
428
|
+
self.prompt.say( '- ' )
|
429
|
+
self.prompt.say( tag, color: :bold )
|
430
|
+
end
|
431
|
+
|
432
|
+
self.prompt.say( "Unhistoried version tags:" )
|
433
|
+
self.get_git_unhistoried_version_tags.each do |tag|
|
434
|
+
self.prompt.say( '- ' )
|
435
|
+
self.prompt.say( tag, color: :bold )
|
436
|
+
end
|
437
|
+
else
|
438
|
+
self.prompt.say( "Doesn't appear to be a Git repository." )
|
439
|
+
end
|
440
|
+
|
441
|
+
self.prompt.say( "\n" )
|
442
|
+
end
|
443
|
+
|
444
|
+
#
|
445
|
+
# utility methods
|
446
|
+
#
|
447
|
+
|
448
|
+
### Return a Git::Repo for the directory rake was invoked in, creating it if
|
449
|
+
### necessary.
|
450
|
+
def git
|
451
|
+
@git ||= Git.open( Rake::DevEiate::PROJECT_DIR )
|
452
|
+
end
|
453
|
+
|
454
|
+
|
455
|
+
### Given a +status_hash+ like that returned by Git::Repo.status, return a
|
456
|
+
### string description of the files and their status.
|
457
|
+
def show_git_file_statuses( statuses )
|
458
|
+
lines = statuses.map do |entry|
|
459
|
+
status_color = STATUS_COLORS[ entry.status ]
|
460
|
+
" %s: %s" % [
|
461
|
+
self.pastel.white( entry.path.to_s ),
|
462
|
+
self.pastel.decorate( entry.status_description, *status_color ),
|
463
|
+
]
|
464
|
+
end
|
465
|
+
|
466
|
+
self.prompt.say( self.pastel.headline "Uncommitted files:" )
|
467
|
+
self.prompt.say( lines.join("\n") )
|
468
|
+
end
|
469
|
+
|
470
|
+
|
471
|
+
### Fetch the name of the current version's tag.
|
472
|
+
def current_git_version_tag
|
473
|
+
return [ self.release_tag_prefix, self.version ].join
|
474
|
+
end
|
475
|
+
|
476
|
+
|
477
|
+
### Fetch the name of the tag for the previous version.
|
478
|
+
def previous_git_version_tag
|
479
|
+
return self.get_git_version_tag_names.first
|
480
|
+
end
|
481
|
+
|
482
|
+
|
483
|
+
### Fetch the list of names of tags that match the versioning scheme of this
|
484
|
+
### project.
|
485
|
+
def get_git_version_tag_names
|
486
|
+
tag_pattern = self.release_tag_pattern
|
487
|
+
return self.git.tags.map( &:name ).grep( tag_pattern )
|
488
|
+
end
|
489
|
+
|
490
|
+
|
491
|
+
### Read the list of tags and return any that don't have a corresponding section
|
492
|
+
### in the history file.
|
493
|
+
def get_git_unhistoried_version_tags( include_current_version: true )
|
494
|
+
release_tags = self.get_git_version_tag_names
|
495
|
+
release_tags.unshift( self.current_git_version_tag ) if include_current_version
|
496
|
+
|
497
|
+
self.get_history_file_versions.each do |tag|
|
498
|
+
release_tags.delete( tag )
|
499
|
+
end
|
500
|
+
|
501
|
+
return release_tags
|
502
|
+
end
|
503
|
+
|
504
|
+
|
505
|
+
### Generate a commit log and invoke the user's editor on it.
|
506
|
+
def edit_git_commit_log( logfile )
|
507
|
+
diff = self.git.diff
|
508
|
+
|
509
|
+
TTY::Editor.open( logfile, text: diff )
|
510
|
+
end
|
511
|
+
|
512
|
+
|
513
|
+
### Add the list of +pathnames+ to the .gitignore list.
|
514
|
+
def git_ignore_files( *pathnames )
|
515
|
+
self.trace "Ignoring %d files." % [ pathnames.length ]
|
516
|
+
|
517
|
+
IGNORE_FILE.open( File::CREAT|File::WRONLY|File::APPEND, 0644 ) do |fh|
|
518
|
+
fh.puts( pathnames )
|
519
|
+
end
|
520
|
+
end
|
521
|
+
|
522
|
+
end # module Rake::DevEiate::Git
|
523
|
+
|
524
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rake-deveiate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.16.
|
4
|
+
version: 0.16.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Granger
|
@@ -219,6 +219,7 @@ files:
|
|
219
219
|
- lib/rake/deveiate/gem_dep_finder.rb
|
220
220
|
- lib/rake/deveiate/gemspec.rb
|
221
221
|
- lib/rake/deveiate/generate.rb
|
222
|
+
- lib/rake/deveiate/git.rb
|
222
223
|
- lib/rake/deveiate/hg.rb
|
223
224
|
- lib/rake/deveiate/packaging.rb
|
224
225
|
- lib/rake/deveiate/releases.rb
|
metadata.gz.sig
CHANGED
Binary file
|