git-process 0.9.1.pre3 → 0.9.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.
Files changed (57) hide show
  1. data/CHANGELOG.md +0 -0
  2. data/Gemfile +2 -2
  3. data/Gemfile.lock +2 -0
  4. data/README.md +27 -9
  5. data/bin/git-new-fb +42 -13
  6. data/bin/git-pull-request +79 -13
  7. data/bin/git-sync +47 -13
  8. data/bin/git-to-master +56 -13
  9. data/git-process.gemspec +1 -1
  10. data/lib/git-process/{abstract-error-builder.rb → abstract_error_builder.rb} +13 -3
  11. data/lib/git-process/{git-abstract-merge-error-builder.rb → git_abstract_merge_error_builder.rb} +15 -5
  12. data/lib/git-process/{git-branch.rb → git_branch.rb} +13 -1
  13. data/lib/git-process/git_branches.rb +72 -0
  14. data/lib/git-process/{git-lib.rb → git_lib.rb} +82 -70
  15. data/lib/git-process/git_merge_error.rb +38 -0
  16. data/lib/git-process/git_process.rb +124 -0
  17. data/lib/git-process/git_process_error.rb +18 -0
  18. data/lib/git-process/git_process_options.rb +101 -0
  19. data/lib/git-process/git_rebase_error.rb +38 -0
  20. data/lib/git-process/{git-status.rb → git_status.rb} +13 -1
  21. data/lib/git-process/{github-client.rb → github_client.rb} +13 -1
  22. data/lib/git-process/github_pull_request.rb +107 -0
  23. data/lib/git-process/{github-service.rb → github_service.rb} +39 -21
  24. data/lib/git-process/new_fb.rb +40 -0
  25. data/lib/git-process/parked_changes_error.rb +40 -0
  26. data/lib/git-process/pull_request.rb +61 -0
  27. data/lib/git-process/rebase_to_master.rb +110 -0
  28. data/lib/git-process/sync.rb +63 -0
  29. data/lib/git-process/uncommitted_changes_error.rb +23 -0
  30. data/lib/git-process/version.rb +19 -9
  31. data/spec/GitRepoHelper.rb +35 -21
  32. data/spec/{git-abstract-merge-error-builder_spec.rb → git_abstract_merge_error_builder_spec.rb} +3 -3
  33. data/spec/{git-lib_spec.rb → git_lib_spec.rb} +79 -16
  34. data/spec/git_process_spec.rb +36 -0
  35. data/spec/{git-status_spec.rb → git_status_spec.rb} +28 -29
  36. data/spec/github_pull_request_spec.rb +91 -0
  37. data/spec/{github-service_spec.rb → github_service_spec.rb} +1 -1
  38. data/spec/new_fb_spec.rb +80 -0
  39. data/spec/rebase_to_master_spec.rb +314 -0
  40. data/spec/spec_helper.rb +1 -1
  41. data/spec/sync_spec.rb +149 -0
  42. metadata +46 -43
  43. data/lib/git-process/git-branches.rb +0 -53
  44. data/lib/git-process/git-merge-error.rb +0 -31
  45. data/lib/git-process/git-new-fb-options.rb +0 -34
  46. data/lib/git-process/git-process-error.rb +0 -10
  47. data/lib/git-process/git-process-options.rb +0 -82
  48. data/lib/git-process/git-process.rb +0 -194
  49. data/lib/git-process/git-pull-request-options.rb +0 -42
  50. data/lib/git-process/git-rebase-error.rb +0 -31
  51. data/lib/git-process/git-sync-options.rb +0 -34
  52. data/lib/git-process/git-to-master-options.rb +0 -18
  53. data/lib/git-process/parked-changes-error.rb +0 -32
  54. data/lib/git-process/pull-request.rb +0 -38
  55. data/lib/git-process/uncommitted-changes-error.rb +0 -15
  56. data/spec/git-process_spec.rb +0 -328
  57. data/spec/pull-request_spec.rb +0 -57
