git-topic 0.1.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.
- data/.gitignore +4 -0
- data/.gvimrc +23 -0
- data/.rspec +1 -0
- data/.rvmrc +1 -0
- data/.vimproject +26 -0
- data/.vimrc +1 -0
- data/Gemfile +19 -0
- data/Gemfile.lock +63 -0
- data/History.txt +6 -0
- data/LICENSE +20 -0
- data/README.rdoc +192 -0
- data/Rakefile +62 -0
- data/VERSION +1 -0
- data/autotest/discover.rb +1 -0
- data/bin/git-topic +143 -0
- data/git-topic.gemspec +127 -0
- data/lib/git-topic.rb +375 -0
- data/lib/util.rb +34 -0
- data/spec/git-topic_spec.rb +378 -0
- data/spec/spec_helper.rb +56 -0
- data/spec/template/origin/HEAD +1 -0
- data/spec/template/origin/config +7 -0
- data/spec/template/origin/description +1 -0
- data/spec/template/origin/hooks/applypatch-msg.sample +15 -0
- data/spec/template/origin/hooks/commit-msg.sample +24 -0
- data/spec/template/origin/hooks/post-commit.sample +8 -0
- data/spec/template/origin/hooks/post-receive.sample +15 -0
- data/spec/template/origin/hooks/post-update.sample +8 -0
- data/spec/template/origin/hooks/pre-applypatch.sample +14 -0
- data/spec/template/origin/hooks/pre-commit.sample +46 -0
- data/spec/template/origin/hooks/pre-rebase.sample +169 -0
- data/spec/template/origin/hooks/prepare-commit-msg.sample +36 -0
- data/spec/template/origin/hooks/update.sample +128 -0
- data/spec/template/origin/info/exclude +6 -0
- data/spec/template/origin/objects/0a/da6d051b94cd0df50f5a0b7229aec26f0d2cdf +0 -0
- data/spec/template/origin/objects/0c/e06c616769768f09f5e629cfcc68eabe3dee81 +0 -0
- data/spec/template/origin/objects/20/049991cdafdce826f5a3c01e10ffa84d6997ec +0 -0
- data/spec/template/origin/objects/33/1d827fd47fb234af54e3a4bbf8c6705e9116cc +3 -0
- data/spec/template/origin/objects/41/51899b742fd6b1c873b177b9d13451682089bc +0 -0
- data/spec/template/origin/objects/44/ffd9c9c8b52b201659e3ad318cdad6ec836b46 +0 -0
- data/spec/template/origin/objects/4b/825dc642cb6eb9a060e54bf8d69288fbee4904 +0 -0
- data/spec/template/origin/objects/55/eeb01bdf874d1a35870bcf24a970c475c63344 +0 -0
- data/spec/template/origin/objects/8d/09f9b8d80ce282218125cb0cbf53cccf022203 +0 -0
- data/spec/template/origin/objects/b4/8e68d5cac189af36abe48e893d11c24b7b2a19 +0 -0
- data/spec/template/origin/objects/c0/838ed2ee8f2e83c8bda859fc5e332b92f0a5a3 +1 -0
- data/spec/template/origin/objects/cd/f7b9dbc4911a0d1404db54cde2ed448f6a6afd +0 -0
- data/spec/template/origin/objects/d2/6b33daea1ed9823a189992bba38fbc913483c1 +0 -0
- data/spec/template/origin/objects/fe/4e254557e19f338f40ccfdc00a7517771db880 +0 -0
- data/spec/template/origin/refs/heads/master +1 -0
- data/spec/template/origin/refs/heads/rejected/davidjh/krakens +1 -0
- data/spec/template/origin/refs/heads/review/davidjh/pirates +1 -0
- data/spec/template/origin/refs/heads/review/user24601/ninja-basic +1 -0
- data/spec/template/origin/refs/heads/review/user24601/zombie-basic +1 -0
- metadata +158 -0
data/.gitignore
ADDED
data/.gvimrc
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
2
|
+
" Setup tabs and vimproject
|
3
|
+
|
4
|
+
Project .vimproject
|
5
|
+
|
6
|
+
tabnew
|
7
|
+
tabnew
|
8
|
+
tabnew
|
9
|
+
tabnew
|
10
|
+
tabnew
|
11
|
+
tabnew
|
12
|
+
tabnew
|
13
|
+
tabnew
|
14
|
+
tabnew
|
15
|
+
|
16
|
+
tabdo Project
|
17
|
+
tabdo wincmd l
|
18
|
+
tabdo wincmd n
|
19
|
+
|
20
|
+
1tabn
|
21
|
+
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
22
|
+
|
23
|
+
winpos 433 25
|
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm 1.9.2-rc1
|
data/.vimproject
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
project=$PWD cd=. {
|
2
|
+
History.txt
|
3
|
+
LICENSE
|
4
|
+
README.rdoc
|
5
|
+
README.txt
|
6
|
+
Rakefile
|
7
|
+
bin=bin {
|
8
|
+
git-topic
|
9
|
+
}
|
10
|
+
lib=lib {
|
11
|
+
git-topic.rb
|
12
|
+
util.rb
|
13
|
+
}
|
14
|
+
spec=spec {
|
15
|
+
git-topic_spec.rb
|
16
|
+
spec_helper.rb
|
17
|
+
}
|
18
|
+
}
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
vim:wfw fdl=1:
|
data/.vimrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
let $RUBYOPT = 'lib'
|
data/Gemfile
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
source :gemcutter
|
4
|
+
|
5
|
+
gem 'activesupport'
|
6
|
+
gem 'trollop'
|
7
|
+
gem 'gemcutter'
|
8
|
+
|
9
|
+
group :development do
|
10
|
+
gem 'jeweler'
|
11
|
+
gem 'rake'
|
12
|
+
gem 'rspec', '>= 2.0.0.beta.16'
|
13
|
+
gem 'ZenTest'
|
14
|
+
gem 'yard'
|
15
|
+
end
|
16
|
+
|
17
|
+
|
18
|
+
|
19
|
+
# vim:ft=ruby:
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
ZenTest (4.3.3)
|
5
|
+
ZenTest (4.3.3)
|
6
|
+
activesupport (2.3.8)
|
7
|
+
activesupport (2.3.8)
|
8
|
+
diff-lcs (1.1.2)
|
9
|
+
diff-lcs (1.1.2)
|
10
|
+
gemcutter (0.5.0)
|
11
|
+
json_pure
|
12
|
+
gemcutter (0.5.0)
|
13
|
+
json_pure
|
14
|
+
git (1.2.5)
|
15
|
+
git (1.2.5)
|
16
|
+
jeweler (1.4.0)
|
17
|
+
gemcutter (>= 0.1.0)
|
18
|
+
git (>= 1.2.5)
|
19
|
+
rubyforge (>= 2.0.0)
|
20
|
+
jeweler (1.4.0)
|
21
|
+
gemcutter (>= 0.1.0)
|
22
|
+
git (>= 1.2.5)
|
23
|
+
rubyforge (>= 2.0.0)
|
24
|
+
json_pure (1.4.3)
|
25
|
+
json_pure (1.4.3)
|
26
|
+
rake (0.8.7)
|
27
|
+
rake (0.8.7)
|
28
|
+
rspec (2.0.0.beta.16)
|
29
|
+
rspec-core (= 2.0.0.beta.16)
|
30
|
+
rspec-expectations (= 2.0.0.beta.16)
|
31
|
+
rspec-mocks (= 2.0.0.beta.16)
|
32
|
+
rspec (2.0.0.beta.16)
|
33
|
+
rspec-core (= 2.0.0.beta.16)
|
34
|
+
rspec-expectations (= 2.0.0.beta.16)
|
35
|
+
rspec-mocks (= 2.0.0.beta.16)
|
36
|
+
rspec-core (2.0.0.beta.16)
|
37
|
+
rspec-core (2.0.0.beta.16)
|
38
|
+
rspec-expectations (2.0.0.beta.16)
|
39
|
+
diff-lcs (>= 1.1.2)
|
40
|
+
rspec-expectations (2.0.0.beta.16)
|
41
|
+
diff-lcs (>= 1.1.2)
|
42
|
+
rspec-mocks (2.0.0.beta.16)
|
43
|
+
rspec-mocks (2.0.0.beta.16)
|
44
|
+
rubyforge (2.0.4)
|
45
|
+
json_pure (>= 1.1.7)
|
46
|
+
rubyforge (2.0.4)
|
47
|
+
json_pure (>= 1.1.7)
|
48
|
+
trollop (1.16.2)
|
49
|
+
trollop (1.16.2)
|
50
|
+
yard (0.5.8)
|
51
|
+
|
52
|
+
PLATFORMS
|
53
|
+
ruby
|
54
|
+
|
55
|
+
DEPENDENCIES
|
56
|
+
ZenTest
|
57
|
+
activesupport
|
58
|
+
gemcutter
|
59
|
+
jeweler
|
60
|
+
rake
|
61
|
+
rspec (>= 2.0.0.beta.16)
|
62
|
+
trollop
|
63
|
+
yard
|
data/History.txt
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2009 David J. Hamilton
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,192 @@
|
|
1
|
+
= git-topic
|
2
|
+
|
3
|
+
git-topic is a git command to help with a particular kind of workflow, in which
|
4
|
+
all work is written by an author, and reviewed by someone else.
|
5
|
+
|
6
|
+
== Workflow in brief
|
7
|
+
|
8
|
+
=== Doing Work
|
9
|
+
|
10
|
+
1. Create a topic branch in the wip namespace.
|
11
|
+
2. Do some work.
|
12
|
+
3. Rebase to create a nice commit history.
|
13
|
+
4. Push to the review namespace. If the wip branch was pushed (e.g.
|
14
|
+
because you work on multiple machines) destroy it on the remote.
|
15
|
+
|
16
|
+
1. Create a local branch from a rejected branch.
|
17
|
+
2. Do some work, resolve the reviewer's issues.
|
18
|
+
3. go to step 3, above.
|
19
|
+
|
20
|
+
=== Reviewing
|
21
|
+
|
22
|
+
1. Create a local branch from a review branch somebody else pushed.
|
23
|
+
2. Review their work.
|
24
|
+
3. a.i. Accept; merge (fast-forward) master
|
25
|
+
ii. Destroy the review branch.
|
26
|
+
b. Reject; add notes and push to the rejected namespace and remove from
|
27
|
+
the review namespace.
|
28
|
+
|
29
|
+
|
30
|
+
== Workflow without git-topic
|
31
|
+
|
32
|
+
=== Working on a topic (e.g. feature, or bugfix) foo
|
33
|
+
|
34
|
+
# Create a new branch and switch to it.
|
35
|
+
git checkout -b wip/hal/foo
|
36
|
+
|
37
|
+
# do some work, create lots of temporary commits
|
38
|
+
# when ready to get the code into master, first update so we're rebasing against
|
39
|
+
# the latest code
|
40
|
+
git fetch origin
|
41
|
+
|
42
|
+
# rebase against latest code
|
43
|
+
git rebase --interactive origin/master
|
44
|
+
|
45
|
+
# when done rebasing so wip/hal/foo now has a nice clean commit history, push to
|
46
|
+
# a review branch and destroy the remote wip branch
|
47
|
+
git push origin wip/hal/foo:review/hal/foo :wip/hal/foo
|
48
|
+
|
49
|
+
# alternatively if you never pushed your wip branch to the remote there's no
|
50
|
+
# need to destroy it, instead only push your local wip branch as a review branch
|
51
|
+
#
|
52
|
+
# git push origin wip/hal/foo:review/hal/foo
|
53
|
+
|
54
|
+
|
55
|
+
# later, after your changes have been merged into master, you can delete your
|
56
|
+
# local branch
|
57
|
+
#
|
58
|
+
# git checkout master
|
59
|
+
# git branch -d wip/hal/foo
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
=== Reviewing a topic (no proposed changes)
|
64
|
+
|
65
|
+
# update origin
|
66
|
+
git fetch origin
|
67
|
+
|
68
|
+
# notice there's a review branch
|
69
|
+
git branch -r
|
70
|
+
|
71
|
+
# create a local branch that tracks the remote review branch
|
72
|
+
git checkout -b review/djh/bar origin/review/djh/bar
|
73
|
+
|
74
|
+
# examine code and examine the local (proposed) commits
|
75
|
+
git log master..
|
76
|
+
|
77
|
+
# when done reviewing, merge into master
|
78
|
+
git checkout master
|
79
|
+
# This should be a fast-forward merge. If not, it's because something has been
|
80
|
+
# added to master since the rebase
|
81
|
+
git merge review/djh/bar
|
82
|
+
git branch -d review/djh/bar
|
83
|
+
|
84
|
+
# update the new master and destroy the old review branch
|
85
|
+
git push origin master :review/djh/bar
|
86
|
+
|
87
|
+
|
88
|
+
|
89
|
+
=== Reviewing a topc (proposed changes)
|
90
|
+
|
91
|
+
As above, but if, after examining the code you feel some changes are
|
92
|
+
appropriate, you can either:
|
93
|
+
|
94
|
+
1. do them yourself and have the other person review and merge
|
95
|
+
|
96
|
+
# do some changes, then destroy the old review branch and make a new one
|
97
|
+
# with the cleaned up code. Now the owner is changed from djh to hal, so
|
98
|
+
# djh must review and merge into master
|
99
|
+
git push origin review/djh/bar:review/hal/bar :review/djh/bar
|
100
|
+
|
101
|
+
2. do some (or no) changes, but with some TODOs for the original author.
|
102
|
+
|
103
|
+
# do your changes on review/djh/bar
|
104
|
+
|
105
|
+
# then update the remote, moving the branch to rejected, indicating the
|
106
|
+
# author has some TODOs left.
|
107
|
+
git push origin review/djh/bar:rejected/djh/bar :review/djh/bar
|
108
|
+
|
109
|
+
# when the author has resolved the TODOs they will move the branch back to
|
110
|
+
# review/djh/bar
|
111
|
+
|
112
|
+
|
113
|
+
== Workflow with git-topic
|
114
|
+
|
115
|
+
=== Doing Work
|
116
|
+
|
117
|
+
# Work on a (possibly new, possibly rejected) topic
|
118
|
+
git topic work-on <topic>
|
119
|
+
|
120
|
+
# done with topic; push it for someone to review
|
121
|
+
git topic done [<topic>]
|
122
|
+
|
123
|
+
|
124
|
+
=== Reviewing
|
125
|
+
|
126
|
+
# see if we have any topics to review (or rejected topics to fix up)
|
127
|
+
git topic status
|
128
|
+
|
129
|
+
git topic review [<topic>]
|
130
|
+
|
131
|
+
# happy with the review, get it into master
|
132
|
+
git topic accept
|
133
|
+
|
134
|
+
# unhappy with the review, push it to rejected
|
135
|
+
git topic reject
|
136
|
+
|
137
|
+
== Again, but with aliases
|
138
|
+
|
139
|
+
# first install aliases
|
140
|
+
# add --local if you don't want to update your global aliases
|
141
|
+
git topic install-aliases
|
142
|
+
|
143
|
+
# alternatively
|
144
|
+
# git w <topic>
|
145
|
+
git work-on <topic>
|
146
|
+
|
147
|
+
git done
|
148
|
+
|
149
|
+
|
150
|
+
# does status --prepend so you get git status output as well as git topic
|
151
|
+
# status
|
152
|
+
git st
|
153
|
+
|
154
|
+
# alternatively
|
155
|
+
# git r <topic>
|
156
|
+
git review <topic>
|
157
|
+
|
158
|
+
git accept
|
159
|
+
# or
|
160
|
+
git reject
|
161
|
+
|
162
|
+
== Misc
|
163
|
+
|
164
|
+
At present the binary is stupidly slow. Actually, the binary is not slow, but
|
165
|
+
all rubygems binaries are slow. See ruby issue 3465[1]. One way around this is
|
166
|
+
to modify yor PATH so you invoke the binary directly (instead of the rubygem
|
167
|
+
wrapper). Alternatively, put up with a 300ms load time until you have a ruby
|
168
|
+
with the issue fixed.
|
169
|
+
|
170
|
+
== Obvious Features Missing
|
171
|
+
|
172
|
+
1. shell autocomplete
|
173
|
+
|
174
|
+
|
175
|
+
== Note on Patches/Pull Requests
|
176
|
+
|
177
|
+
1. Fork the project.
|
178
|
+
2. Make your feature addition or bug fix.
|
179
|
+
3. Add tests for it. This is important so I don't break it in a
|
180
|
+
future version unintentionally.
|
181
|
+
4. Commit, do not mess with rakefile, version, or history. (if you want to
|
182
|
+
have your own version, that is fine but bump version in a commit by itself I
|
183
|
+
can ignore when I pull)
|
184
|
+
5. Send me a pull request. Bonus points for topic branches.
|
185
|
+
|
186
|
+
== Copyright
|
187
|
+
|
188
|
+
Copyright (c) 2010 David J. Hamilton. See LICENSE for details.
|
189
|
+
|
190
|
+
== References
|
191
|
+
|
192
|
+
[1] http://redmine.ruby-lang.org/issues/show/3465
|
data/Rakefile
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
Dir[ 'lib/tasks/**/*' ].each{ |l| require l }
|
5
|
+
|
6
|
+
|
7
|
+
begin
|
8
|
+
require 'jeweler'
|
9
|
+
Jeweler::Tasks.new do |gem|
|
10
|
+
gem.name = "git-topic"
|
11
|
+
gem.summary = %Q{git command around reviewed topic branches}
|
12
|
+
gem.description = %Q{
|
13
|
+
gem command around reviewed topic branches. Supports workflow of the form:
|
14
|
+
|
15
|
+
# alexander:
|
16
|
+
git work-on <topic>
|
17
|
+
git done
|
18
|
+
|
19
|
+
# bismarck:
|
20
|
+
git status # notice a review branch
|
21
|
+
git review <topic>
|
22
|
+
# happy, merge into master, push and cleanup
|
23
|
+
git accept
|
24
|
+
|
25
|
+
git review <topic2>
|
26
|
+
# unhappy
|
27
|
+
git reject
|
28
|
+
|
29
|
+
# alexander:
|
30
|
+
git status # notice rejected topic
|
31
|
+
git work-on <topic>
|
32
|
+
|
33
|
+
see README.rdoc for more (any) details.
|
34
|
+
}
|
35
|
+
gem.email = "git-topic@hjdivad.com"
|
36
|
+
gem.homepage = "http://github.com/hjdivad/git-topic"
|
37
|
+
gem.authors = ["David J. Hamilton"]
|
38
|
+
gem.add_development_dependency "rspec", ">= 1.2.9"
|
39
|
+
gem.add_development_dependency "yard", ">= 0"
|
40
|
+
gem.add_development_dependency "cucumber", ">= 0"
|
41
|
+
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
42
|
+
end
|
43
|
+
Jeweler::GemcutterTasks.new
|
44
|
+
rescue LoadError
|
45
|
+
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
46
|
+
end
|
47
|
+
|
48
|
+
desc "Run all specs."
|
49
|
+
task :spec do
|
50
|
+
sh "bundle exec rspec spec"
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
begin
|
55
|
+
require 'yard'
|
56
|
+
YARD::Rake::YardocTask.new
|
57
|
+
rescue LoadError
|
58
|
+
desc "Try (and fail) to run yardoc to get an error message."
|
59
|
+
task :yard do
|
60
|
+
abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
|
61
|
+
end
|
62
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.1
|
@@ -0,0 +1 @@
|
|
1
|
+
Autotest.add_discovery { "rspec2" }
|
data/bin/git-topic
ADDED
@@ -0,0 +1,143 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
|
4
|
+
require 'trollop'
|
5
|
+
require 'git-topic'
|
6
|
+
|
7
|
+
|
8
|
+
module GitTopic
|
9
|
+
SubCommands = %w(work-on done status review accept reject install-aliases)
|
10
|
+
|
11
|
+
class << self
|
12
|
+
def run
|
13
|
+
global_opts = Trollop::options do
|
14
|
+
banner "
|
15
|
+
Manage a topic/review workflow.
|
16
|
+
|
17
|
+
Commands are:
|
18
|
+
#{SubCommands.join( "
|
19
|
+
" )}
|
20
|
+
|
21
|
+
Global Options:
|
22
|
+
".cleanup
|
23
|
+
|
24
|
+
opt :verbose, "Verbose output, including complete traces on errors."
|
25
|
+
stop_on SubCommands
|
26
|
+
end
|
27
|
+
|
28
|
+
cmd = ARGV.shift
|
29
|
+
cmd_opts = Trollop::options do
|
30
|
+
case cmd
|
31
|
+
when "work-on"
|
32
|
+
banner "
|
33
|
+
work-on <topic>
|
34
|
+
|
35
|
+
Switches to a local work-in-progress (wip) branch for <topic>. The
|
36
|
+
branch (and a matching remote branch) is created if necessary.
|
37
|
+
|
38
|
+
If this is a rejected topic, work will continue from the state of
|
39
|
+
the rejected topic branch.
|
40
|
+
".cleanup
|
41
|
+
when /done(-with)?/
|
42
|
+
banner "
|
43
|
+
done
|
44
|
+
|
45
|
+
Indicate that this topic branch is ready for review. Push to a
|
46
|
+
remote review branch and switch back to master.
|
47
|
+
".cleanup
|
48
|
+
when "status"
|
49
|
+
banner "
|
50
|
+
status
|
51
|
+
|
52
|
+
Print a status, showing rejected branches to work on and branches
|
53
|
+
that can be reviewed.
|
54
|
+
|
55
|
+
Options:
|
56
|
+
".cleanup
|
57
|
+
opt :prepended,
|
58
|
+
"
|
59
|
+
Prepend status to git status output (for a complete view of
|
60
|
+
status).
|
61
|
+
".oneline,
|
62
|
+
:default => false
|
63
|
+
when "review"
|
64
|
+
banner "
|
65
|
+
review [<topic>]
|
66
|
+
|
67
|
+
Review <topic>. If <topic> is unspecified, review the oldest (by HEAD) topic.
|
68
|
+
".cleanup
|
69
|
+
when "accept"
|
70
|
+
banner "
|
71
|
+
accept
|
72
|
+
|
73
|
+
Accept the current in-review topic, merging it to master and
|
74
|
+
cleaning up the remote branch. This will fail if the branch does
|
75
|
+
not merge as a fast-forward in master. If that happens, the topic
|
76
|
+
should either be rejected, or you can manually rebase.
|
77
|
+
".cleanup
|
78
|
+
when "reject"
|
79
|
+
banner "
|
80
|
+
reject
|
81
|
+
|
82
|
+
Reject the current in-review topic.
|
83
|
+
".cleanup
|
84
|
+
when "install-aliases"
|
85
|
+
banner "
|
86
|
+
install-aliases
|
87
|
+
|
88
|
+
Install aliases to make git topic nicer to work with. The aliases are as follows:
|
89
|
+
|
90
|
+
w[ork-on] topic work-on
|
91
|
+
done topic done
|
92
|
+
r[eview] topic review
|
93
|
+
accept topic accept
|
94
|
+
reject topic reject
|
95
|
+
|
96
|
+
st topic status --prepended
|
97
|
+
|
98
|
+
Options:
|
99
|
+
".cleanup
|
100
|
+
|
101
|
+
opt :local,
|
102
|
+
"
|
103
|
+
Install aliases non-globally (i.e. in .git/config instead of
|
104
|
+
$HOME/.gitconfig
|
105
|
+
".oneline,
|
106
|
+
:default => false
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
opts = global_opts.merge( cmd_opts )
|
111
|
+
display_git_output! if opts[:verbose]
|
112
|
+
|
113
|
+
case cmd
|
114
|
+
when "work-on"
|
115
|
+
topic = ARGV.shift
|
116
|
+
work_on topic, opts
|
117
|
+
when /done(-with)?/
|
118
|
+
topic = ARGV.shift
|
119
|
+
done topic, opts
|
120
|
+
when "status"
|
121
|
+
status opts
|
122
|
+
when "review"
|
123
|
+
spec = ARGV.shift
|
124
|
+
review spec, opts
|
125
|
+
when "accept"
|
126
|
+
topic = ARGV.shift
|
127
|
+
accept topic, opts
|
128
|
+
when "reject"
|
129
|
+
topic = ARGV.shift
|
130
|
+
reject topic, opts
|
131
|
+
when "install-aliases"
|
132
|
+
install_aliases opts
|
133
|
+
end
|
134
|
+
rescue => error
|
135
|
+
puts "Error: #{error.message}"
|
136
|
+
puts error.backtrace.join( "\n" ) if opts[:verbose]
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
|
142
|
+
GitTopic::run
|
143
|
+
|