story_branch 0.2.6 → 0.2.7
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
- data/README.md +25 -33
- data/lib/story_branch.rb +111 -92
- metadata +6 -30
- data/bin/git-pivotal-story +0 -4
- data/bin/git-story-branch +0 -4
- data/bin/git-story-finish +0 -4
- data/bin/git-story-start +0 -4
- data/bin/git-story-unstart +0 -4
- data/bin/story-branch +0 -4
- data/bin/story-finish +0 -4
- data/bin/story-start +0 -4
- data/bin/story-unstart +0 -4
- data/bin/story_branch +0 -4
- data/bin/story_finish +0 -4
- data/bin/story_start +0 -4
- data/bin/story_unstart +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9c0e160a81842521457a2ef968e48f3960b2681d
|
4
|
+
data.tar.gz: a1a816524e43ce91699ca78b0f772c6e89a2795a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8328b3529fb52fd129fe8a936b1c07e940c094c6aa3d03d297ff1a9da0b0471e5d228f180ee1accfa2f0a8ff1c858136179cf111f9384e0b655bb6f1c917745d
|
7
|
+
data.tar.gz: 99e3f567048af4d348d0b510d09f3aca8e1147cb9afd00708614d4f079b5295517ff9c47a62dc594cbb0735edf345a76105087dd69db671660ee5cf9800d1bc6
|
data/README.md
CHANGED
@@ -2,32 +2,37 @@
|
|
2
2
|
|
3
3
|
# Story Branch
|
4
4
|
|
5
|
-
A small collection of tools for working with git branches
|
6
|
-
|
5
|
+
A small collection of tools for working with git branches and Pivotal
|
6
|
+
Tracker stories. `git story`, `git finish`, `git start` and `git
|
7
|
+
unstart`.
|
7
8
|
|
8
9
|
### Commentary
|
9
10
|
|
10
|
-
`git story`:
|
11
|
+
`git story`: Creates a git branch with automatic reference to a
|
11
12
|
Pivotal Tracker Story. It will get started stories from your active
|
12
13
|
project. You can enter text and press TAB to search for a story
|
13
14
|
name, or TAB to show the full list. It will then suggest an editable
|
14
15
|
branch name. When the branch is created the `story_id` will
|
15
|
-
be appended to it.
|
16
|
+
be appended to it.
|
17
|
+
|
18
|
+
e.g. `my-story-name-1234567`
|
19
|
+
|
20
|
+
`git finish`: Creates a git commit message for the staged changes.
|
21
|
+
|
22
|
+
e.g: `[Finishes #1234567] My Story Title`
|
23
|
+
|
24
|
+
You must stage all changes (or stash them) first. Note the commit will not
|
25
|
+
be pushed. Note: You'll be able to bail out before.
|
16
26
|
|
17
27
|
`git start`: Start a story in Pivotal Tracker from the terminal.
|
18
28
|
It'll get all unstarted stories in your current project. You can
|
19
29
|
enter text and press TAB to search for a story name, or TAB to show
|
20
|
-
the full list.
|
30
|
+
the full list.
|
21
31
|
|
22
|
-
`git unstart`: Unstart a
|
32
|
+
`git unstart`: Unstart a story in Pivotal Tracker from the terminal.
|
23
33
|
It'll get all started stories in your current project. You can
|
24
34
|
enter text and press TAB to search for a story name, or TAB to show
|
25
|
-
the full list.
|
26
|
-
|
27
|
-
`git finish`: Create commit/message for the staged changes, e.g:
|
28
|
-
"[Finishes #1234567] My Story Title" - optionally Finishes the story
|
29
|
-
via pivotal tracker's api. You must stage all changes (or stash
|
30
|
-
them) first.
|
35
|
+
the full list.
|
31
36
|
|
32
37
|
### Installing
|
33
38
|
|
@@ -35,47 +40,34 @@ Install the gem:
|
|
35
40
|
|
36
41
|
gem install story_branch
|
37
42
|
|
38
|
-
|
43
|
+
#### Settings
|
44
|
+
|
45
|
+
You must have a `PIVOTAL_API_KEY` environment variable set
|
39
46
|
to your Pivotal api key, plus either a `.story_branch` file or
|
40
47
|
`PIVOTAL_PROJECT_ID` environment variable set. Note, values in
|
41
48
|
`.story_branch` will override environment variable settings.
|
42
49
|
|
43
|
-
|
50
|
+
#### .story_branch file
|
44
51
|
|
45
52
|
A YAML file with either/both of:
|
46
53
|
|
47
54
|
api: YOUR.PIVOTAL.API.KEY.STRING
|
48
55
|
project: YOUR.PROJECT.ID.NUMBER
|
49
56
|
|
50
|
-
Can be saved to `~/` or `./`
|
57
|
+
Can be saved to `~/` or `./` (ie. your project folder)
|
51
58
|
|
52
59
|
### Usage
|
53
60
|
|
54
61
|
You run story_branch from the git/project root folder.
|
55
62
|
|
56
|
-
`
|
57
|
-
list of stories to work with.
|
63
|
+
`git story`, `git start` and `git unstart` are run interactively and
|
64
|
+
will display a list of stories to work with.
|
58
65
|
|
59
|
-
`finish` will scan the current branch name for a story id (as its
|
66
|
+
`git finish` will scan the current branch name for a story id (as its
|
60
67
|
suffix) and if a valid, active story is found on pivotal tracker it
|
61
68
|
will create a commit with a message to trigger pivotal's git
|
62
69
|
integraton features.
|
63
70
|
|
64
|
-
All text entry supports Readline keyboard shortcuts / bindings, (word fwd/back, undo etc.)
|
65
|
-
|
66
|
-
### Command names
|
67
|
-
|
68
|
-
It's possible to the commands in a few ways, we have deprecated the
|
69
|
-
old commmand names, and now encourage only the use of the `git`
|
70
|
-
style usage.
|
71
|
-
|
72
|
-
git style | deprecated
|
73
|
-
------------+---------------+--------------
|
74
|
-
git story | story_branch | story-branch
|
75
|
-
git start | story_start | story-start
|
76
|
-
git unstart| story_unstart | story-unstart
|
77
|
-
git finish | story_finish | story-finish
|
78
|
-
|
79
71
|
## Contributing
|
80
72
|
|
81
73
|
All pull requests are welcome and will be reviewed.
|
data/lib/story_branch.rb
CHANGED
@@ -3,33 +3,43 @@
|
|
3
3
|
# Authors: Jason Milkins <jason@opsmanager.com>
|
4
4
|
# Rui Baltazar <rui.p.baltazar@gmail.com>
|
5
5
|
# Dominic Wong <dominic.wong.617@gmail.com>
|
6
|
+
# Ranhiru Cooray <ranhiru@gmail.com>
|
6
7
|
# Gabe Hollombe <gabe@neo.com>
|
7
8
|
#
|
8
|
-
# Version: 0.2.
|
9
|
+
# Version: 0.2.7
|
9
10
|
#
|
10
11
|
# ## Description
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
12
|
+
# A small collection of tools for working with git branches and Pivotal
|
13
|
+
# Tracker stories. `git story`, `git finish`, `git start` and `git
|
14
|
+
# unstart`.
|
14
15
|
#
|
15
16
|
# ### Commentary
|
16
17
|
#
|
17
|
-
# `git story`:
|
18
|
+
# `git story`: Creates a git branch with automatic reference to a
|
18
19
|
# Pivotal Tracker Story. It will get started stories from your active
|
19
20
|
# project. You can enter text and press TAB to search for a story
|
20
21
|
# name, or TAB to show the full list. It will then suggest an editable
|
21
22
|
# branch name. When the branch is created the `story_id` will
|
22
23
|
# be appended to it.
|
23
24
|
#
|
25
|
+
# e.g. `my-story-name-1234567`
|
26
|
+
#
|
27
|
+
# `git finish`: Creates a git commit message for the staged changes.
|
28
|
+
#
|
29
|
+
# e.g: `[Finishes #1234567] My Story Title`
|
30
|
+
#
|
31
|
+
# You must stage all changes (or stash them) first. Note the commit will not
|
32
|
+
# be pushed. Note: You'll be able to bail out before.
|
33
|
+
#
|
24
34
|
# `git start`: Start a story in Pivotal Tracker from the terminal.
|
25
35
|
# It'll get all unstarted stories in your current project. You can
|
26
36
|
# enter text and press TAB to search for a story name, or TAB to show
|
27
37
|
# the full list.
|
28
|
-
|
29
|
-
# `git
|
30
|
-
#
|
31
|
-
#
|
32
|
-
#
|
38
|
+
#
|
39
|
+
# `git unstart`: Unstart a story in Pivotal Tracker from the terminal.
|
40
|
+
# It'll get all started stories in your current project. You can
|
41
|
+
# enter text and press TAB to search for a story name, or TAB to show
|
42
|
+
# the full list.
|
33
43
|
#
|
34
44
|
# ### Installing
|
35
45
|
#
|
@@ -37,44 +47,34 @@
|
|
37
47
|
#
|
38
48
|
# gem install story_branch
|
39
49
|
#
|
40
|
-
#
|
50
|
+
# #### Settings
|
51
|
+
#
|
52
|
+
# You must have a `PIVOTAL_API_KEY` environment variable set
|
41
53
|
# to your Pivotal api key, plus either a `.story_branch` file or
|
42
54
|
# `PIVOTAL_PROJECT_ID` environment variable set. Note, values in
|
43
55
|
# `.story_branch` will override environment variable settings.
|
44
56
|
#
|
45
|
-
#
|
57
|
+
# #### .story_branch file
|
46
58
|
#
|
47
59
|
# A YAML file with either/both of:
|
48
60
|
#
|
49
61
|
# api: YOUR.PIVOTAL.API.KEY.STRING
|
50
62
|
# project: YOUR.PROJECT.ID.NUMBER
|
51
63
|
#
|
52
|
-
# Can be saved to `~/` or `./`
|
64
|
+
# Can be saved to `~/` or `./` (ie. your project folder)
|
53
65
|
#
|
54
66
|
# ### Usage
|
55
67
|
#
|
56
68
|
# You run story_branch from the git/project root folder.
|
57
69
|
#
|
58
|
-
# `
|
59
|
-
# list of stories to work with.
|
70
|
+
# `git story`, `git start` and `git unstart` are run interactively and
|
71
|
+
# will display a list of stories to work with.
|
60
72
|
#
|
61
|
-
# `finish` will scan the current branch name for a story id (as its
|
73
|
+
# `git finish` will scan the current branch name for a story id (as its
|
62
74
|
# suffix) and if a valid, active story is found on pivotal tracker it
|
63
75
|
# will create a commit with a message to trigger pivotal's git
|
64
76
|
# integraton features.
|
65
77
|
#
|
66
|
-
# ### Command names
|
67
|
-
#
|
68
|
-
# It's possible to the commands in a few ways, we have deprecated the
|
69
|
-
# old commmand names, and now encourage only the use of the `git`
|
70
|
-
# style usage.
|
71
|
-
#
|
72
|
-
# git style | deprecated
|
73
|
-
# ------------+--------------+--------------
|
74
|
-
# git story | story_branch | story-branch
|
75
|
-
# git start | story_start | story-start
|
76
|
-
# git finish | story_finish | story-finish
|
77
|
-
#
|
78
78
|
# ## Contributing
|
79
79
|
#
|
80
80
|
# All pull requests are welcome and will be reviewed.
|
@@ -91,40 +91,44 @@ require 'levenshtein'
|
|
91
91
|
trap('INT') {exit}
|
92
92
|
|
93
93
|
module StoryBranch
|
94
|
+
|
94
95
|
class Main
|
96
|
+
|
95
97
|
ERRORS = {
|
96
|
-
|
98
|
+
"Stories in the started state must be estimated." =>
|
97
99
|
"Error: Pivotal won't allow you to start an unestimated story"
|
98
100
|
}
|
99
101
|
|
100
|
-
PIVOTAL_CONFIG_FILES = ['.story_branch',
|
101
|
-
PIVOTAL_API_CONFIG_FILES = ['.pivotal_api_key', "#{ENV['HOME']}/.pivotal_api_key"]
|
102
|
+
PIVOTAL_CONFIG_FILES = ['.story_branch',"#{ENV['HOME']}/.story_branch"]
|
102
103
|
|
103
104
|
attr_accessor :p
|
104
105
|
|
105
106
|
def initialize
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
@p
|
110
|
-
@p.
|
107
|
+
if config_file
|
108
|
+
@pivotal_info = YAML.load_file config_file
|
109
|
+
end
|
110
|
+
@p = PivotalUtils.new
|
111
|
+
@p.api_key = config_value "api", 'PIVOTAL_API_KEY'
|
112
|
+
@p.project_id = config_value "project", 'PIVOTAL_PROJECT_ID'
|
111
113
|
exit unless @p.valid?
|
112
114
|
end
|
113
115
|
|
114
116
|
def create_story_branch
|
115
117
|
begin
|
116
|
-
puts
|
118
|
+
puts "Connecting with Pivotal Tracker"
|
117
119
|
@p.get_project
|
118
|
-
puts
|
120
|
+
puts "Getting stories..."
|
119
121
|
stories = @p.display_stories :started, false
|
120
122
|
if stories.length < 1
|
121
|
-
puts
|
123
|
+
puts "No stories started, exiting"
|
122
124
|
exit
|
123
125
|
end
|
124
|
-
story
|
125
|
-
|
126
|
+
story = @p.select_story stories
|
127
|
+
if story
|
128
|
+
@p.create_feature_branch story
|
129
|
+
end
|
126
130
|
rescue RestClient::Unauthorized
|
127
|
-
$stderr.puts
|
131
|
+
$stderr.puts "Pivotal API key or Project ID invalid"
|
128
132
|
return nil
|
129
133
|
end
|
130
134
|
end
|
@@ -169,48 +173,43 @@ module StoryBranch
|
|
169
173
|
|
170
174
|
unless @p.is_current_branch_a_story?
|
171
175
|
puts "Your current branch: '#{GitUtils.current_branch}' is not linked to a Pivotal Tracker story."
|
172
|
-
return
|
176
|
+
return nil
|
173
177
|
end
|
174
178
|
|
175
179
|
if GitUtils.has_status? :untracked or GitUtils.has_status? :modified
|
176
|
-
puts
|
177
|
-
puts
|
178
|
-
puts
|
179
|
-
return
|
180
|
+
puts "There are unstaged changes"
|
181
|
+
puts "Use git add to stage changes before running git finish"
|
182
|
+
puts "Use git stash if you want to hide changes for this commit"
|
183
|
+
return nil
|
180
184
|
end
|
181
185
|
|
182
186
|
unless GitUtils.has_status? :added or GitUtils.has_status? :staged
|
183
|
-
puts
|
184
|
-
puts
|
185
|
-
return
|
187
|
+
puts "There are no staged changes."
|
188
|
+
puts "Nothing to do"
|
189
|
+
return nil
|
186
190
|
end
|
187
191
|
|
188
|
-
puts
|
192
|
+
puts "Use standard finishing commit message: [y/N]?"
|
189
193
|
commit_message = "[Finishes ##{GitUtils.current_branch_story_parts[:id]}] #{StringUtils.undashed GitUtils.current_branch_story_parts[:title]}"
|
190
194
|
puts commit_message
|
191
195
|
|
192
|
-
if gets.chomp!.downcase ==
|
196
|
+
if gets.chomp!.downcase == "y"
|
193
197
|
GitUtils.commit commit_message
|
194
198
|
else
|
195
199
|
puts "Aborted"
|
196
200
|
end
|
197
201
|
rescue RestClient::Unauthorized
|
198
|
-
$stderr.puts
|
202
|
+
$stderr.puts "Pivotal API key or Project ID invalid"
|
199
203
|
return nil
|
200
204
|
end
|
201
205
|
end
|
202
206
|
|
203
|
-
def config_file
|
204
|
-
|
205
|
-
end
|
206
|
-
|
207
|
-
def api_config_value
|
208
|
-
return @pivotal_api_info['api'] if @pivotal_api_info && @pivotal_api_info['api']
|
209
|
-
config_value 'api', 'PIVOTAL_API_KEY'
|
207
|
+
def config_file
|
208
|
+
PIVOTAL_CONFIG_FILES.select{|conf| File.exists? conf}.first
|
210
209
|
end
|
211
210
|
|
212
211
|
def config_value key, env
|
213
|
-
value = @pivotal_info[key] if @pivotal_info
|
212
|
+
value = @pivotal_info[key] if @pivotal_info and @pivotal_info[key]
|
214
213
|
value ||= env_required env
|
215
214
|
value
|
216
215
|
end
|
@@ -222,52 +221,62 @@ module StoryBranch
|
|
222
221
|
end
|
223
222
|
ENV[var_name]
|
224
223
|
end
|
224
|
+
|
225
225
|
end
|
226
226
|
|
227
227
|
class StringUtils
|
228
|
+
|
228
229
|
def self.dashed s
|
229
230
|
s.tr(' _,./:;+&', '-')
|
230
231
|
end
|
231
232
|
|
232
233
|
def self.simple_sanitize s
|
233
|
-
strip_newlines s.tr '\'"%!@#$(){}[]*\\?', ''
|
234
|
+
strip_newlines (s.tr '\'"%!@#$(){}[]*\\?', '')
|
234
235
|
end
|
235
236
|
|
236
237
|
def self.normalised_branch_name s
|
237
|
-
|
238
|
+
simple_sanitize((dashed s).downcase).squeeze("-")
|
238
239
|
end
|
239
240
|
|
240
241
|
def self.strip_newlines s
|
241
|
-
s.tr "\n",
|
242
|
+
s.tr "\n", "-"
|
242
243
|
end
|
243
244
|
|
244
245
|
def self.undashed s
|
245
|
-
s.
|
246
|
+
s.gsub(/-/, " ").capitalize
|
246
247
|
end
|
248
|
+
|
247
249
|
end
|
248
250
|
|
249
251
|
class GitUtils
|
252
|
+
|
250
253
|
def self.g
|
251
|
-
Git.open
|
254
|
+
Git.open "."
|
252
255
|
end
|
253
256
|
|
254
257
|
def self.is_existing_branch? name
|
255
258
|
branch_names.each do |n|
|
256
|
-
|
259
|
+
if Levenshtein.distance(n, name) < 3
|
260
|
+
return true
|
261
|
+
end
|
257
262
|
existing_branch_name = n.match(/(.*)(-[1-9][0-9]+$)/)
|
258
263
|
if existing_branch_name
|
259
264
|
levenshtein_distance = Levenshtein.distance existing_branch_name[1], name
|
260
|
-
|
265
|
+
if levenshtein_distance < 3
|
266
|
+
return true
|
267
|
+
end
|
261
268
|
end
|
262
269
|
end
|
263
|
-
false
|
270
|
+
return false
|
264
271
|
end
|
265
272
|
|
266
273
|
def self.is_existing_story? id
|
267
274
|
branch_names.each do |n|
|
268
275
|
branch_id = n.match(/-[1-9][0-9]+$/)
|
269
276
|
if branch_id
|
270
|
-
|
277
|
+
if branch_id.to_s == "-#{id}"
|
278
|
+
return true
|
279
|
+
end
|
271
280
|
end
|
272
281
|
end
|
273
282
|
false
|
@@ -286,8 +295,12 @@ module StoryBranch
|
|
286
295
|
end
|
287
296
|
|
288
297
|
def self.current_branch_story_parts
|
289
|
-
matches =
|
290
|
-
|
298
|
+
matches = current_story
|
299
|
+
if matches.length == 3
|
300
|
+
{ title: matches[1], id: matches[2] }
|
301
|
+
else
|
302
|
+
nil
|
303
|
+
end
|
291
304
|
end
|
292
305
|
|
293
306
|
def self.create_branch name
|
@@ -296,7 +309,11 @@ module StoryBranch
|
|
296
309
|
end
|
297
310
|
|
298
311
|
def self.status_collect status, regex
|
299
|
-
status.select
|
312
|
+
status.select{|e|
|
313
|
+
e.match(regex)
|
314
|
+
}.map{|e|
|
315
|
+
e.match(regex)[1]
|
316
|
+
}
|
300
317
|
end
|
301
318
|
|
302
319
|
def self.status
|
@@ -322,9 +339,11 @@ module StoryBranch
|
|
322
339
|
def self.commit message
|
323
340
|
g.commit(message)
|
324
341
|
end
|
342
|
+
|
325
343
|
end
|
326
344
|
|
327
345
|
class PivotalUtils
|
346
|
+
|
328
347
|
attr_accessor :api_key, :project_id, :project
|
329
348
|
|
330
349
|
def valid?
|
@@ -337,10 +356,11 @@ module StoryBranch
|
|
337
356
|
end
|
338
357
|
|
339
358
|
def is_current_branch_a_story?
|
340
|
-
GitUtils.current_story
|
359
|
+
GitUtils.current_story and
|
360
|
+
GitUtils.current_story.length == 3 and
|
341
361
|
filtered_stories_list(:started, true)
|
342
362
|
.map(&:id)
|
343
|
-
.include?
|
363
|
+
.include? GitUtils.current_story[2].to_i
|
344
364
|
end
|
345
365
|
|
346
366
|
def story_from_current_branch
|
@@ -356,9 +376,9 @@ module StoryBranch
|
|
356
376
|
stories = project.stories.all({current_state: state})
|
357
377
|
if estimated
|
358
378
|
stories.select{|s|
|
359
|
-
s.story_type ==
|
360
|
-
s.story_type ==
|
361
|
-
(s.story_type ==
|
379
|
+
s.story_type == "bug" or
|
380
|
+
s.story_type == "chore" or
|
381
|
+
(s.story_type == "feature" and s.estimate and s.estimate >= 0)}
|
362
382
|
else
|
363
383
|
stories
|
364
384
|
end
|
@@ -400,17 +420,16 @@ module StoryBranch
|
|
400
420
|
dashed_story_name = StringUtils.normalised_branch_name story.name
|
401
421
|
feature_branch_name = nil
|
402
422
|
puts "You are checked out at: #{GitUtils.current_branch}"
|
403
|
-
while feature_branch_name == nil
|
404
|
-
puts
|
405
|
-
feature_branch_name = readline(
|
423
|
+
while feature_branch_name == nil or feature_branch_name == ""
|
424
|
+
puts "Provide a new branch name... (TAB for suggested name)" if [nil, ""].include? feature_branch_name
|
425
|
+
feature_branch_name = readline("Name of feature branch: ", [dashed_story_name])
|
406
426
|
end
|
407
427
|
feature_branch_name.chomp!
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
GitUtils.create_branch feature_branch_name_with_story_id
|
428
|
+
if validate_branch_name feature_branch_name, story.id
|
429
|
+
feature_branch_name_with_story_id = "#{feature_branch_name}-#{story.id}"
|
430
|
+
puts "Creating: #{feature_branch_name_with_story_id} with #{GitUtils.current_branch} as parent"
|
431
|
+
GitUtils.create_branch feature_branch_name_with_story_id
|
432
|
+
end
|
414
433
|
end
|
415
434
|
|
416
435
|
# Branch name validation
|
@@ -420,7 +439,7 @@ module StoryBranch
|
|
420
439
|
return false
|
421
440
|
end
|
422
441
|
if GitUtils.is_existing_branch? name
|
423
|
-
puts "Error:
|
442
|
+
puts "Error: This name is very similar to an existing branch. Avoid confusion and use a more unique name."
|
424
443
|
return false
|
425
444
|
end
|
426
445
|
unless valid_branch_name? name
|
@@ -441,10 +460,10 @@ module StoryBranch
|
|
441
460
|
# Store the state of the terminal
|
442
461
|
RbReadline.clear_history
|
443
462
|
if completions.length > 0
|
444
|
-
completions.each {
|
445
|
-
RbReadline.rl_completer_word_break_characters =
|
446
|
-
Readline.completion_proc = proc {
|
447
|
-
Readline.completion_append_character =
|
463
|
+
completions.each {|i| Readline::HISTORY.push i}
|
464
|
+
RbReadline.rl_completer_word_break_characters = ""
|
465
|
+
Readline.completion_proc = proc {|s| completions.grep(/#{Regexp.escape(s)}/) }
|
466
|
+
Readline.completion_append_character = ""
|
448
467
|
end
|
449
468
|
Readline.readline(prompt, false)
|
450
469
|
end
|
metadata
CHANGED
@@ -1,17 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: story_branch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jason Milkins
|
8
8
|
- Rui Baltazar
|
9
9
|
- Dominic Wong
|
10
|
+
- Ranhiru Cooray
|
10
11
|
- Gabe Hollombe
|
11
12
|
autorequire:
|
12
13
|
bindir: bin
|
13
14
|
cert_chain: []
|
14
|
-
date:
|
15
|
+
date: 2015-04-14 00:00:00.000000000 Z
|
15
16
|
dependencies:
|
16
17
|
- !ruby/object:Gem::Dependency
|
17
18
|
name: pivotal-tracker
|
@@ -90,47 +91,22 @@ email:
|
|
90
91
|
- jasonm23@gmail.com
|
91
92
|
- rui.p.baltazar@gmail.com
|
92
93
|
- dominic.wong.617@gmail.com
|
94
|
+
- ranhiru@gmail.com
|
93
95
|
- gabe@neo.com
|
94
96
|
executables:
|
95
|
-
- story_start
|
96
|
-
- story-start
|
97
|
-
- git-start
|
98
|
-
- git-story-start
|
99
|
-
- story_unstart
|
100
|
-
- story-unstart
|
101
|
-
- git-unstart
|
102
|
-
- git-story-unstart
|
103
|
-
- story_branch
|
104
|
-
- story-branch
|
105
97
|
- git-story
|
106
|
-
- git-story-branch
|
107
|
-
- git-pivotal-story
|
108
|
-
- story_finish
|
109
|
-
- story-finish
|
110
98
|
- git-finish
|
111
|
-
- git-
|
99
|
+
- git-start
|
100
|
+
- git-unstart
|
112
101
|
extensions: []
|
113
102
|
extra_rdoc_files: []
|
114
103
|
files:
|
115
104
|
- LICENCE
|
116
105
|
- README.md
|
117
106
|
- bin/git-finish
|
118
|
-
- bin/git-pivotal-story
|
119
107
|
- bin/git-start
|
120
108
|
- bin/git-story
|
121
|
-
- bin/git-story-branch
|
122
|
-
- bin/git-story-finish
|
123
|
-
- bin/git-story-start
|
124
|
-
- bin/git-story-unstart
|
125
109
|
- bin/git-unstart
|
126
|
-
- bin/story-branch
|
127
|
-
- bin/story-finish
|
128
|
-
- bin/story-start
|
129
|
-
- bin/story-unstart
|
130
|
-
- bin/story_branch
|
131
|
-
- bin/story_finish
|
132
|
-
- bin/story_start
|
133
|
-
- bin/story_unstart
|
134
110
|
- lib/story_branch.rb
|
135
111
|
homepage: https://github.com/jasonm23/story_branch
|
136
112
|
licenses:
|
data/bin/git-pivotal-story
DELETED
data/bin/git-story-branch
DELETED
data/bin/git-story-finish
DELETED
data/bin/git-story-start
DELETED
data/bin/git-story-unstart
DELETED
data/bin/story-branch
DELETED
data/bin/story-finish
DELETED
data/bin/story-start
DELETED
data/bin/story-unstart
DELETED
data/bin/story_branch
DELETED
data/bin/story_finish
DELETED
data/bin/story_start
DELETED
data/bin/story_unstart
DELETED