@@ -0,0 +1,107 @@
1
+ # Licensed under the Apache License, Version 2.0 (the "License");
2
+ # you may not use this file except in compliance with the License.
3
+ # You may obtain a copy of the License at
4
+ #
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and
11
+ # limitations under the License.require 'shellwords'
12
+
13
+ require 'git-process/github_service'
14
+ require 'octokit'
15
+ require 'octokit/repository'
16
+
17
+
18
+ module GitHub
19
+
20
+ class PullRequest
21
+ include GitHubService
22
+
23
+ attr_reader :lib, :repo
24
+
25
+ def initialize(lib, repo, opts = {})
26
+ @lib = lib
27
+ @repo = repo
28
+ @user = opts[:user]
29
+ @password = opts[:password]
30
+ end
31
+
32
+
33
+ def pull_requests
34
+ @pull_requests ||= client.pull_requests(repo)
35
+ end
36
+
37
+
38
+ def create(base, head, title, body)
39
+ logger.info { "Creating a pull request asking for '#{head}' to be merged into '#{base}' on #{repo}." }
40
+ begin
41
+ client.create_pull_request(repo, base, head, title, body)
42
+ rescue Octokit::UnprocessableEntity => exp
43
+ pull = pull_requests.find {|p| p[:head][:ref] == head and p[:base][:ref] == base}
44
+ logger.warn { "Pull request already exists. See #{pull[:html_url]}" }
45
+ pull
46
+ end
47
+ end
48
+
49
+
50
+ def find_pull_request(base, head)
51
+ json = pull_requests
52
+ json.find {|p| p[:head][:ref] == head and p[:base][:ref] == base}
53
+ end
54
+
55
+
56
+ def close(*args)
57
+ pull_number = nil
58
+
59
+ if args.size == 2
60
+ base = args[0]
61
+ head = args[1]
62
+ logger.info { "Closing a pull request asking for '#{head}' to be merged into '#{base}' on #{repo}." }
63
+
64
+ json = pull_requests
65
+ pull = json.find {|p| p[:head][:ref] == head and p[:base][:ref] == base}
66
+
67
+ raise NotFoundError.new(base, head, repo, json) if pull.nil?
68
+
69
+ pull_number = pull[:number]
70
+ elsif args.size == 1
71
+ pull_number = args[0]
72
+ logger.info { "Closing a pull request \##{pull_number} on #{repo}." }
73
+ end
74
+
75
+ client.patch("repos/#{Octokit::Repository.new(repo)}/pulls/#{pull_number}", {:state => 'closed'})
76
+ end
77
+
78
+
79
+ class NotFoundError < StandardError
80
+ attr_reader :base, :head, :repo
81
+
82
+ def initialize(base, head, repo, pull_requests_json)
83
+ @base = base
84
+ @head = head
85
+ @repo = repo
86
+
87
+ @pull_requests = pull_requests_json.map do |p|
88
+ {:head => p[:head][:ref], :base => p[:base][:ref]}
89
+ end
90
+
91
+ msg = "Could not find a pull request for '#{head}' to be merged with '#{base}' on #{repo}."
92
+ msg += "\n\nExisting Pull Requests:"
93
+ msg = pull_requests.inject(msg) {|a,v| "#{a}\n #{v[:head]} -> #{v[:base]}" }
94
+
95
+ super(msg)
96
+ end
97
+
98
+
99
+ def pull_requests
100
+ @pull_requests
101
+ end
102
+
103
+ end
104
+
105
+ end
106
+
107
+ end
@@ -1,12 +1,24 @@
1
+ # Licensed under the Apache License, Version 2.0 (the "License");
2
+ # you may not use this file except in compliance with the License.
3
+ # You may obtain a copy of the License at
4
+ #
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and
11
+ # limitations under the License.require 'shellwords'
12
+
1
13
  require 'highline/import'
2
- require 'github-client'
14
+ require 'git-process/github_client'
3
15
  require 'uri'
