v2gpti 1.1.3 → 1.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/git-newbug +19 -0
- data/bin/git-newfeature +19 -0
- data/bin/git-qa +9 -0
- data/bin/git-uat +19 -0
- data/lib/git-pivotal-tracker-integration/command/base.rb +215 -31
- data/lib/git-pivotal-tracker-integration/command/configuration.rb +19 -0
- data/lib/git-pivotal-tracker-integration/command/deliver.rb +100 -100
- data/lib/git-pivotal-tracker-integration/command/finish.rb +30 -23
- data/lib/git-pivotal-tracker-integration/command/newbug.rb +59 -0
- data/lib/git-pivotal-tracker-integration/command/newfeature.rb +62 -0
- data/lib/git-pivotal-tracker-integration/command/prepare-commit-msg-win.sh +26 -0
- data/lib/git-pivotal-tracker-integration/command/release.rb +20 -16
- data/lib/git-pivotal-tracker-integration/command/report.rb +13 -12
- data/lib/git-pivotal-tracker-integration/command/start.rb +6 -3
- data/lib/git-pivotal-tracker-integration/util/git.rb +1 -1
- data/lib/git-pivotal-tracker-integration/util/story.rb +14 -9
- data/lib/git-pivotal-tracker-integration/util/togglV8.rb +23 -5
- metadata +28 -3
@@ -28,9 +28,9 @@ class GitPivotalTrackerIntegration::Command::Finish < GitPivotalTrackerIntegrati
|
|
28
28
|
#
|
29
29
|
# @return [void]
|
30
30
|
def run(argument)
|
31
|
-
$LOG.debug("#{self.class} in project:#{@project.name} pwd:#{
|
31
|
+
$LOG.debug("#{self.class} in project:#{@project.name} pwd:#{pwd} branch:#{GitPivotalTrackerIntegration::Util::Git.branch_name}")
|
32
32
|
no_complete = argument =~ /--no-complete/
|
33
|
-
|
33
|
+
|
34
34
|
branch_status_check = GitPivotalTrackerIntegration::Util::Shell.exec "git status -s"
|
35
35
|
abort "\n\nThere are some unstaged changes in your current branch. Please do execute the below commands first and then try with git finish \n git add . \n git commit -m '<your-commit-message>'" unless branch_status_check.empty?
|
36
36
|
|
@@ -39,8 +39,10 @@ class GitPivotalTrackerIntegration::Command::Finish < GitPivotalTrackerIntegrati
|
|
39
39
|
$LOG.debug("configuration:#{@configuration}")
|
40
40
|
$LOG.debug("project:#{@project}")
|
41
41
|
$LOG.debug("story:#{@configuration.story(@project)}")
|
42
|
+
|
42
43
|
memm = PivotalTracker::Membership.all(@project)
|
43
44
|
self.commit_new_build
|
45
|
+
|
44
46
|
time_spent = ""
|
45
47
|
while 1
|
46
48
|
time_spent = ask("How much time did you spend on this task? (example: 15m, 2.5h)")
|
@@ -48,36 +50,41 @@ class GitPivotalTrackerIntegration::Command::Finish < GitPivotalTrackerIntegrati
|
|
48
50
|
break
|
49
51
|
end
|
50
52
|
end
|
53
|
+
|
51
54
|
finish_toggle(@configuration, time_spent)
|
55
|
+
|
52
56
|
GitPivotalTrackerIntegration::Util::Git.merge(@configuration.story(@project), no_complete)
|
53
57
|
GitPivotalTrackerIntegration::Util::Git.push GitPivotalTrackerIntegration::Util::Git.branch_name
|
54
58
|
end
|
55
59
|
|
56
60
|
|
57
|
-
def commit_new_build
|
58
|
-
|
59
|
-
|
61
|
+
def commit_new_build
|
62
|
+
# Update version and build numbers
|
63
|
+
build_number = Time.now.utc.strftime("%y%m%d-%H%M")
|
64
|
+
working_directory = pwd
|
60
65
|
|
61
|
-
|
62
|
-
|
63
|
-
if project_directory.nil?
|
64
|
-
return
|
65
|
-
end
|
66
|
-
working_directory = (GitPivotalTrackerIntegration::Util::Shell.exec "pwd").chop
|
67
|
-
puts "working_directory:#{working_directory}*"
|
66
|
+
puts "build_number:#{build_number}"
|
67
|
+
puts "working_directory:#{working_directory}*"
|
68
68
|
|
69
|
-
|
70
|
-
|
69
|
+
if (OS.mac? && ["y","ios"].include?(@platform.downcase))
|
70
|
+
project_directory = ((GitPivotalTrackerIntegration::Util::Shell.exec 'find . -name "*.xcodeproj" 2>/dev/null').split /\/(?=[^\/]*$)/)[0]
|
71
|
+
return if project_directory.nil?
|
71
72
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
73
|
+
# cd to the project_directory
|
74
|
+
Dir.chdir(project_directory)
|
75
|
+
|
76
|
+
# set build number and project number in project file
|
77
|
+
pwd
|
78
|
+
puts GitPivotalTrackerIntegration::Util::Shell.exec "xcrun agvtool new-version -all #{build_number}", false
|
79
|
+
puts GitPivotalTrackerIntegration::Util::Shell.exec "xcrun agvtool new-marketing-version SNAPSHOT"
|
80
|
+
|
81
|
+
# cd back to the working_directory
|
82
|
+
Dir.chdir(working_directory)
|
83
|
+
end
|
84
|
+
|
85
|
+
# Create a new build commit, push to develop
|
86
|
+
GitPivotalTrackerIntegration::Util::Git.create_commit( "Update build number to #{build_number}", @configuration.story(@project))
|
87
|
+
end
|
76
88
|
|
77
|
-
# cd back to the working_directory
|
78
|
-
Dir.chdir(working_directory)
|
79
89
|
|
80
|
-
# Create a new build commit, push to develop
|
81
|
-
GitPivotalTrackerIntegration::Util::Git.create_commit( "Update build number to #{build_number}", @configuration.story(@project))
|
82
|
-
end
|
83
90
|
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# Git Pivotal Tracker Integration
|
2
|
+
# Copyright (c) 2013 the original author or authors.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
|
16
|
+
require 'git-pivotal-tracker-integration/command/base'
|
17
|
+
require 'git-pivotal-tracker-integration/command/command'
|
18
|
+
require 'git-pivotal-tracker-integration/util/git'
|
19
|
+
require 'git-pivotal-tracker-integration/util/story'
|
20
|
+
require 'pivotal-tracker'
|
21
|
+
|
22
|
+
# The class that encapsulates creating a Pivotal Tracker Bug Story
|
23
|
+
class GitPivotalTrackerIntegration::Command::Newbug < GitPivotalTrackerIntegration::Command::Base
|
24
|
+
|
25
|
+
# Creates a Pivotal Tracker story by doing the following steps:
|
26
|
+
# * Takes arguments from command line
|
27
|
+
# * If arguments contains -i then it creates a bug story under icebox
|
28
|
+
# * If arguments contains -b then it creates a bug story under backlog
|
29
|
+
# * If arguments contains -tl then it creates a bug story at top of specified list
|
30
|
+
# * If arguments contains -bl then it creates a bug story at bottom of specified list
|
31
|
+
# * If there are no arguments passed then it creates a bug story in icebox top of the list if you wish to create
|
32
|
+
def run(args)
|
33
|
+
my_projects = PivotalTracker::Project.all
|
34
|
+
$LOG.debug("#{self.class} in project:#{@project.name} pwd:#{pwd} branch:#{GitPivotalTrackerIntegration::Util::Git.branch_name}")
|
35
|
+
story = nil
|
36
|
+
if (!args.empty? && args.any?{|arg| arg.include?("-i")})
|
37
|
+
story = self.create_icebox_bug_story(args)
|
38
|
+
elsif (!args.empty? && args.any?{|arg| arg.include?("-b")})
|
39
|
+
story = self.create_backlog_bug_story(args)
|
40
|
+
else
|
41
|
+
puts "\n Syntax for creating new bug story in icebox top of the list:\n git newbug -i -tl <bug-title> \n Syntax for creating new bug story in icebox bottom of the list: \n git newbug -i -bl <bug-title>\n"
|
42
|
+
puts "\n Syntax for creating new bug story in backlog top of the list:\n git newbug -b -tl <bug-title> \n Syntax for creating new bug story in backlog bottom of the list: \n git newbug -b -bl <bug-title>\n"
|
43
|
+
user_response = nil
|
44
|
+
while (user_response.nil? || user_response.empty?)
|
45
|
+
user_response = ask("\nYou have missed some parameters to pass...If you are ok with creating new bug story in icebox then enter y otherwise enter n")
|
46
|
+
end
|
47
|
+
while !(["y","n"].include?(user_response))
|
48
|
+
user_response = ask("\nInvalid entry...If you are ok with creating new bug story in icebox then enter y otherwise enter n")
|
49
|
+
end
|
50
|
+
if user_response.downcase == "y"
|
51
|
+
story = self.create_icebox_bug_story(args)
|
52
|
+
else
|
53
|
+
abort "\nCheck your new bug story creation syntax and then try again"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
puts "A new bug story has been created successfully with ID:#{story.id}"
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# Git Pivotal Tracker Integration
|
2
|
+
# Copyright (c) 2013 the original author or authors.
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
+
# you may not use this file except in compliance with the License.
|
6
|
+
# You may obtain a copy of the License at
|
7
|
+
#
|
8
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
9
|
+
#
|
10
|
+
# Unless required by applicable law or agreed to in writing, software
|
11
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
+
# See the License for the specific language governing permissions and
|
14
|
+
# limitations under the License.
|
15
|
+
|
16
|
+
require 'git-pivotal-tracker-integration/command/base'
|
17
|
+
require 'git-pivotal-tracker-integration/command/command'
|
18
|
+
require 'git-pivotal-tracker-integration/util/git'
|
19
|
+
require 'git-pivotal-tracker-integration/util/story'
|
20
|
+
require 'pivotal-tracker'
|
21
|
+
|
22
|
+
# The class that encapsulates creating a Pivotal Tracker Bug Story
|
23
|
+
class GitPivotalTrackerIntegration::Command::Newfeature < GitPivotalTrackerIntegration::Command::Base
|
24
|
+
|
25
|
+
# Creates a Pivotal Tracker story by doing the following steps:
|
26
|
+
# * Takes arguments from command line
|
27
|
+
# * If arguments contains -i then it creates a feature story under icebox
|
28
|
+
# * If arguments contains -b then it creates a feature story under backlog
|
29
|
+
# * If arguments contains -tl then it creates a feature story at top of specified list
|
30
|
+
# * If arguments contains -bl then it creates a feature story at bottom of specified list
|
31
|
+
# * If arguments contains -p1 then it creates a feature story with estimate as 1 point.
|
32
|
+
# * If arguments contains -p2 then it creates a feature story with estimate as 2 points.
|
33
|
+
# * If arguments contains -p3 then it creates a feature story with estimate as 3 points.
|
34
|
+
# * If there are no arguments passed then it creates a feature story in icebox top of the list if you wish to create
|
35
|
+
def run(args)
|
36
|
+
my_projects = PivotalTracker::Project.all
|
37
|
+
$LOG.debug("#{self.class} in project:#{@project.name} pwd:#{pwd} branch:#{GitPivotalTrackerIntegration::Util::Git.branch_name}")
|
38
|
+
story = nil
|
39
|
+
if (!args.empty? && args.any?{|arg| arg.include?("-i")})
|
40
|
+
story = self.create_icebox_feature_story(args)
|
41
|
+
elsif (!args.empty? && args.any?{|arg| arg.include?("-b")})
|
42
|
+
story = self.create_backlog_feature_story(args)
|
43
|
+
else
|
44
|
+
puts "\n Syntax for creating new feature story in icebox top of the list:\n git newfeature -i -tl <feature-title> \n Syntax for creating new feature story in icebox bottom of the list: \n git newfeature -i -bl <feature-title>\n"
|
45
|
+
puts "\n Syntax for creating new feature story in backlog top of the list:\n git newfeature -b -tl <feature-title> \n Syntax for creating new feature story in backlog bottom of the list: \n git newfeature -b -bl <feature-title>\n"
|
46
|
+
user_response = nil
|
47
|
+
while (user_response.nil? || user_response.empty?)
|
48
|
+
user_response = ask("\nYou have missed some parameters to pass...If you are ok with creating new feature story in icebox then enter y otherwise enter n")
|
49
|
+
end
|
50
|
+
while !(["y","n"].include?(user_response.downcase))
|
51
|
+
user_response = ask("\nInvalid entry...If you are ok with creating new feature story in icebox then enter y otherwise enter n")
|
52
|
+
end
|
53
|
+
if user_response.downcase == "y"
|
54
|
+
story = self.create_icebox_feature_story(args)
|
55
|
+
else
|
56
|
+
abort "\nCheck your new feature story creation syntax and then try again"
|
57
|
+
end
|
58
|
+
end
|
59
|
+
puts "A new feature story has been created successfully with ID:#{story.id}"
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
# Git Pivotal Tracker Integration
|
3
|
+
# Copyright (c) 2013 the original author or authors.
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
18
|
+
STORY_ID=$(git config branch.$CURRENT_BRANCH.pivotal-story-id)
|
19
|
+
|
20
|
+
if [[ $2 != "commit" && -n $STORY_ID ]]; then
|
21
|
+
ORIG_MSG_FILE="$1"
|
22
|
+
TEMP="/tmp/git-$RANDOM"
|
23
|
+
|
24
|
+
(printf "\n\n[#$STORY_ID]" ; cat "$1") > "$TEMP"
|
25
|
+
cat "$TEMP" > "$ORIG_MSG_FILE"
|
26
|
+
fi
|
@@ -34,7 +34,7 @@ class GitPivotalTrackerIntegration::Command::Release < GitPivotalTrackerIntegrat
|
|
34
34
|
# * +nil+
|
35
35
|
# @return [void]
|
36
36
|
def run(filter)
|
37
|
-
$LOG.debug("#{self.class} in project:#{@project.name} pwd:#{
|
37
|
+
$LOG.debug("#{self.class} in project:#{@project.name} pwd:#{pwd} branch:#{GitPivotalTrackerIntegration::Util::Git.branch_name}")
|
38
38
|
story = GitPivotalTrackerIntegration::Util::Story.select_release(@project, filter.nil? ? 'v' : filter)
|
39
39
|
GitPivotalTrackerIntegration::Util::Story.pretty_print story
|
40
40
|
$LOG.debug("story:#{story.name}")
|
@@ -42,15 +42,15 @@ class GitPivotalTrackerIntegration::Command::Release < GitPivotalTrackerIntegrat
|
|
42
42
|
current_branch = GitPivotalTrackerIntegration::Util::Git.branch_name
|
43
43
|
|
44
44
|
# checkout QA branch
|
45
|
-
# Update QA from origin
|
45
|
+
# Update QA from origin
|
46
46
|
puts GitPivotalTrackerIntegration::Util::Shell.exec "git checkout QA"
|
47
47
|
puts GitPivotalTrackerIntegration::Util::Shell.exec "git fetch"
|
48
|
-
|
48
|
+
GitPivotalTrackerIntegration::Util::Shell.exec "git merge -s recursive --strategy-option theirs origin QA"
|
49
49
|
|
50
50
|
# checkout master branch
|
51
51
|
# Merge QA into master
|
52
52
|
puts GitPivotalTrackerIntegration::Util::Shell.exec "git checkout master"
|
53
|
-
|
53
|
+
puts GitPivotalTrackerIntegration::Util::Shell.exec "git pull"
|
54
54
|
if (GitPivotalTrackerIntegration::Util::Shell.exec "git merge -s recursive --strategy-option theirs QA")
|
55
55
|
puts "Merged 'QA' in to 'master'"
|
56
56
|
else
|
@@ -58,27 +58,31 @@ class GitPivotalTrackerIntegration::Command::Release < GitPivotalTrackerIntegrat
|
|
58
58
|
end
|
59
59
|
|
60
60
|
# Update version and build numbers
|
61
|
-
version_number
|
61
|
+
version_number = story.name.dup
|
62
62
|
version_number[0] = ""
|
63
|
+
working_directory = pwd
|
64
|
+
|
63
65
|
puts "storyNAME:#{story.name}"
|
64
66
|
puts "version_number:#{version_number}"
|
65
|
-
project_directory = ((GitPivotalTrackerIntegration::Util::Shell.exec 'find . -name "*.xcodeproj" 2>/dev/null').split /\/(?=[^\/]*$)/)[0]
|
66
|
-
working_directory = (GitPivotalTrackerIntegration::Util::Shell.exec "pwd").chop
|
67
67
|
puts "working_directory:#{working_directory}*"
|
68
|
-
|
69
|
-
# cd to the project_directory
|
70
|
-
Dir.chdir(project_directory)
|
71
68
|
|
72
|
-
|
73
|
-
|
74
|
-
|
69
|
+
if (OS.mac? && ["y","ios"].include?(@platform.downcase))
|
70
|
+
project_directory = ((GitPivotalTrackerIntegration::Util::Shell.exec 'find . -name "*.xcodeproj" 2>/dev/null').split /\/(?=[^\/]*$)/)[0]
|
71
|
+
|
72
|
+
# cd to the project_directory
|
73
|
+
Dir.chdir(project_directory)
|
75
74
|
|
76
|
-
|
77
|
-
|
75
|
+
# set project number in project file
|
76
|
+
pwd
|
77
|
+
puts GitPivotalTrackerIntegration::Util::Shell.exec "xcrun agvtool new-marketing-version #{version_number}"
|
78
|
+
|
79
|
+
# cd back to the working_directory
|
80
|
+
Dir.chdir(working_directory)
|
81
|
+
end
|
78
82
|
|
79
83
|
# Create a new build commit, push to QA, checkout develop
|
80
84
|
puts GitPivotalTrackerIntegration::Util::Git.create_commit( "Update version number to #{version_number} for delivery to QA", story)
|
81
|
-
puts GitPivotalTrackerIntegration::Util::Shell.exec "git push"
|
85
|
+
puts GitPivotalTrackerIntegration::Util::Shell.exec "git push"
|
82
86
|
puts GitPivotalTrackerIntegration::Util::Shell.exec "git checkout #{current_branch}"
|
83
87
|
|
84
88
|
s_labels_string = story.labels
|
@@ -28,7 +28,7 @@ class GitPivotalTrackerIntegration::Command::Report < GitPivotalTrackerIntegrati
|
|
28
28
|
owned_by = "Jeff Wolski" # hard coded to Jeff Wolski for now
|
29
29
|
|
30
30
|
|
31
|
-
$LOG.debug("#{self.class} in project:#{@project.name} pwd:#{
|
31
|
+
$LOG.debug("#{self.class} in project:#{@project.name} pwd:#{pwd} branch:#{GitPivotalTrackerIntegration::Util::Git.branch_name}")
|
32
32
|
bug_title = nil
|
33
33
|
if args.length == 1
|
34
34
|
bug_title = args[0]
|
@@ -43,19 +43,20 @@ class GitPivotalTrackerIntegration::Command::Report < GitPivotalTrackerIntegrati
|
|
43
43
|
report_note = ask("Description of bug:")
|
44
44
|
end
|
45
45
|
|
46
|
-
current_user
|
47
|
-
bug_title
|
48
|
-
current_user_email
|
49
|
-
bug_description
|
46
|
+
current_user = (GitPivotalTrackerIntegration::Util::Shell.exec "git config user.name").chomp
|
47
|
+
bug_title = "User Reported - #{current_user} - #{bug_title}"
|
48
|
+
current_user_email = (GitPivotalTrackerIntegration::Util::Shell.exec "git config user.email").chomp
|
49
|
+
bug_description = "#{@project.name}\n#{current_user_email}\n#{report_note}"
|
50
50
|
|
51
51
|
bug_story = PivotalTracker::Story.new
|
52
|
-
bug_story.project_id
|
53
|
-
bug_story.owned_by
|
54
|
-
bug_story.story_type
|
55
|
-
bug_story.name
|
56
|
-
bug_story.description
|
57
|
-
bug_story.labels
|
58
|
-
uploaded_story
|
52
|
+
bug_story.project_id = "1067990"
|
53
|
+
bug_story.owned_by = owned_by
|
54
|
+
bug_story.story_type = "bug"
|
55
|
+
bug_story.name = bug_title
|
56
|
+
bug_story.description = bug_description
|
57
|
+
bug_story.labels = "userreported"
|
58
|
+
uploaded_story = bug_story.create
|
59
|
+
|
59
60
|
uploaded_story.upload_attachment(self.logger_filename)
|
60
61
|
end
|
61
62
|
|
@@ -36,7 +36,7 @@ class GitPivotalTrackerIntegration::Command::Start < GitPivotalTrackerIntegratio
|
|
36
36
|
def run(args)
|
37
37
|
my_projects = PivotalTracker::Project.all
|
38
38
|
filter = args[0]
|
39
|
-
$LOG.debug("#{self.class} in project:#{@project.name} pwd:#{
|
39
|
+
$LOG.debug("#{self.class} in project:#{@project.name} pwd:#{pwd} branch:#{GitPivotalTrackerIntegration::Util::Git.branch_name} args:#{filter}")
|
40
40
|
self.check_branch
|
41
41
|
story = nil
|
42
42
|
if (!args.nil? && args.any?{|arg| arg.include?("-n")})
|
@@ -47,13 +47,16 @@ class GitPivotalTrackerIntegration::Command::Start < GitPivotalTrackerIntegratio
|
|
47
47
|
if story.nil?
|
48
48
|
abort "There are no available stories."
|
49
49
|
end
|
50
|
+
if story.story_type == "feature" && story.estimate < 0
|
51
|
+
estimate_story(story)
|
52
|
+
end
|
50
53
|
$LOG.debug("story:#{story.name}")
|
51
54
|
GitPivotalTrackerIntegration::Util::Story.pretty_print story
|
52
55
|
|
53
56
|
development_branch_name = development_branch_name story
|
54
57
|
GitPivotalTrackerIntegration::Util::Git.create_branch development_branch_name
|
55
58
|
@configuration.story = story
|
56
|
-
GitPivotalTrackerIntegration::Util::Git.add_hook 'prepare-commit-msg', File.join(File.dirname(__FILE__), 'prepare-commit-msg.sh')
|
59
|
+
GitPivotalTrackerIntegration::Util::Git.add_hook 'prepare-commit-msg', File.join(File.dirname(__FILE__), !OS.windows? ? 'prepare-commit-msg.sh' : 'prepare-commit-msg-win.sh' )
|
57
60
|
|
58
61
|
start_on_tracker story
|
59
62
|
end
|
@@ -63,7 +66,7 @@ class GitPivotalTrackerIntegration::Command::Start < GitPivotalTrackerIntegratio
|
|
63
66
|
current_branch = GitPivotalTrackerIntegration::Util::Git.branch_name
|
64
67
|
# suggested_branch = (GitPivotalTrackerIntegration::Util::Shell.exec "git config --get git-pivotal-tracker-integration.feature-root 2>/dev/null", false).chomp
|
65
68
|
suggested_branch = "develop"
|
66
|
-
|
69
|
+
|
67
70
|
if !suggested_branch.nil? && suggested_branch.length !=0 && current_branch != suggested_branch
|
68
71
|
$LOG.warn("Currently checked out branch is '#{current_branch}'.")
|
69
72
|
should_chage_branch = ask("Your currently checked out branch is '#{current_branch}'. Do you want to checkout '#{suggested_branch}' before starting?(Y/n)")
|
@@ -224,7 +224,7 @@ class GitPivotalTrackerIntegration::Util::Git
|
|
224
224
|
common_ancestor = GitPivotalTrackerIntegration::Util::Shell.exec "git merge-base #{root_branch} #{development_branch}"
|
225
225
|
|
226
226
|
if root_tip != common_ancestor
|
227
|
-
abort '
|
227
|
+
abort "\n#{root_branch} branch is ahead of your #{development_branch} branch. \nSo please merge #{root_branch} to #{development_branch} and resolve any conflicts if any. Run 'git merge #{root_branch}' and try git finish again."
|
228
228
|
end
|
229
229
|
|
230
230
|
puts 'OK'
|
@@ -113,7 +113,7 @@ class GitPivotalTrackerIntegration::Util::Story
|
|
113
113
|
def self.find_story(project, type, limit)
|
114
114
|
if (type == "b" || type == "v")
|
115
115
|
release_type = type
|
116
|
-
type = "release"
|
116
|
+
type = "release"
|
117
117
|
end
|
118
118
|
criteria = {
|
119
119
|
:current_state => CANDIDATE_STATES,
|
@@ -131,16 +131,16 @@ class GitPivotalTrackerIntegration::Util::Story
|
|
131
131
|
|
132
132
|
candidates.each {|val|
|
133
133
|
val_is_valid = true
|
134
|
-
if (val.story_type == "feature" )
|
134
|
+
if (val.story_type == "feature" )
|
135
135
|
# puts "#{val.story_type} #{val.name}.estimate:#{val.estimate} "
|
136
136
|
if (val.estimate < 0)
|
137
|
-
# puts "#{val.estimate} < 0"
|
138
|
-
val_is_valid = false
|
137
|
+
# puts "#{val.estimate} < 0"
|
138
|
+
val_is_valid = false
|
139
139
|
end
|
140
140
|
elsif (val.story_type == "release")
|
141
141
|
label_string = val.labels
|
142
142
|
if label_string.nil?
|
143
|
-
label_string = "";
|
143
|
+
label_string = "";
|
144
144
|
end
|
145
145
|
if (val.name[0] != release_type) || (label_string.include? val.name)
|
146
146
|
val_is_valid = false
|
@@ -150,7 +150,7 @@ class GitPivotalTrackerIntegration::Util::Story
|
|
150
150
|
if val_is_valid
|
151
151
|
# puts "val_is_valid:#{val_is_valid}"
|
152
152
|
estimated_candidates << val
|
153
|
-
end
|
153
|
+
end
|
154
154
|
}
|
155
155
|
candidates = estimated_candidates
|
156
156
|
|
@@ -166,6 +166,10 @@ class GitPivotalTrackerIntegration::Util::Story
|
|
166
166
|
name = type ? story.name : '%-7s %s' % [story.story_type.upcase, story.name]
|
167
167
|
menu.choice(name) { story }
|
168
168
|
end
|
169
|
+
menu.choice('Quit') do
|
170
|
+
say "Thank you for using v2gpti"
|
171
|
+
exit 0
|
172
|
+
end
|
169
173
|
end
|
170
174
|
|
171
175
|
puts
|
@@ -183,7 +187,7 @@ class GitPivotalTrackerIntegration::Util::Story
|
|
183
187
|
end
|
184
188
|
end
|
185
189
|
|
186
|
-
|
190
|
+
|
187
191
|
|
188
192
|
story
|
189
193
|
end
|
@@ -194,9 +198,10 @@ class GitPivotalTrackerIntegration::Util::Story
|
|
194
198
|
}
|
195
199
|
|
196
200
|
candidates = project.stories.all criteria
|
197
|
-
candidates = candidates.select {|x| (x.name[0]==release_type) && !(x.labels.nil? || (!x.labels.include?x.name))}
|
201
|
+
candidates = candidates.select {|x| (x.name[0]==release_type) && !(x.labels.nil? || (!x.labels.include? x.name))}
|
202
|
+
candidates.sort! {|x,y| y.name <=> x.name }
|
198
203
|
|
199
|
-
candidates
|
204
|
+
candidates.first
|
200
205
|
end
|
201
206
|
|
202
207
|
def self.create_new_release (project, next_release_number)
|