hoe-git 1.1.1 → 1.1.2
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.
- data/CHANGELOG.rdoc +5 -0
- data/README.rdoc +30 -12
- data/lib/hoe/git.rb +66 -58
- metadata +7 -10
data/CHANGELOG.rdoc
CHANGED
data/README.rdoc
CHANGED
@@ -1,37 +1,55 @@
|
|
1
|
-
=
|
1
|
+
= Hoe Loves Git
|
2
2
|
|
3
3
|
* http://github.com/jbarnette/hoe-git
|
4
4
|
|
5
5
|
== Description
|
6
6
|
|
7
|
-
A Hoe
|
8
|
-
|
9
|
-
|
10
|
-
tricks in the future.
|
11
|
-
|
12
|
-
See the Hoe::Git module for more docs and a few configuration options.
|
7
|
+
A set of Hoe plugins for tighter Git integration. Provides tasks to
|
8
|
+
automate release tagging and pushing and changelog generation. I
|
9
|
+
expect it'll learn a few more tricks in the future.
|
13
10
|
|
14
11
|
== Examples
|
15
12
|
|
16
13
|
# in your Rakefile
|
17
14
|
Hoe.plugin :git
|
18
15
|
|
19
|
-
|
16
|
+
=== Autogenerating the Changelog
|
17
|
+
|
20
18
|
$ rake git:changelog
|
21
19
|
|
22
|
-
This
|
23
|
-
|
24
|
-
|
20
|
+
This takes all the commit messages since your last release and formats
|
21
|
+
'em into a nice RDoc fragment. If you specify <tt>VERSION</tt>, it'll
|
22
|
+
be used in the changelog fragment. If you specify <tt>FROM</tt>, it'll
|
23
|
+
be used as a starting point for the changelog instead of your last
|
24
|
+
release.
|
25
|
+
|
26
|
+
Commits that weren't made by a project developer will be attributed,
|
27
|
+
like this:
|
28
|
+
|
29
|
+
* Did a thing with the stuff. [I R Contributor]
|
30
|
+
|
31
|
+
=== Tagging and Sanity Checking a Release
|
25
32
|
|
26
33
|
$ rake release VERSION=1.0.0
|
27
34
|
|
28
35
|
In addition to the normal RubyForge release process, this will create
|
29
|
-
and push a <tt>v1.0.0</tt> tag.
|
36
|
+
and push a <tt>v1.0.0</tt> tag. It'll also abort the release if your
|
37
|
+
index is dirty, or if there are untracked files present.
|
38
|
+
|
39
|
+
== Dependencies
|
40
|
+
|
41
|
+
Hoe and Git, obviously. I wouldn't be surprised if things don't quite
|
42
|
+
work for git < 1.6.3.
|
30
43
|
|
31
44
|
== Installation
|
32
45
|
|
33
46
|
$ gem install hoe-git
|
34
47
|
|
48
|
+
== TODO
|
49
|
+
|
50
|
+
* Release tags are sorted lexicographically right now, which won't
|
51
|
+
work for long.
|
52
|
+
|
35
53
|
== License
|
36
54
|
|
37
55
|
Copyright 2009 John Barnette (jbarnette@rubyforge.org)
|
data/lib/hoe/git.rb
CHANGED
@@ -1,71 +1,79 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
#
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
1
|
+
class Hoe #:nodoc:
|
2
|
+
|
3
|
+
# This module is a Hoe plugin. You can set its attributes in your
|
4
|
+
# Rakefile Hoe spec, like this:
|
5
|
+
#
|
6
|
+
# Hoe.plugin :git
|
7
|
+
#
|
8
|
+
# Hoe.spec "myproj" do
|
9
|
+
# self.git_release_tag_prefix = "REL_"
|
10
|
+
# self.git_remotes << "myremote"
|
11
|
+
# end
|
12
|
+
|
13
|
+
module Git
|
14
|
+
|
15
|
+
# Duh.
|
16
|
+
VERSION = "1.1.2"
|
17
|
+
|
18
|
+
# What do you want at the front of your release tags?
|
19
|
+
# [default: <tt>"v"</tt>]
|
20
|
+
|
21
|
+
attr_accessor :git_release_tag_prefix
|
22
|
+
|
23
|
+
# Which remotes do you want to push tags, etc. to?
|
24
|
+
# [default: <tt>%w(origin)</tt>]
|
25
|
+
|
26
|
+
attr_accessor :git_remotes
|
27
|
+
|
28
|
+
def initialize_git #:nodoc:
|
29
|
+
self.git_release_tag_prefix = "v"
|
30
|
+
self.git_remotes = %w(origin)
|
31
|
+
end
|
32
|
+
|
33
|
+
def define_git_tasks #:nodoc:
|
34
|
+
|
35
|
+
desc "Print the current changelog."
|
36
|
+
task "git:changelog" do
|
37
|
+
tags = `git tag -l '#{git_release_tag_prefix}*'`.split "\n"
|
38
|
+
tag = ENV["FROM"] || tags.last
|
39
|
+
range = [tag, "HEAD"].compact.join ".."
|
40
|
+
cmd = "git log #{range} '--format=tformat:%s|||%cN|||%cE'"
|
33
41
|
|
34
|
-
|
35
|
-
|
36
|
-
task "git:changelog" do
|
37
|
-
tags = `git tag -l '#{git_release_tag_prefix}*'`.split "\n"
|
38
|
-
tag = ENV["FROM"] || tags.last
|
39
|
-
range = [tag, "HEAD"].compact.join ".."
|
40
|
-
cmd = "git log #{range} '--format=tformat:%s|||%cN|||%cE'"
|
42
|
+
changes = `#{cmd}`.split("\n").map do |line|
|
43
|
+
msg, author, email = line.split("|||").map { |e| e.empty? ? nil : e }
|
41
44
|
|
42
|
-
|
43
|
-
|
45
|
+
developer = author.include?(author) || email.include?(email)
|
46
|
+
change = [msg]
|
47
|
+
change << "[#{author || email}]" unless developer
|
44
48
|
|
45
|
-
|
46
|
-
|
47
|
-
change << "[#{author || email}]" unless developer
|
49
|
+
change.join " "
|
50
|
+
end
|
48
51
|
|
49
|
-
|
52
|
+
puts "=== #{ENV["VERSION"] || 'NEXT'} / #{Time.new.strftime '%Y-%m-%d'}"
|
53
|
+
puts
|
54
|
+
|
55
|
+
changes.each { |change| puts "* #{change}" }
|
50
56
|
end
|
51
57
|
|
52
|
-
|
53
|
-
|
58
|
+
desc "Create and push a TAG " +
|
59
|
+
"(default #{git_release_tag_prefix}#{version})."
|
60
|
+
|
61
|
+
task "git:tag" do
|
62
|
+
tag = ENV["TAG"]
|
63
|
+
tag ||= "#{git_release_tag_prefix}#{ENV["VERSION"] || version}"
|
54
64
|
|
55
|
-
|
56
|
-
|
65
|
+
sh "git tag -f #{tag}"
|
66
|
+
git_remotes.each { |remote| sh "git push -f #{remote} tag #{tag}" }
|
67
|
+
end
|
68
|
+
|
69
|
+
task :release_sanity do
|
70
|
+
unless `git status` =~ /^nothing to commit/
|
71
|
+
abort "Won't release: Dirty index or untracked files present!"
|
72
|
+
end
|
57
73
|
end
|
58
|
-
end
|
59
74
|
|
60
|
-
|
61
|
-
task "git:tag" do
|
62
|
-
tag = ENV["TAG"]
|
63
|
-
tag ||= "#{git_release_tag_prefix}#{ENV["VERSION"] || version}"
|
75
|
+
task :release => "git:tag"
|
64
76
|
|
65
|
-
sh "git tag -f #{tag}"
|
66
|
-
git_remotes.each { |remote| sh "git push -f #{remote} tag #{tag}" }
|
67
77
|
end
|
68
|
-
|
69
|
-
task :release => "git:tag"
|
70
78
|
end
|
71
79
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hoe-git
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Barnette
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-06-
|
12
|
+
date: 2009-06-26 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -30,15 +30,12 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 2.
|
33
|
+
version: 2.3.1
|
34
34
|
version:
|
35
35
|
description: |-
|
36
|
-
A Hoe
|
37
|
-
|
38
|
-
|
39
|
-
tricks in the future.
|
40
|
-
|
41
|
-
See the Hoe::Git module for more docs and a few configuration options.
|
36
|
+
A set of Hoe plugins for tighter Git integration. Provides tasks to
|
37
|
+
automate release tagging and pushing and changelog generation. I
|
38
|
+
expect it'll learn a few more tricks in the future.
|
42
39
|
email:
|
43
40
|
- jbarnette@rubyforge.org
|
44
41
|
executables: []
|
@@ -84,6 +81,6 @@ rubyforge_project: hoe-git
|
|
84
81
|
rubygems_version: 1.3.4
|
85
82
|
signing_key:
|
86
83
|
specification_version: 3
|
87
|
-
summary: A Hoe
|
84
|
+
summary: A set of Hoe plugins for tighter Git integration
|
88
85
|
test_files: []
|
89
86
|
|