4
16
 
5
17
 
6
18
  module GitHubService
7
19
 
8
20
  def client
9
- unless @client
21
+ if @client.nil?
10
22
  auth_token
11
23
  logger.debug { "Creating GitHub client for user #{user} using token '#{auth_token}'" }
12
24
  @client = GitHubClient.new(:login => user, :oauth_token=> auth_token)
@@ -36,11 +48,13 @@ module GitHubService
36
48
 
37
49
  raise URI::InvalidURIError.new("Need a scheme in URI: '#{origin_url}'") unless scheme
38
50
 
39
- unless host
51
+ if host.nil?
40
52
  # assume that the 'scheme' is the named configuration in ~/.ssh/config
41
53
  host = hostname_from_ssh_config(scheme, opts[:ssh_config_file] ||= "#{ENV['HOME']}/.ssh/config")
42
54
  end
43
55
 
56
+ raise GitHubService::NoRemoteRepository.new("Could not determine a host from #{origin_url}") if host.nil?
57
+
44
58
  site = host_to_site(host, scheme == 'https')
45
59
  end
46
60
  site
@@ -48,23 +62,27 @@ module GitHubService
48
62
 
49
63
 
50
64
  def hostname_from_ssh_config(host_alias, config_file)
51
- config_lines = File.new(config_file).readlines
65
+ if File.exists?(config_file)
66
+ config_lines = File.new(config_file).readlines
52
67
 
53
- in_host_section = false
54
- host_name = nil
68
+ in_host_section = false
69
+ host_name = nil
55
70
 
56
- sections = config_lines.each do |line|
57
- line.chop!
58
- if /^\s*Host\s+#{host_alias}\s*$/ =~ line
59
- in_host_section = true
60
- next
61
- end
62
- if in_host_section and (/^\s*HostName\s+\S+\s*$/ =~ line)
63
- host_name = line.sub(/^\s*HostName\s+(\S+)\s*$/, '\1')
64
- break
71
+ sections = config_lines.each do |line|
72
+ line.chop!
73
+ if /^\s*Host\s+#{host_alias}\s*$/ =~ line
74
+ in_host_section = true
75
+ next
76
+ end
77
+ if in_host_section and (/^\s*HostName\s+\S+\s*$/ =~ line)
78
+ host_name = line.sub(/^\s*HostName\s+(\S+)\s*$/, '\1')
79
+ break
80
+ end
65
81
  end
82
+ host_name
83
+ else
84
+ nil
66
85
  end
67
- host_name
68
86
  end
69
87
 
70
88
 
@@ -93,7 +111,7 @@ module GitHubService
93
111
  def user
94
112
  unless @user
95
113
  user = lib.config('github.user')
96
- if user.empty?
114
+ if user.nil? or user.empty?
97
115
  user = ask("Your <%= color('GitHub', [:bold, :blue]) %> username: ") do |q|
98
116
  q.validate = /^\w\w+$/
99
117
  end
@@ -108,7 +126,7 @@ module GitHubService
108
126
  def password
109
127
  unless @password
110
128
  @password = ask("Your <%= color('GitHub', [:bold, :blue]) %> password: ") do |q|
111
- q.validate = /^\w\w+$/
129
+ q.validate = /^\S\S+$/
112
130
  q.echo = 'x'
113
131
  end
114
132
  end
@@ -122,7 +140,7 @@ module GitHubService
122
140
 
123
141
 
124
142
  def create_authorization
125
- logger.info("Authorizing this to work with your repos.")
143
+ logger.info("Authorizing #{user} to work with #{site}.")
126
144
  auth = pw_client.create_authorization(:scopes => ['repo', 'user', 'gist'],
127
145
  :note => 'Git-Process',
128
146
  :note_url => 'http://jdigger.github.com/git-process')
@@ -133,9 +151,9 @@ module GitHubService
133
151
 
134
152
 
135
153
  def config_auth_token
