pivotal-github 0.8.0 → 0.8.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 +7 -0
- data/.ruby-version +1 -1
- data/Gemfile +2 -1
- data/README.md +21 -19
- data/lib/pivotal-github/command.rb +4 -4
- data/lib/pivotal-github/story_commit.rb +2 -2
- data/lib/pivotal-github/story_open.rb +1 -1
- data/lib/pivotal-github/story_pull_request.rb +1 -1
- data/lib/pivotal-github/version.rb +1 -1
- data/spec/commands/command_spec.rb +17 -4
- data/spec/commands/story_commit_spec.rb +22 -22
- data/spec/commands/story_merge_spec.rb +8 -8
- data/spec/commands/story_open_spec.rb +2 -2
- data/spec/commands/story_pull_request_spec.rb +4 -4
- data/spec/spec_helper.rb +5 -0
- metadata +7 -9
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 0ec9bc112f32b279089cbca37fa39bcd8a72bc07
|
4
|
+
data.tar.gz: dc07621e400fc821a175df1e928ff4c31e6c4193
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0580d4c0e1175daf5cee0f09c69561bca87c6c2eefc20065666424d52c9e0391f0dbb8ff609aefcf9f9fee00fee561c6731b8af98025ca812b9f9f108076623d
|
7
|
+
data.tar.gz: c731e0102496125328146b8514c3c366306e32c0a063df1abd120ca4ea76d7f6f0e4add67489998db5a11397ccb201cf76010ddf52d8fbb4437cd38739989f7d
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-
|
1
|
+
ruby-2.0.0
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# pivotal-github
|
2
2
|
|
3
|
-
The `pivotal-github` gem facilitates a [Pivotal Tracker](http://pivotaltracker.com/)–[GitHub](http://github.com/) workflow inspired by the workflow used by [Logical Reality](http://lrdesign.com/). (Despite its name, `pivotal-github` also works fine with [
|
3
|
+
The `pivotal-github` gem facilitates a [Pivotal Tracker](http://pivotaltracker.com/)–[GitHub](http://github.com/) workflow inspired by the workflow used by [Logical Reality](http://lrdesign.com/). (Despite its name, `pivotal-github` also works fine with [Bitbucket](http://bitbucket.com/); see **Configuration** below.) As per usual, there are several projects (notably [git-flow](https://github.com/nvie/gitflow) and [git-pivotal](https://github.com/trydionel/git-pivotal)) that implement similar solutions, but none met my exact needs, so I rolled my own.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -14,7 +14,7 @@ The full workflow described herein requires some of the Git utilities from [git-
|
|
14
14
|
|
15
15
|
The `pivotal-github` gem adds several additional Git commands to the local environment. The main addition, `git story-commit`, automatically incorporates the Pivotal Tracker story id(s) into the commit messages, while adding options to mark the story **Finished** or **Delivered**.
|
16
16
|
|
17
|
-
The `git story-commit` command makes the assumption that any string of digits in the branch name is a story id. This means that the branch names `
|
17
|
+
The `git story-commit` command makes the assumption that any string of eight or more digits in the branch name is a story id. (As of this writing, Pivotal Tracker ids are eight digits long, so shorter digit strings aren't valid ids.) This means that the branch names `62831853-add-markdown-support`, `62831853_add_markdown_support`, `add-markdown-support-62831853`, and `rails_4_0_62831853` all correspond to story id `62831853`, while `add-things-62831853-31415926` corresponds to both `62831853` *and* `31415926`.
|
18
18
|
|
19
19
|
The full set of commands is as follows:
|
20
20
|
|
@@ -22,16 +22,16 @@ The full set of commands is as follows:
|
|
22
22
|
|
23
23
|
`git story-commit` makes a standard `git commit` with the story number added to the commit message. This automatically adds a link at Pivotal Tracker between the story and the diff when the branch gets pushed up to GitHub.
|
24
24
|
|
25
|
-
For example, when on a branch called `add-markdown-support-
|
25
|
+
For example, when on a branch called `add-markdown-support-62831853`, the `git story-commit` command automatically adds `[#62831853]` to the commit message:
|
26
26
|
|
27
27
|
$ git story-commit -am "Add foo bars"
|
28
|
-
[add-markdown-support-
|
28
|
+
[add-markdown-support-62831853 6f56414] Add foo bars
|
29
29
|
|
30
30
|
The commit message is multiline and includes the story id:
|
31
31
|
|
32
32
|
Add foo bars
|
33
33
|
|
34
|
-
[#
|
34
|
+
[#62831853]
|
35
35
|
|
36
36
|
(Previous versions of `pivotal-github` put the story id on the same line as the commit summary (per the usage at the [Pivotal Tracker API](https://www.pivotaltracker.com/help/api?version=v3)), but placing it in a separate line gives the user direct control over the length of the message. It also looks less cluttered.)
|
37
37
|
|
@@ -43,7 +43,7 @@ This gives the message
|
|
43
43
|
|
44
44
|
Remove baz quuxes
|
45
45
|
|
46
|
-
[Finishes #
|
46
|
+
[Finishes #62831853]
|
47
47
|
|
48
48
|
To mark a story as **Delivered**, add the `-d` flag:
|
49
49
|
|
@@ -53,22 +53,22 @@ The message in this case is
|
|
53
53
|
|
54
54
|
Remove baz quuxes
|
55
55
|
|
56
|
-
[Delivers #
|
56
|
+
[Delivers #62831853]
|
57
57
|
|
58
58
|
Either the `-f` flag or the `-d` flag can be combined with other flags, yielding commands like
|
59
59
|
|
60
60
|
$ git story-commit -dam "Remove baz quuxes"
|
61
61
|
|
62
|
-
`git story commit` supports multiple story numbers as well. For example, with a branch called `add-things-
|
62
|
+
`git story commit` supports multiple story numbers as well. For example, with a branch called `add-things-62831853-31415926`, we could deliver both stories as follows:
|
63
63
|
|
64
64
|
$ git story-commit -dam "Remove baz quuxes"
|
65
|
-
[add-things-
|
65
|
+
[add-things-62831853-31415926 7g56429] Remove baz quuxes
|
66
66
|
|
67
67
|
The message here is
|
68
68
|
|
69
69
|
Remove baz quuxes
|
70
70
|
|
71
|
-
[Delivers #
|
71
|
+
[Delivers #62831853 #31415926]
|
72
72
|
|
73
73
|
#### Options
|
74
74
|
|
@@ -84,10 +84,10 @@ Additionally, `git story-commit` accepts any options valid for `git commit`. (`g
|
|
84
84
|
|
85
85
|
### git story-merge
|
86
86
|
|
87
|
-
`git story-merge` merges the current branch into `master`. On a branch called `add-markdown-support-
|
87
|
+
`git story-merge` merges the current branch into `master`. On a branch called `add-markdown-support-62831853`, `git story-merge` is equivalent to the following:
|
88
88
|
|
89
89
|
$ git checkout master
|
90
|
-
$ git merge --no-ff --log add-markdown-support-
|
90
|
+
$ git merge --no-ff --log add-markdown-support-62831853
|
91
91
|
|
92
92
|
Note that this effectively changes the default merge behavior from fast-forward to no-fast-forward, which makes it possible to use `git log` to see which of the commit objects together have implemented a story. As noted in [A successful Git branching model](http://nvie.com/posts/a-successful-git-branching-model/),
|
93
93
|
|
@@ -110,11 +110,11 @@ Additionally, `git story-merge` accepts any options valid for `git merge`.
|
|
110
110
|
|
111
111
|
### git story-pull-request
|
112
112
|
|
113
|
-
`git story-pull-request` opens the proper remote
|
113
|
+
`git story-pull-request` opens the proper remote URL to issue a pull request for the current branch (OS X–only):
|
114
114
|
|
115
115
|
$ git story-pull-request
|
116
116
|
|
117
|
-
By default, `git story-pull-request` issues a `git push-branch` as well, just in case the local branch hasn't yet been pushed up to the remote repository.
|
117
|
+
By default, `git story-pull-request` issues a `git push-branch` as well (from [git-utils](https://github.com/mhartl/git-utils)), just in case the local branch hasn't yet been pushed up to the remote repository.
|
118
118
|
|
119
119
|
As with `git story-merge`, by default `git story-pull-request` exits with a warning if the most recent commit doesn't finish the story.
|
120
120
|
|
@@ -126,14 +126,14 @@ As with `git story-merge`, by default `git story-pull-request` exits with a warn
|
|
126
126
|
|
127
127
|
### story-open
|
128
128
|
|
129
|
-
The `story-open` command (
|
129
|
+
The `story-open` command (no `git`) opens the current story in the default browser (OS X–only):
|
130
130
|
|
131
131
|
$ story-open
|
132
132
|
|
133
133
|
|
134
134
|
## Configuration
|
135
135
|
|
136
|
-
In order to use the `pivotal-github` gem, you need to configure a post-receive hook for your repository. At GitHub, navigate to `Settings > Service Hooks > Pivotal Tracker` and paste in your Pivotal Tracker API token. (To find your Pivotal Tracker API token, go to your user profile and scroll to the bottom.) Be sure to check the **Active** box to activate the post-receive hook. At
|
136
|
+
In order to use the `pivotal-github` gem, you need to configure a post-receive hook for your repository. At GitHub, navigate to `Settings > Service Hooks > Pivotal Tracker` and paste in your Pivotal Tracker API token. (To find your Pivotal Tracker API token, go to your user profile and scroll to the bottom.) Be sure to check the **Active** box to activate the post-receive hook. At Bitbucket, click on the gear icon to view the settings, click on `Services`, select `Pivotal Tracker`, and paste in your Pivotal Tracker API key.
|
137
137
|
|
138
138
|
The `pivotal-github` command names follow the Git convention of being verbose (e.g., unlike Subversion, Git doesn't natively support `co` for `checkout`), but I recommend setting up aliases as necessary. Here are some suggestions, formatted so that they can be pasted directly into a terminal window:
|
139
139
|
|
@@ -147,7 +147,7 @@ I also recommend setting up an alias for `git push-branch` from [git-utils](http
|
|
147
147
|
|
148
148
|
A single-developer workflow would then look like this:
|
149
149
|
|
150
|
-
$ git co -b add-markdown-support-
|
150
|
+
$ git co -b add-markdown-support-62831853
|
151
151
|
$ git pb
|
152
152
|
<work>
|
153
153
|
$ git sc -am "Added foo"
|
@@ -161,6 +161,8 @@ A single-developer workflow would then look like this:
|
|
161
161
|
$ git rebase master
|
162
162
|
$ git sm
|
163
163
|
|
164
|
+
Here `git sync` is also from [git-utils](https://github.com/mhartl/git-utils).
|
165
|
+
|
164
166
|
## Workflow with integrated code reivew
|
165
167
|
|
166
168
|
The `pivotal-github` gem is degined to support a workflow involving integrated code review, which has the usual benefits: at least two pairs of eyes see any committed code, and at least two brains know basically what the committed code does. The cost is that having a second developer involved can slow you down. I suggest using your judgment to determine which workflow makes the most sense on a story-by-story basis.
|
@@ -170,11 +172,11 @@ Here's the process in detail:
|
|
170
172
|
### Developer #1 (Alice)
|
171
173
|
|
172
174
|
1. Start an issue at [Pivotal Tracker](http://pivotaltracker.com/) and copy the story id to your buffer
|
173
|
-
2. Create a branch in the local Git repository containing the story id and a brief description: `git checkout -b add-markdown-support-
|
175
|
+
2. Create a branch in the local Git repository containing the story id and a brief description: `git checkout -b add-markdown-support-62831853`
|
174
176
|
3. Create a remote branch at [GitHub](http://github.com/) using `git push-branch`
|
175
177
|
3. Use `git story-commit` to make commits, which includes the story number in the commit message: `git story-commit -am "Add syntax highlighting"`
|
176
178
|
4. Continue pushing up after each commit using `git push` as usual
|
177
|
-
4. When done with the story, add `-f` to mark the story as **Finished** using `git story-commit -
|
179
|
+
4. When done with the story, add `-f` to mark the story as **Finished** using `git story-commit -fam "Add paragraph breaks"` or as **Delivered** using `git story-commit -dam "Add paragraph breaks"`
|
178
180
|
4. Rebase against `master` using `git sync` followed by `git rebase master` or `git rebase master --interactive` (optionally squashing commit messages as described in the article [A Git Workflow for Agile Teams](http://reinh.com/blog/2009/03/02/a-git-workflow-for-agile-teams.html))
|
179
181
|
4. Push up with `git push`
|
180
182
|
6. At the GitHub page for the repo, select **Branches** and submit a pull request
|
@@ -27,12 +27,12 @@ class Command
|
|
27
27
|
|
28
28
|
# Returns the story id (or ids).
|
29
29
|
# We extract the story id(s) from the branch name, so that, e.g.,
|
30
|
-
# the branch `add-markdown-support-
|
30
|
+
# the branch `add-markdown-support-62831853` gives story_id '62831853'.
|
31
31
|
# New as of version 0.7, we support multiple story ids in a single
|
32
|
-
# branch name, so that `add-markdown-support-
|
33
|
-
# to update story
|
32
|
+
# branch name, so that `add-markdown-support-62831853-31415926` can be used
|
33
|
+
# to update story 62831853 and story 31415926 simultaneously.
|
34
34
|
def story_ids
|
35
|
-
story_branch.scan(
|
35
|
+
story_branch.scan(/[0-9]{8,}/)
|
36
36
|
end
|
37
37
|
|
38
38
|
# Returns the single story id for the common case of one id.
|
@@ -38,8 +38,8 @@ class StoryCommit < Command
|
|
38
38
|
|
39
39
|
# Returns the story ids formatted for story commits.
|
40
40
|
# For single-id stories, this is just the number preceded by '#', as in
|
41
|
-
# '#
|
42
|
-
# '#
|
41
|
+
# '#62831853'. For multiple-id stories, each story id is precede by '#', as in
|
42
|
+
# '#62831853 #31415926'
|
43
43
|
def message_ids
|
44
44
|
story_ids.map { |id| "##{id}" }.join(' ')
|
45
45
|
end
|
@@ -3,7 +3,7 @@ require 'pivotal-github/command'
|
|
3
3
|
class StoryOpen < Command
|
4
4
|
|
5
5
|
# Returns a command appropriate for executing at the command line
|
6
|
-
# I.e., 'open https://www.pivotaltracker.com/story/show/
|
6
|
+
# I.e., 'open https://www.pivotaltracker.com/story/show/62831853'
|
7
7
|
def cmd
|
8
8
|
story_ids.map do |id|
|
9
9
|
"open https://www.pivotaltracker.com/story/show/#{id}"
|
@@ -16,7 +16,7 @@ class StoryPullRequest < FinishedCommand
|
|
16
16
|
end
|
17
17
|
|
18
18
|
# Returns a command appropriate for executing at the command line
|
19
|
-
# I.e., 'open https://www.pivotaltracker.com/story/show/
|
19
|
+
# I.e., 'open https://www.pivotaltracker.com/story/show/62831853'
|
20
20
|
def cmd
|
21
21
|
"git pull-request"
|
22
22
|
end
|
@@ -2,20 +2,33 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
describe Command do
|
4
4
|
let(:command) { Command.new }
|
5
|
-
before { command.stub(:story_branch).and_return('
|
5
|
+
before { command.stub(:story_branch).and_return('62831853-tau-manifesto') }
|
6
6
|
subject { command }
|
7
7
|
|
8
8
|
it { should respond_to(:cmd) }
|
9
9
|
it { should respond_to(:args) }
|
10
10
|
it { should respond_to(:options) }
|
11
11
|
it { should respond_to(:parse) }
|
12
|
+
it { should respond_to(:story_id) }
|
12
13
|
it { should respond_to(:story_ids) }
|
13
|
-
|
14
|
+
|
15
|
+
its(:story_id) { should eq '62831853' }
|
16
|
+
its(:story_ids) { should eq ['62831853'] }
|
14
17
|
|
15
18
|
describe "branches with multiple stories" do
|
16
19
|
before do
|
17
|
-
command.stub(:story_branch).and_return('
|
20
|
+
command.stub(:story_branch).and_return('62831853-tau-manifesto-31415926')
|
18
21
|
end
|
19
|
-
its(:story_ids) { should eq ['
|
22
|
+
its(:story_ids) { should eq ['62831853', '31415926'] }
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "when the branch name has other digit strings shorter than 8" do
|
26
|
+
before { command.stub(:story_branch).and_return('3141592-62831853') }
|
27
|
+
its(:story_id) { should eq '62831853' }
|
28
|
+
end
|
29
|
+
|
30
|
+
describe "with a story id with more than 8 digits" do
|
31
|
+
before { command.stub(:story_branch).and_return('628318530-tau-manifesto') }
|
32
|
+
its(:story_id) { should eq '628318530' }
|
20
33
|
end
|
21
34
|
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe StoryCommit do
|
4
4
|
|
5
5
|
let(:command) { StoryCommit.new(['-m', 'msg', '-a', '-z', '--foo']) }
|
6
|
-
before { command.stub(:story_branch).and_return('
|
6
|
+
before { command.stub(:story_branch).and_return('62831853-tau-manifesto') }
|
7
7
|
subject { command }
|
8
8
|
|
9
9
|
it { should respond_to(:message) }
|
@@ -11,7 +11,7 @@ describe StoryCommit do
|
|
11
11
|
shared_examples "story-commit with known options" do
|
12
12
|
subject { command }
|
13
13
|
|
14
|
-
its(:cmd) { should
|
14
|
+
its(:cmd) { should match /git commit/ }
|
15
15
|
its(:message) { should_not be_empty }
|
16
16
|
its(:message?) { should be_true }
|
17
17
|
its(:all?) { should be_true }
|
@@ -19,7 +19,7 @@ describe StoryCommit do
|
|
19
19
|
describe "parse" do
|
20
20
|
subject { command.options }
|
21
21
|
|
22
|
-
its(:message) { should
|
22
|
+
its(:message) { should eq 'msg' }
|
23
23
|
its(:all) { should be_true }
|
24
24
|
end
|
25
25
|
end
|
@@ -46,21 +46,21 @@ describe StoryCommit do
|
|
46
46
|
|
47
47
|
describe '#story_id' do
|
48
48
|
subject { command.story_id }
|
49
|
-
it { should
|
49
|
+
it { should eq '62831853' }
|
50
50
|
end
|
51
51
|
|
52
52
|
describe "command with message" do
|
53
53
|
its(:cmd) do
|
54
|
-
should
|
54
|
+
should eq %(git commit -a -m "msg" -m "[##{command.story_id}]" -z --foo)
|
55
55
|
end
|
56
56
|
|
57
57
|
describe "when used with branches containing multiple stories" do
|
58
58
|
before do
|
59
|
-
command.stub(:story_branch).and_return('
|
59
|
+
command.stub(:story_branch).and_return('62831853-tau-manifesto-31415926')
|
60
60
|
end
|
61
61
|
its(:cmd) do
|
62
|
-
delivered_ids = '#
|
63
|
-
should
|
62
|
+
delivered_ids = '#62831853 #31415926'
|
63
|
+
should eq %(git commit -a -m "msg" -m "[#{delivered_ids}]" -z --foo)
|
64
64
|
end
|
65
65
|
end
|
66
66
|
end
|
@@ -68,23 +68,23 @@ describe StoryCommit do
|
|
68
68
|
describe "command with no message" do
|
69
69
|
let(:command) { StoryCommit.new(['-a', '-z', '--foo']) }
|
70
70
|
its(:cmd) do
|
71
|
-
should
|
71
|
+
should eq %(git commit -a -m "[##{command.story_id}]" -z --foo)
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
75
|
describe "command with finish flag" do
|
76
76
|
let(:command) { StoryCommit.new(['-m', 'msg', '-f']) }
|
77
77
|
its(:cmd) do
|
78
|
-
should
|
78
|
+
should eq %(git commit -m "msg" -m "[Finishes ##{command.story_id}]")
|
79
79
|
end
|
80
80
|
|
81
81
|
describe "when used with branches containing multiple stories" do
|
82
82
|
before do
|
83
|
-
command.stub(:story_branch).and_return('
|
83
|
+
command.stub(:story_branch).and_return('62831853-tau-manifesto-31415926')
|
84
84
|
end
|
85
85
|
its(:cmd) do
|
86
|
-
delivered_ids = '#
|
87
|
-
should
|
86
|
+
delivered_ids = '#62831853 #31415926'
|
87
|
+
should eq %(git commit -m "msg" -m "[Finishes #{delivered_ids}]")
|
88
88
|
end
|
89
89
|
end
|
90
90
|
end
|
@@ -92,16 +92,16 @@ describe StoryCommit do
|
|
92
92
|
describe "command with deliver flag" do
|
93
93
|
let(:command) { StoryCommit.new(['-m', 'msg', '-d']) }
|
94
94
|
its(:cmd) do
|
95
|
-
should
|
95
|
+
should eq %(git commit -m "msg" -m "[Delivers ##{command.story_id}]")
|
96
96
|
end
|
97
97
|
|
98
98
|
describe "when used with branches containing multiple stories" do
|
99
99
|
before do
|
100
|
-
command.stub(:story_branch).and_return('
|
100
|
+
command.stub(:story_branch).and_return('62831853-tau-manifesto-31415926')
|
101
101
|
end
|
102
102
|
its(:cmd) do
|
103
|
-
delivered_ids = '#
|
104
|
-
should
|
103
|
+
delivered_ids = '#62831853 #31415926'
|
104
|
+
should eq %(git commit -m "msg" -m "[Delivers #{delivered_ids}]")
|
105
105
|
end
|
106
106
|
end
|
107
107
|
end
|
@@ -109,16 +109,16 @@ describe StoryCommit do
|
|
109
109
|
describe "command with no story id" do
|
110
110
|
before { command.stub(:story_branch).and_return('tau-manifesto') }
|
111
111
|
its(:cmd) do
|
112
|
-
should
|
112
|
+
should eq %(git commit -a -m "msg" -z --foo)
|
113
113
|
end
|
114
114
|
end
|
115
115
|
|
116
116
|
describe "command-line command" do
|
117
117
|
let(:command) { `bin/git-story-commit -a -m "msg" -z --debug` }
|
118
118
|
subject { command }
|
119
|
-
it { should
|
120
|
-
it { should
|
121
|
-
it { should
|
122
|
-
it { should_not
|
119
|
+
it { should match /git commit -a -m/ }
|
120
|
+
it { should match /msg/ }
|
121
|
+
it { should match /-z/ }
|
122
|
+
it { should_not match /--debug/ }
|
123
123
|
end
|
124
124
|
end
|
@@ -3,10 +3,10 @@ require 'spec_helper'
|
|
3
3
|
describe StoryMerge do
|
4
4
|
|
5
5
|
let(:command) { StoryMerge.new }
|
6
|
-
before { command.stub(:story_branch).and_return('
|
6
|
+
before { command.stub(:story_branch).and_return('62831853-tau-manifesto') }
|
7
7
|
subject { command }
|
8
8
|
|
9
|
-
its(:cmd) { should
|
9
|
+
its(:cmd) { should match /git merge/ }
|
10
10
|
|
11
11
|
shared_examples "story-merge with known options" do
|
12
12
|
subject { command }
|
@@ -16,24 +16,24 @@ describe StoryMerge do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
describe "with no options" do
|
19
|
-
its(:cmd) { should
|
20
|
-
its(:cmd) { should
|
19
|
+
its(:cmd) { should match /git checkout master/ }
|
20
|
+
its(:cmd) { should match /git merge --no-ff --log #{command.story_branch}/ }
|
21
21
|
end
|
22
22
|
|
23
23
|
describe "with a custom development branch" do
|
24
24
|
let(:command) { StoryMerge.new(['-d', 'develop']) }
|
25
|
-
its(:cmd) { should
|
25
|
+
its(:cmd) { should match /git checkout develop/ }
|
26
26
|
end
|
27
27
|
|
28
28
|
describe "with some unknown options" do
|
29
29
|
let(:command) { StoryMerge.new(['-d', 'develop', '-a', '-z', '--foo']) }
|
30
30
|
it_should_behave_like "story-merge with known options"
|
31
|
-
its(:cmd) { should
|
31
|
+
its(:cmd) { should match /-a -z --foo/ }
|
32
32
|
end
|
33
33
|
|
34
34
|
describe "command-line command" do
|
35
35
|
subject { `bin/git-story-merge --debug -ff -d develop` }
|
36
|
-
it { should
|
37
|
-
it { should
|
36
|
+
it { should match /git checkout develop/ }
|
37
|
+
it { should match /git merge --no-ff --log -ff/ }
|
38
38
|
end
|
39
39
|
end
|
@@ -4,8 +4,8 @@ describe StoryOpen do
|
|
4
4
|
|
5
5
|
let(:command) { StoryOpen.new }
|
6
6
|
let(:uri) { "https://www.pivotaltracker.com/story/show/#{command.story_id}" }
|
7
|
-
before { command.stub(:story_branch).and_return('
|
7
|
+
before { command.stub(:story_branch).and_return('62831853-tau-manifesto') }
|
8
8
|
subject { command }
|
9
9
|
|
10
|
-
its(:cmd) { should
|
10
|
+
its(:cmd) { should eq "open #{uri}" }
|
11
11
|
end
|
@@ -3,14 +3,14 @@ require 'spec_helper'
|
|
3
3
|
describe StoryPullRequest do
|
4
4
|
|
5
5
|
let(:command) { StoryPullRequest.new }
|
6
|
-
before { command.stub(:story_branch).and_return('
|
6
|
+
before { command.stub(:story_branch).and_return('62831853-tau-manifesto') }
|
7
7
|
before do
|
8
8
|
command.stub(:remote_location).
|
9
9
|
and_return('https://github.com/mhartl/foo')
|
10
10
|
end
|
11
11
|
subject { command }
|
12
12
|
|
13
|
-
its(:cmd) { should
|
13
|
+
its(:cmd) { should match /git pull-request/ }
|
14
14
|
|
15
15
|
describe 'origin uri parsing' do
|
16
16
|
let(:correct_origin) { 'https://github.com/mhartl/foo' }
|
@@ -32,7 +32,7 @@ describe StoryPullRequest do
|
|
32
32
|
|
33
33
|
describe "command-line command" do
|
34
34
|
subject { `bin/git-story-pull-request --debug` }
|
35
|
-
it { should_not
|
36
|
-
it { should
|
35
|
+
it { should_not match /\.git/ }
|
36
|
+
it { should match /git pull-request/ }
|
37
37
|
end
|
38
38
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -4,4 +4,9 @@ RSpec.configure do |config|
|
|
4
4
|
config.treat_symbols_as_metadata_keys_with_true_values = true
|
5
5
|
config.run_all_when_everything_filtered = true
|
6
6
|
config.filter_run :focus
|
7
|
+
|
8
|
+
# Disallow the old-style 'object.should' syntax.
|
9
|
+
config.expect_with :rspec do |c|
|
10
|
+
c.syntax = :expect
|
11
|
+
end
|
7
12
|
end
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pivotal-github
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
5
|
-
prerelease:
|
4
|
+
version: 0.8.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Michael Hartl
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-06-
|
11
|
+
date: 2013-06-06 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
13
|
description: Add commands for Pivotal Tracker-GitHub integration
|
15
14
|
email:
|
@@ -53,27 +52,26 @@ files:
|
|
53
52
|
- spec/spec_helper.rb
|
54
53
|
homepage: https://github.com/mhartl/pivotal-github
|
55
54
|
licenses: []
|
55
|
+
metadata: {}
|
56
56
|
post_install_message:
|
57
57
|
rdoc_options: []
|
58
58
|
require_paths:
|
59
59
|
- lib
|
60
60
|
required_ruby_version: !ruby/object:Gem::Requirement
|
61
|
-
none: false
|
62
61
|
requirements:
|
63
|
-
- -
|
62
|
+
- - '>='
|
64
63
|
- !ruby/object:Gem::Version
|
65
64
|
version: '0'
|
66
65
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
|
-
none: false
|
68
66
|
requirements:
|
69
|
-
- -
|
67
|
+
- - '>='
|
70
68
|
- !ruby/object:Gem::Version
|
71
69
|
version: '0'
|
72
70
|
requirements: []
|
73
71
|
rubyforge_project:
|
74
|
-
rubygems_version:
|
72
|
+
rubygems_version: 2.0.3
|
75
73
|
signing_key:
|
76
|
-
specification_version:
|
74
|
+
specification_version: 4
|
77
75
|
summary: See the README for full documentation
|
78
76
|
test_files:
|
79
77
|
- spec/commands/command_spec.rb
|