git-process 1.1.4 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +14 -1
- data/LICENSE +193 -22
- data/README.md +212 -71
- data/man/git-process.1 +371 -0
- metadata +52 -140
- data/Gemfile +0 -20
- data/Gemfile.lock +0 -53
- data/Rakefile +0 -16
- data/bin/git-new-fb +0 -58
- data/bin/git-pull-request +0 -107
- data/bin/git-sync +0 -73
- data/bin/git-to-master +0 -133
- data/git-process.gemspec +0 -25
- data/lib/git-process/abstract_error_builder.rb +0 -53
- data/lib/git-process/changed_file_helper.rb +0 -115
- data/lib/git-process/git_abstract_merge_error_builder.rb +0 -146
- data/lib/git-process/git_branch.rb +0 -105
- data/lib/git-process/git_branches.rb +0 -73
- data/lib/git-process/git_config.rb +0 -153
- data/lib/git-process/git_lib.rb +0 -512
- data/lib/git-process/git_logger.rb +0 -84
- data/lib/git-process/git_merge_error.rb +0 -28
- data/lib/git-process/git_process.rb +0 -172
- data/lib/git-process/git_process_error.rb +0 -18
- data/lib/git-process/git_process_options.rb +0 -99
- data/lib/git-process/git_rebase_error.rb +0 -30
- data/lib/git-process/git_remote.rb +0 -256
- data/lib/git-process/git_status.rb +0 -108
- data/lib/git-process/github_configuration.rb +0 -298
- data/lib/git-process/github_pull_request.rb +0 -151
- data/lib/git-process/new_fb.rb +0 -50
- data/lib/git-process/parked_changes_error.rb +0 -41
- data/lib/git-process/pull_request.rb +0 -134
- data/lib/git-process/pull_request_error.rb +0 -25
- data/lib/git-process/rebase_to_master.rb +0 -148
- data/lib/git-process/sync.rb +0 -136
- data/lib/git-process/uncommitted_changes_error.rb +0 -23
- data/lib/git-process/version.rb +0 -22
- data/spec/FileHelpers.rb +0 -19
- data/spec/GitRepoHelper.rb +0 -123
- data/spec/changed_file_helper_spec.rb +0 -127
- data/spec/git_abstract_merge_error_builder_spec.rb +0 -126
- data/spec/git_branch_spec.rb +0 -123
- data/spec/git_config_spec.rb +0 -45
- data/spec/git_lib_spec.rb +0 -176
- data/spec/git_logger_spec.rb +0 -66
- data/spec/git_process_spec.rb +0 -208
- data/spec/git_remote_spec.rb +0 -227
- data/spec/git_status_spec.rb +0 -122
- data/spec/github_configuration_spec.rb +0 -152
- data/spec/github_pull_request_spec.rb +0 -96
- data/spec/github_test_helper.rb +0 -49
- data/spec/new_fb_spec.rb +0 -130
- data/spec/pull_request_helper.rb +0 -94
- data/spec/pull_request_spec.rb +0 -128
- data/spec/rebase_to_master_spec.rb +0 -429
- data/spec/spec_helper.rb +0 -21
- data/spec/sync_spec.rb +0 -304
data/Gemfile
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
source "http://rubygems.org"
|
2
|
-
|
3
|
-
group :default do
|
4
|
-
gem "octokit", "~> 1.24" # GitHub API
|
5
|
-
gem "json", "~> 1.7.3"
|
6
|
-
gem "trollop", "~> 1.16.2" # CLI options parser
|
7
|
-
gem "highline", "1.6.13" # user CLI interaction. There is a bug in 1.6.14
|
8
|
-
gem "addressable", "~> 2.3.4" # URI processing
|
9
|
-
end
|
10
|
-
|
11
|
-
group :development do
|
12
|
-
gem "rake", "~> 0.9.2"
|
13
|
-
gem "yard", "~> 0.8.2.1" # documentation generator
|
14
|
-
gem "redcarpet", "~> 2.1.1"
|
15
|
-
end
|
16
|
-
|
17
|
-
group :test do
|
18
|
-
gem "rspec", "~> 2.12.0"
|
19
|
-
gem "webmock", "~> 1.8.7" # network mocking
|
20
|
-
end
|
data/Gemfile.lock
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: http://rubygems.org/
|
3
|
-
specs:
|
4
|
-
addressable (2.3.4)
|
5
|
-
crack (0.3.2)
|
6
|
-
diff-lcs (1.1.3)
|
7
|
-
faraday (0.8.7)
|
8
|
-
multipart-post (~> 1.1)
|
9
|
-
faraday_middleware (0.9.0)
|
10
|
-
faraday (>= 0.7.4, < 0.9)
|
11
|
-
hashie (2.0.3)
|
12
|
-
highline (1.6.13)
|
13
|
-
json (1.7.7)
|
14
|
-
multi_json (1.7.2)
|
15
|
-
multipart-post (1.2.0)
|
16
|
-
netrc (0.7.7)
|
17
|
-
octokit (1.24.0)
|
18
|
-
addressable (~> 2.2)
|
19
|
-
faraday (~> 0.8)
|
20
|
-
faraday_middleware (~> 0.9)
|
21
|
-
hashie (~> 2.0)
|
22
|
-
multi_json (~> 1.3)
|
23
|
-
netrc (~> 0.7.7)
|
24
|
-
rake (0.9.6)
|
25
|
-
redcarpet (2.1.1)
|
26
|
-
rspec (2.12.0)
|
27
|
-
rspec-core (~> 2.12.0)
|
28
|
-
rspec-expectations (~> 2.12.0)
|
29
|
-
rspec-mocks (~> 2.12.0)
|
30
|
-
rspec-core (2.12.2)
|
31
|
-
rspec-expectations (2.12.1)
|
32
|
-
diff-lcs (~> 1.1.3)
|
33
|
-
rspec-mocks (2.12.2)
|
34
|
-
trollop (1.16.2)
|
35
|
-
webmock (1.8.11)
|
36
|
-
addressable (>= 2.2.7)
|
37
|
-
crack (>= 0.1.7)
|
38
|
-
yard (0.8.2.1)
|
39
|
-
|
40
|
-
PLATFORMS
|
41
|
-
ruby
|
42
|
-
|
43
|
-
DEPENDENCIES
|
44
|
-
addressable (~> 2.3.4)
|
45
|
-
highline (= 1.6.13)
|
46
|
-
json (~> 1.7.3)
|
47
|
-
octokit (~> 1.24)
|
48
|
-
rake (~> 0.9.2)
|
49
|
-
redcarpet (~> 2.1.1)
|
50
|
-
rspec (~> 2.12.0)
|
51
|
-
trollop (~> 1.16.2)
|
52
|
-
webmock (~> 1.8.7)
|
53
|
-
yard (~> 0.8.2.1)
|
data/Rakefile
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
#!/usr/bin/env rake
|
2
|
-
require 'bundler/gem_tasks'
|
3
|
-
require 'rspec/core/rake_task'
|
4
|
-
require 'yard'
|
5
|
-
require 'yard/rake/yardoc_task'
|
6
|
-
|
7
|
-
desc 'Default: run specs.'
|
8
|
-
task :default => :spec
|
9
|
-
|
10
|
-
desc "Run specs"
|
11
|
-
RSpec::Core::RakeTask.new do |t|
|
12
|
-
t.pattern = "./spec/**/*_spec.rb" # don't need this, it's default.
|
13
|
-
end
|
14
|
-
|
15
|
-
desc "Create docs"
|
16
|
-
YARD::Rake::YardocTask.new
|
data/bin/git-new-fb
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
#require "rubygems"
|
4
|
-
#require "bundler/setup"
|
5
|
-
#$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '../lib')
|
6
|
-
|
7
|
-
require 'git-process/git_process_options'
|
8
|
-
require 'git-process/new_fb'
|
9
|
-
require 'git-process/git_lib'
|
10
|
-
include GitProc
|
11
|
-
|
12
|
-
|
13
|
-
class NewFeatureBranchOptions
|
14
|
-
include GitProcessOptions
|
15
|
-
|
16
|
-
def summary
|
17
|
-
"Create a new feature branch based on the integration branch."
|
18
|
-
end
|
19
|
-
|
20
|
-
|
21
|
-
def description
|
22
|
-
<<DESC
|
23
|
-
DESCRIPTION
|
24
|
-
|
25
|
-
This creates the named branch based on the integration branch.
|
26
|
-
|
27
|
-
EXAMPLE
|
28
|
-
|
29
|
-
Assuming that the the integration branch on the server is "master", \
|
30
|
-
typing "git new-fb my_feature" will do roughly the following \
|
31
|
-
for you:
|
32
|
-
$ git checkout my_feature origin/master
|
33
|
-
|
34
|
-
Also, if you are currently on the "_parking_" branch (see "git to-master"), \
|
35
|
-
this will remove that branch.
|
36
|
-
|
37
|
-
DESC
|
38
|
-
end
|
39
|
-
|
40
|
-
|
41
|
-
def usage(filename)
|
42
|
-
"#{filename} [options] branch_name"
|
43
|
-
end
|
44
|
-
|
45
|
-
|
46
|
-
def empty_argv_ok?
|
47
|
-
false
|
48
|
-
end
|
49
|
-
|
50
|
-
|
51
|
-
def post_parse(opts, argv)
|
52
|
-
opts[:branch_name] = argv.shift
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
56
|
-
|
57
|
-
opts = NewFeatureBranchOptions.new.parse_cli(File.basename(__FILE__), ARGV)
|
58
|
-
GitProc::NewFeatureBranch.new(GitProc::GitLib.new('.', opts), opts).run
|
data/bin/git-pull-request
DELETED
@@ -1,107 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
#require "rubygems"
|
4
|
-
#require "bundler/setup"
|
5
|
-
#$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '../lib')
|
6
|
-
|
7
|
-
require 'git-process/git_lib'
|
8
|
-
require 'git-process/pull_request'
|
9
|
-
require 'git-process/git_process_options'
|
10
|
-
include GitProc
|
11
|
-
|
12
|
-
class PullRequestOptions
|
13
|
-
include GitProcessOptions
|
14
|
-
|
15
|
-
|
16
|
-
def summary
|
17
|
-
"Creates or gets a Pull Request."
|
18
|
-
end
|
19
|
-
|
20
|
-
|
21
|
-
def description
|
22
|
-
<<DESC
|
23
|
-
DESCRIPTION
|
24
|
-
|
25
|
-
This creates or gets a Pull Request on the GitHub server associated with the current \
|
26
|
-
branch. For the reasons why Pull Requests are useful for the development process, \
|
27
|
-
see https://help.github.com/articles/using-pull-requests
|
28
|
-
|
29
|
-
The "git pull-request" command is a nice, simplified alternative to using the \
|
30
|
-
web interface.
|
31
|
-
|
32
|
-
If no name or number is provided, it is assumed that you want to create a new \
|
33
|
-
pull request with the same name as the current branch.
|
34
|
-
|
35
|
-
If a number is given, or a number with a server preceding it (e.g., "origin/23"), \
|
36
|
-
then this assumes that the number refers to an existing pull request identified \
|
37
|
-
by that number. In that case, the branch associated with the HEAD of the pull \
|
38
|
-
request is checked out.
|
39
|
-
|
40
|
-
EXAMPLE
|
41
|
-
|
42
|
-
You've been developing your killer new feature or bug fix, and you want \
|
43
|
-
someone else to look at it (to do code-review or otherwise provide input). \
|
44
|
-
When you do "git pull-request", it synchronizes the current branch with \
|
45
|
-
the server (effectively executing "git sync") and creates the Pull Request \
|
46
|
-
against the integration branch. (Usually "master", but this can be changed; \
|
47
|
-
see below.)
|
48
|
-
|
49
|
-
The counterpart to this command is "git to-master".
|
50
|
-
|
51
|
-
NOTES
|
52
|
-
|
53
|
-
* It's assumed that you *never* do any work directly on "master":
|
54
|
-
everything is done on a feature branch. In addition to being a much
|
55
|
-
safer and more flexible way of working in general, it is also a
|
56
|
-
requirement to take advantage of Pull Request functionality.
|
57
|
-
* The first time you use a GitHub feature like this, you will be asked
|
58
|
-
for your username and password. This does not store them, but instead
|
59
|
-
uses them to get an OAuth2 token, which is stored in
|
60
|
-
"git config gitProcess.github.authToken".
|
61
|
-
* If you want to use a different integration branch other than "master",
|
62
|
-
set the "gitProcess.integrationBranch" configuration value. (e.g.,
|
63
|
-
"git config gitProcess.integrationBranch my-integ-branch")
|
64
|
-
|
65
|
-
DESC
|
66
|
-
end
|
67
|
-
|
68
|
-
|
69
|
-
def usage(filename)
|
70
|
-
"Usage: #{filename} [ options ] [pull_request_title | server/pull_request_number | pull_request_number]"
|
71
|
-
end
|
72
|
-
|
73
|
-
|
74
|
-
def extend_opts(parser)
|
75
|
-
parser.opt :base_branch, "The branch on the server that you want this \"pulled\" into. "+
|
76
|
-
"Defaults to the integration branch.", :type => :string
|
77
|
-
parser.opt :head_branch, "The branch that you want reviewed before being \"pulled\" "+
|
78
|
-
"into the base branch. Defaults to the current branch.", :type => :string
|
79
|
-
parser.opt :repo_name, "The name of the repository to \"pull\" into. Defaults to "+
|
80
|
-
"the current repository.", :type => :string
|
81
|
-
parser.opt :description, "The description of the Pull Request. Usually includes a "+
|
82
|
-
"nice description of what was changed to make things easier "+
|
83
|
-
"for the reviewer.", :short => :d, :type => :string
|
84
|
-
parser.opt :user, "Your GitHub username. Only needed the first time you connect, "+
|
85
|
-
"and you will be prompted for it if needed.", :type => :string
|
86
|
-
parser.opt :password, "Your GitHub password. Only needed the first time you connect, "+
|
87
|
-
"and you will be prompted for it if needed.", :type => :string
|
88
|
-
end
|
89
|
-
|
90
|
-
|
91
|
-
def post_parse(opts, argv)
|
92
|
-
arg = argv.shift
|
93
|
-
if /^\d+$/ =~ arg
|
94
|
-
opts[:prNumber] = arg
|
95
|
-
elsif /^(.*)\/(\d+)$/ =~ arg
|
96
|
-
m = /^(.*)\/(\d+)$/.match(arg)
|
97
|
-
opts[:server] = m[1]
|
98
|
-
opts[:prNumber] = m[2]
|
99
|
-
else
|
100
|
-
opts[:title] = arg
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
end
|
105
|
-
|
106
|
-
opts = PullRequestOptions.new.parse_cli(File.basename(__FILE__), ARGV)
|
107
|
-
GitProc::PullRequest.new(GitProc::GitLib.new('.', opts), opts).run
|
data/bin/git-sync
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
# require "rubygems"
|
4
|
-
# require "bundler/setup"
|
5
|
-
# $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '../lib')
|
6
|
-
|
7
|
-
require 'git-process/git_process_options'
|
8
|
-
require 'git-process/sync'
|
9
|
-
require 'git-process/git_lib'
|
10
|
-
|
11
|
-
|
12
|
-
class SyncOptions
|
13
|
-
include GitProc::GitProcessOptions
|
14
|
-
|
15
|
-
|
16
|
-
def summary
|
17
|
-
"Gets the latest changes that have happened on the integration branch, then pushes your changes to a \"private\" branch on the server."
|
18
|
-
end
|
19
|
-
|
20
|
-
|
21
|
-
def description
|
22
|
-
<<DESC
|
23
|
-
DESCRIPTION
|
24
|
-
|
25
|
-
This fetches the latest repository from the server, rebases/merges the current branch \
|
26
|
-
against the changes in the integration branch, then pushes the result up to a branch on \
|
27
|
-
the server of the same name. (Unless told not to.)
|
28
|
-
|
29
|
-
If there is a problem, such as a merge conflict, this tries to \
|
30
|
-
resolve it automatically. If it can not do so in an automated way, \
|
31
|
-
if tells you the steps involved for doing so manually.
|
32
|
-
|
33
|
-
By default the first server name reported by 'git remote' is used as the server/remote name. \
|
34
|
-
Since most projects only have a single remote (i.e., "origin") this works most of the time. \
|
35
|
-
But if you have multiple remotes and want to explicitly set it, use the \
|
36
|
-
'gitProcess.remoteName' configuration option.
|
37
|
-
|
38
|
-
Setting `gitProcess.defaultRebaseSync` to "true" causes this to default to using rebase instead of merge.
|
39
|
-
|
40
|
-
EXAMPLE
|
41
|
-
|
42
|
-
Assuming that the current branch is called "interesting_changes" and the integration \
|
43
|
-
branch on the server is "master", typing "git sync" will do roughly the following \
|
44
|
-
for you:
|
45
|
-
$ git fetch -p
|
46
|
-
$ git merge origin/master
|
47
|
-
$ git push origin interesting_changes:interesting_changes
|
48
|
-
|
49
|
-
DESC
|
50
|
-
end
|
51
|
-
|
52
|
-
|
53
|
-
def extend_opts(parser)
|
54
|
-
parser.opt :rebase, "Rebase instead of merge against the integration branch"
|
55
|
-
parser.opt :merge, "Merge instead of rebase against the integration branch", :short => :none, :default => true
|
56
|
-
parser.opt :force, "Force the push; defaults to true if --rebase is used", :short => :f, :default => false
|
57
|
-
parser.opt :local, "Do not do a push; gets remote changes, but does not update the server", :short => :l, :default => false
|
58
|
-
|
59
|
-
parser.conflicts :rebase, :merge
|
60
|
-
parser.conflicts :local, :force
|
61
|
-
end
|
62
|
-
|
63
|
-
|
64
|
-
#noinspection RubyUnusedLocalVariable
|
65
|
-
def post_parse(opts, argv)
|
66
|
-
opts[:force] = true if opts[:rebase]
|
67
|
-
opts[:merge] = !opts[:rebase]
|
68
|
-
end
|
69
|
-
|
70
|
-
end
|
71
|
-
|
72
|
-
opts = SyncOptions.new.parse_cli(File.basename(__FILE__), ARGV)
|
73
|
-
GitProc::Sync.new(GitProc::GitLib.new('.', opts), opts).run
|
data/bin/git-to-master
DELETED
@@ -1,133 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
#require "rubygems"
|
4
|
-
#require "bundler/setup"
|
5
|
-
#$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '../lib')
|
6
|
-
|
7
|
-
require 'git-process/git_process_options'
|
8
|
-
require 'git-process/rebase_to_master'
|
9
|
-
require 'git-process/git_lib'
|
10
|
-
|
11
|
-
|
12
|
-
class ToMasterOptions
|
13
|
-
include GitProc::GitProcessOptions
|
14
|
-
|
15
|
-
|
16
|
-
def summary
|
17
|
-
"Rebase against the integration branch, then pushes to it."
|
18
|
-
end
|
19
|
-
|
20
|
-
|
21
|
-
def description
|
22
|
-
<<DESC
|
23
|
-
DESCRIPTION
|
24
|
-
|
25
|
-
This fetches the latest changes from the server, rebases against \
|
26
|
-
the integration branch, pushes to the integration branch, then does \
|
27
|
-
housecleaning.
|
28
|
-
|
29
|
-
If there is a problem, such as a merge conflict, this tries to \
|
30
|
-
resolve it automatically (including responding appropriately to
|
31
|
-
"rerere" merges). If it can not do so in an automated way, \
|
32
|
-
if tells you the steps involved for doing so manually.
|
33
|
-
|
34
|
-
"Housecleaning" includes such things as closing any \
|
35
|
-
Pull Request that may exist for the branch, removing the (now obsolete) \
|
36
|
-
local and remote feature branches, and then "parking" on the \
|
37
|
-
special "_parking_" branch.
|
38
|
-
|
39
|
-
Work is not expected to be done on the "_parking_" branch, but any that is \
|
40
|
-
done is brought over to a newly created feature branch when you do \
|
41
|
-
"git new-fb".
|
42
|
-
|
43
|
-
It's assumed that you *never* do any work directly on "master": \
|
44
|
-
everything is done on a feature branch. In addition to being a much \
|
45
|
-
safer and more flexible way of working in general, it is also a \
|
46
|
-
requirement to take advantage of Pull Request functionality.
|
47
|
-
|
48
|
-
By default the first server name reported by 'git remote' is used as the \
|
49
|
-
server/remote name. Since most projects only have a single remote (i.e., \
|
50
|
-
"origin") this works most of the time. But if you have multiple remotes and \
|
51
|
-
want to explicitly set it, use the 'gitProcess.remoteName' configuration option.
|
52
|
-
|
53
|
-
If a number is given, or a number with a server preceding it (e.g., \
|
54
|
-
"origin/23"), then this assumes that the number refers to an existing pull \
|
55
|
-
request identified by that number. In that case, the branch associated with \
|
56
|
-
the HEAD of the pull request is checked out before doing the rest of the \
|
57
|
-
"to-master".
|
58
|
-
|
59
|
-
EXAMPLE WITHOUT PULL REQUEST
|
60
|
-
|
61
|
-
Assuming that the current branch is called "interesting_changes" and the \
|
62
|
-
integration branch on the server is "master", typing "git to-master" will do \
|
63
|
-
roughly the following for you:
|
64
|
-
$ git fetch -p
|
65
|
-
$ git rebase origin/master
|
66
|
-
$ git push origin interesting_changes:master
|
67
|
-
# close pull request if one exists
|
68
|
-
$ git checkout -b _parking_ origin/master
|
69
|
-
$ git branch -d interesting_changes
|
70
|
-
$ git push origin --delete interesting_changes
|
71
|
-
|
72
|
-
If you use the --interactive option, then it does an interactive rebase before the first "push".
|
73
|
-
|
74
|
-
If you use the --keep option, then the process stops after the first "push".
|
75
|
-
|
76
|
-
|
77
|
-
EXAMPLE WITH PULL REQUEST
|
78
|
-
|
79
|
-
Assuming that the pull request number is 493, its branch name is "interesting_changes" \
|
80
|
-
and the integration branch on the server is "master", typing "git to-master 493" will \
|
81
|
-
do roughly the following for you:
|
82
|
-
$ git fetch -p
|
83
|
-
# looks up the information for pull-request 493
|
84
|
-
$ git checkout -b interesting_changes origin/interesting_changes
|
85
|
-
$ git rebase origin/master
|
86
|
-
$ git push origin interesting_changes:master
|
87
|
-
# close pull request
|
88
|
-
$ git checkout -b _parking_ origin/master
|
89
|
-
$ git branch -d interesting_changes
|
90
|
-
$ git push origin --delete interesting_changes
|
91
|
-
|
92
|
-
If you would like the review the changes locally first, use "git pull-request 493"
|
93
|
-
instead.
|
94
|
-
|
95
|
-
NOTES
|
96
|
-
|
97
|
-
* If you want to use a different integration branch other than "master",
|
98
|
-
set the "gitProcess.integrationBranch" configuration value. (e.g.,
|
99
|
-
"git config gitProcess.integrationBranch my-integ-branch")
|
100
|
-
|
101
|
-
DESC
|
102
|
-
end
|
103
|
-
|
104
|
-
def usage(filename)
|
105
|
-
"Usage: #{filename} [ options ] [server/pull_request_number | pull_request_number]"
|
106
|
-
end
|
107
|
-
|
108
|
-
|
109
|
-
def extend_opts(parser)
|
110
|
-
parser.opt :keep, "Don't do any \"cleanup.\" It keeps the current local "+
|
111
|
-
"and remote branches, and does not close any "+
|
112
|
-
"outstanding pull requests.", :short => :k, :default => false
|
113
|
-
parser.opt :interactive, "Do an interactive rebase before pushing to the server.", :short => :i, :default => false
|
114
|
-
end
|
115
|
-
|
116
|
-
|
117
|
-
def post_parse(opts, argv)
|
118
|
-
arg = argv.shift
|
119
|
-
if /^\d+$/ =~ arg
|
120
|
-
opts[:prNumber] = arg
|
121
|
-
elsif /^(.*)\/(\d+)$/ =~ arg
|
122
|
-
m = /^(.*)\/(\d+)$/.match(arg)
|
123
|
-
opts[:server] = m[1]
|
124
|
-
opts[:prNumber] = m[2]
|
125
|
-
else
|
126
|
-
# "normal" to-master
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
end
|
131
|
-
|
132
|
-
opts = ToMasterOptions.new.parse_cli(File.basename(__FILE__), ARGV)
|
133
|
-
GitProc::RebaseToMaster.new(GitProc::GitLib.new('.', opts), opts).run
|