136
- unless @auth_token
154
+ if @auth_token.nil?
137
155
  c_auth_token = lib.config('gitProcess.github.authToken')
138
- @auth_token = c_auth_token.empty? ? nil : c_auth_token
156
+ @auth_token = (c_auth_token.nil? or c_auth_token.empty?) ? nil : c_auth_token
139
157
  end
140
158
  @auth_token
141
159
  end
@@ -0,0 +1,40 @@
1
+ # Licensed under the Apache License, Version 2.0 (the "License");
2
+ # you may not use this file except in compliance with the License.
3
+ # You may obtain a copy of the License at
4
+ #
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and
11
+ # limitations under the License.require 'shellwords'
12
+
13
+ require 'git-process/git_process'
14
+
15
+ module GitProc
16
+
17
+ class NewFeatureBranch < Process
18
+
19
+ def initialize(dir, opts)
20
+ @branch_name = opts[:branch_name]
21
+ super
22
+ end
23
+
24
+
25
+ def runner
26
+ mybranches = branches()
27
+ on_parking = (mybranches.parking == mybranches.current)
28
+
29
+ if on_parking
30
+ new_branch = checkout(@branch_name, :new_branch => '_parking_')
31
+ mybranches.parking.delete
32
+ new_branch
33
+ else
34
+ checkout(@branch_name, :new_branch => remote_master_branch)
35
+ end
36
+ end
37
+
38
+ end
39
+
40
+ end
@@ -0,0 +1,40 @@
1
+ # Licensed under the Apache License, Version 2.0 (the "License");
2
+ # you may not use this file except in compliance with the License.
3
+ # You may obtain a copy of the License at
4
+ #
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and
11
+ # limitations under the License.require 'shellwords'
12
+
13
+ require 'git-process/git_process_error'
14
+
15
+ module GitProc
16
+
17
+ class ParkedChangesError < GitProcessError
18
+ include GitProc::AbstractErrorBuilder
19
+
20
+ attr_reader :error_message, :lib
21
+
22
+ def initialize(lib)
23
+ @lib = lib
24
+ msg = build_message
25
+ super(msg)
26
+ end
27
+
28
+
29
+ def human_message
30
+ "You made your changes on the the '_parking_' branch instead of a feature branch.\n"+"Please rename the branch to be a feature branch."
31
+ end
32
+
33
+
34
+ def build_commands
35
+ ['git branch -m _parking_ my_feature_branch']
36
+ end
37
+
38
+ end
39
+
40
+ end
@@ -0,0 +1,61 @@
1
+ # Licensed under the Apache License, Version 2.0 (the "License");
2
+ # you may not use this file except in compliance with the License.
3
+ # You may obtain a copy of the License at
4
+ #
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and
11
+ # limitations under the License.require 'shellwords'
12
+
13
+ require 'git-process/git_process'
14
+ require 'git-process/github_pull_request'
15
+ require 'highline/import'
16
+
17
+
18
+ module GitProc
19
+
20
+ class PullRequest < Process
21
+ include GitLib
22
+
23
+
24
+ def initialize(dir, opts)
25
+ super
26
+ @title = opts[:title]
27
+ @base_branch = opts[:base_branch] || master_branch
28
+ @head_branch = opts[:head_branch] || branches.current
29
+ @repo_name = opts[:repo_name] || repo_name()
30
+ @title = opts[:title] || ask_for_pull_title()
31
+ @description = opts[:description] || ask_for_pull_description()
32
+ @user = opts[:user]
33
+ @password = opts[:password]
34
+ end
35
+
36
+
37
+ def runner
38
+ current_branch = branches.current
39
+ push(server_name, current_branch, current_branch, :force => false)
40
+ pr = GitHub::PullRequest.new(self, @repo_name, {:user => @user, :password => @password})
41
+ pr.create(@base_branch, @head_branch, @title, @description)
42
+ end
43
+
44
+
45
+ private
46
+
47
+
48
+ def ask_for_pull_title
49
+ ask("What <%= color('title', [:bold]) %> do you want to give the pull request? ") do |q|
50
+ q.validate = /^\w+.*/
51
+ end
52
+ end
53
+
54
+
55
+ def ask_for_pull_description
56
+ ask("What <%= color('description', [:bold]) %> do you want to give the pull request? ")
57
+ end
58
+
59
+ end
60
+
61
+ end
@@ -0,0 +1,110 @@
1
+ # Licensed under the Apache License, Version 2.0 (the "License");
2
+ # you may not use this file except in compliance with the License.
3
+ # You may obtain a copy of the License at
4
+ #
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and
11
+ # limitations under the License.require 'shellwords'
12
+
13
+ require 'git-process/git_process'
14
+ require 'git-process/git_rebase_error'
15
+ require 'git-process/git_process_error'
16
+ require 'git-process/parked_changes_error'
17
+ require 'git-process/github_pull_request'
18
+
19
+
20
+ module GitProc
21
+
22
+ class RebaseToMaster < Process
23
+
24
+ def runner
25
+ raise UncommittedChangesError.new unless status.clean?
26
+ raise ParkedChangesError.new(self) if is_parked?
27
+
28
+ if has_a_remote?
29
+ fetch(server_name)
30
+ proc_rebase(remote_master_branch)
31
+ push(server_name, branches.current, master_branch)
32
+ close_pull_request
33
+ remove_feature_branch
34
+ else
35
+ proc_rebase(master_branch)
36
+ end
37
+ end
38
+
39
+
40
+ def remove_feature_branch
41
+ mybranches = branches
42
+
43
+ remote_master = mybranches[remote_master_branch]
44
+ current_branch = mybranches.current
45
+
46
+ unless remote_master.contains_all_of(current_branch.name)
47
+ raise GitProcessError.new("Branch '#{current_branch.name}' has not been merged into '#{remote_master_branch}'")
48
+ end
49
+
50
+ parking_branch = mybranches['_parking_']
51
+ if parking_branch
52
+ if (parking_branch.is_ahead_of(remote_master.name) and
53
+ !current_branch.contains_all_of(parking_branch.name))
54
+
55
+ parking_branch.rename('_parking_OLD_')
56
+
57
+ logger.warn {bad_parking_branch_msg}
58
+ else
59
+ parking_branch.delete
60
+ end
61
+ end
62
+ remote_master.checkout_to_new('_parking_', :no_track => true)
63
+
64
+ current_branch.delete(true)
65
+ if mybranches["#{server_name}/#{current_branch.name}"]
66
+ push(server_name, nil, nil, :delete => current_branch.name)
67
+ end
68
+ end
69
+
70
+
71
+ def close_pull_request
72
+ pr = GitHub::PullRequest.new(self, repo_name)
73
+
74
+ # Assume that if we haven't done something that would create the
75
+ # GitHub auth token, then this likely isn't a GitHub-based repo.
76
+ # (Or at least the user isn't using pull requests)
77
+ if pr.config_auth_token
78
+ begin
79
+ mybranches = branches()
80
+ pull = pr.find_pull_request(master_branch, mybranches.current.name)
81
+ if pull
82
+ pr.close(pull[:number])
83
+ else
84
+ logger.debug { "There is no pull request for #{mybranches.current.name} against #{master_branch}" }
85
+ end
86
+ rescue GitHubService::NoRemoteRepository => exp
87
+ logger.debug exp.to_s
88
+ end
89
+ else
90
+ logger.debug "There is no GitHub auth token defined, so not trying to close a pull request."
91
+ end
92
+ end
93
+
94
+
95
+ private
96
+
97
+
98
+ def bad_parking_branch_msg
99
+ hl = HighLine.new
100
+ hl.color("\n***********************************************************************************************\n\n"+
101
+ "There is an old '_parking_' branch with unacounted changes in it.\n"+
102
+ "It has been renamed to '_parking_OLD_'.\n"+
103
+ "Please rename the branch to what the changes are about (`git branch -m _parking_OLD_ my_fb_name`),\n"+
104
+ " or remove it altogher (`git branch -D _parking_OLD_`).\n\n"+
105
+ "***********************************************************************************************\n", :red, :bold)
106
+ end
107
+
108
+ end
109
+
110
+ end
@@ -0,0 +1,63 @@
1
+ # Licensed under the Apache License, Version 2.0 (the "License");
2
+ # you may not use this file except in compliance with the License.
3
+ # You may obtain a copy of the License at
4
+ #
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and
11
+ # limitations under the License.require 'shellwords'
12
+
13
+ require 'git-process/git_lib'
14
+ require 'git-process/git_process'
15
+ require 'git-process/parked_changes_error'
16
+ require 'git-process/uncommitted_changes_error'
17
+
18
+
19
+ module GitProc
20
+
21
+ class Sync < Process
22
+
23
+ def initialize(dir, opts)
24
+ @do_rebase = opts[:rebase]
25
+ @force = opts[:force]
26
+ super
27
+ end
28
+
29
+
30
+ def runner
31
+ raise UncommittedChangesError.new unless status.clean?
32
+ raise ParkedChangesError.new(self) if is_parked?
33
+
34
+ current_branch = branches.current
35
+ remote_branch = "#{server_name}/#{current_branch}"
36
+
37
+ fetch(server_name)
38
+
39
+ if @do_rebase
40
+ proc_rebase(remote_master_branch)
41
+ else
42
+ proc_merge(remote_master_branch)
43
+ end
44
+
45
+ old_sha = command('rev-parse', remote_branch) rescue ''
46
+
47
+ unless current_branch == master_branch
48
+ fetch(server_name)
49
+ new_sha = command('rev-parse', remote_branch) rescue ''
50
+ unless old_sha == new_sha
51
+ logger.warn("'#{current_branch}' changed on '#{server_name}'"+
52
+ " [#{old_sha[0..5]}->#{new_sha[0..5]}]; trying sync again.")
53
+ sync_with_server(@do_rebase, @force)
54
+ end
55
+ push(server_name, current_branch, current_branch, :force => @force)
56
+ else
57
+ logger.warn("Not pushing to the server because the current branch is the master branch.")
58
+ end
59
+ end
60
+
61
+ end
62
+
63
+ end
@@ -0,0 +1,23 @@
1
+ # Licensed under the Apache License, Version 2.0 (the "License");
2
+ # you may not use this file except in compliance with the License.
3
+ # You may obtain a copy of the License at
4
+ #
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and
11
+ # limitations under the License.require 'shellwords'
12
+
13
+ require 'git-process/git_process_error'
14
+
15
+ module GitProc
16
+
17
+ class UncommittedChangesError < GitProcessError
18
+ def initialize()
19
+ super("There are uncommitted changes.\nPlease either commit your changes, or use 'git stash' to set them aside.")
20
+ end
21
+ end
22
+
23
+ end
@@ -1,12 +1,22 @@
1
- module Git
2
- module Process
3
- module Version
4
- MAJOR = 0
5
- MINOR = 9
6
- PATCH = 1
7
- BUILD = 'pre3'
1
+ # Licensed under the Apache License, Version 2.0 (the "License");
2
+ # you may not use this file except in compliance with the License.
3
+ # You may obtain a copy of the License at
4
+ #
5
+ # http://www.apache.org/licenses/LICENSE-2.0
6
+ #
7
+ # Unless required by applicable law or agreed to in writing, software
8
+ # distributed under the License is distributed on an "AS IS" BASIS,
9
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
+ # See the License for the specific language governing permissions and
11
+ # limitations under the License.require 'shellwords'
8
12
 
9
- STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
10
- end
13
+ module GitProc
14
+ module Version
15
+ MAJOR = 0
16
+ MINOR = 9
17
+ PATCH = 2
18
+ BUILD = nil
19
+
20
+ STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
11
21
  end
12
22
  end