git-scripts 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/feature +28 -14
- data/bin/hotfix +24 -19
- data/lib/git.rb +11 -11
- data/lib/github.rb +36 -8
- data/lib/helpers.rb +2 -2
- data/man/feature-clean.1 +1 -1
- data/man/feature-clean.1.html +120 -0
- data/man/feature-clean.1.markdown +61 -0
- data/man/feature-finish-issue.1 +1 -1
- data/man/feature-finish-issue.1.html +113 -0
- data/man/feature-finish-issue.1.markdown +56 -0
- data/man/feature-finish.1 +1 -1
- data/man/feature-finish.1.html +9 -3
- data/man/feature-finish.1.markdown +56 -0
- data/man/feature-github-test.1 +1 -1
- data/man/{feature-url.1.html → feature-github-test.1.html} +15 -9
- data/man/feature-github-test.1.markdown +53 -0
- data/man/feature-list.1 +1 -1
- data/man/feature-list.1.html +8 -2
- data/man/feature-list.1.markdown +60 -0
- data/man/feature-merge.1 +2 -2
- data/man/feature-merge.1.html +7 -1
- data/man/feature-merge.1.markdown +59 -0
- data/man/feature-merge.1.ronn +1 -0
- data/man/feature-prune.1 +1 -1
- data/man/feature-prune.1.html +116 -0
- data/man/feature-prune.1.markdown +60 -0
- data/man/feature-start.1 +1 -1
- data/man/feature-start.1.html +110 -0
- data/man/feature-start.1.markdown +53 -0
- data/man/feature-stashes.1 +1 -1
- data/man/feature-stashes.1.html +122 -0
- data/man/feature-stashes.1.markdown +63 -0
- data/man/feature-status.1 +1 -1
- data/man/feature-status.1.html +113 -0
- data/man/feature-status.1.markdown +56 -0
- data/man/feature-switch.1 +1 -1
- data/man/feature-switch.1.html +8 -2
- data/man/feature-switch.1.markdown +61 -0
- data/man/feature.1 +1 -1
- data/man/feature.1.html +8 -3
- data/man/feature.1.markdown +80 -0
- data/man/hotfix-finish-issue.1 +1 -1
- data/man/hotfix-finish-issue.1.html +113 -0
- data/man/hotfix-finish-issue.1.markdown +56 -0
- data/man/hotfix-finish.1 +1 -1
- data/man/hotfix-finish.1.html +112 -0
- data/man/hotfix-finish.1.markdown +55 -0
- data/man/hotfix-list.1 +1 -1
- data/man/hotfix-list.1.html +8 -2
- data/man/hotfix-list.1.markdown +60 -0
- data/man/hotfix-merge.1 +2 -2
- data/man/hotfix-merge.1.html +7 -1
- data/man/hotfix-merge.1.markdown +59 -0
- data/man/hotfix-merge.1.ronn +1 -0
- data/man/hotfix-start.1 +1 -1
- data/man/{hotfix-url.1.html → hotfix-start.1.html} +15 -9
- data/man/hotfix-start.1.markdown +53 -0
- data/man/hotfix-switch.1 +1 -1
- data/man/hotfix-switch.1.html +112 -0
- data/man/hotfix-switch.1.markdown +55 -0
- data/man/hotfix.1 +1 -1
- data/man/hotfix.1.html +7 -2
- data/man/hotfix.1.markdown +68 -0
- metadata +84 -64
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9a2d6d6518dbc7ecc8f65e1d05f2d726198bbd74
|
4
|
+
data.tar.gz: 676e53c8cc96c98d13745280205c74108d7aa281
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4d8177e27268f8eb876a17936a196364c7bb633c2ded649e4a715fa22fd6a8d8f6895e7dbe8d57122f03bab8d1ff75291bb46744b0ede02568fa1766c80efeab
|
7
|
+
data.tar.gz: 05cb8fd81e03130a108f45be0d1802cbc5d1bf2ef5faf2250958f2714a87c69a8f3f8c05838cbef976fc727c6cd2b5d9615394cd99f6ad4ace0bc6b9ade6c5d9
|
data/bin/feature
CHANGED
@@ -26,11 +26,12 @@ when 'start'
|
|
26
26
|
feature = ARGV[1]
|
27
27
|
|
28
28
|
exit unless confirm("Create feature branch named: '#{feature}' ?")
|
29
|
+
development_branch = Git::get_branch('development')
|
29
30
|
|
30
31
|
Git::run_safe([
|
31
|
-
"git checkout #{
|
32
|
+
"git checkout #{development_branch}",
|
32
33
|
"git pull --rebase",
|
33
|
-
"git branch \"#{feature}\" #{
|
34
|
+
"git branch \"#{feature}\" #{development_branch}",
|
34
35
|
"git checkout \"#{feature}\"",
|
35
36
|
])
|
36
37
|
|
@@ -96,7 +97,7 @@ when 'finish'
|
|
96
97
|
|
97
98
|
response = octokit.create_pull_request(
|
98
99
|
Github::get_github_repo,
|
99
|
-
Git::
|
100
|
+
Git::get_branch('development'),
|
100
101
|
feature,
|
101
102
|
description[:title],
|
102
103
|
description[:body]
|
@@ -118,7 +119,7 @@ when 'finish-issue'
|
|
118
119
|
|
119
120
|
pull = octokit.create_pull_request_for_issue(
|
120
121
|
Github::get_github_repo,
|
121
|
-
Git::
|
122
|
+
Git::get_branch('development'),
|
122
123
|
feature,
|
123
124
|
issue
|
124
125
|
)
|
@@ -156,14 +157,25 @@ Original issue: #{original_title}
|
|
156
157
|
puts " " + updated_pull[:html_url]
|
157
158
|
|
158
159
|
when 'merge'
|
159
|
-
dev_branch = Git::
|
160
|
+
dev_branch = Git::get_branch('development')
|
160
161
|
fail_on_local_changes
|
161
162
|
|
162
|
-
|
163
|
+
if ARGV[1] == '-n'
|
164
|
+
feature = get_branch_name_from_number(ARGV[2])
|
165
|
+
else
|
166
|
+
feature = ARGV[1] || Git::current_branch
|
167
|
+
end
|
168
|
+
|
169
|
+
|
170
|
+
pull_info = Github::get_pull_request_info_from_api(feature, dev_branch)
|
171
|
+
|
172
|
+
warning = Github::get_commit_status_warning(pull_info[:status])
|
173
|
+
unless warning.empty?
|
174
|
+
puts highlight(warning)
|
175
|
+
end
|
163
176
|
|
164
177
|
exit 1 unless confirm("Merge feature branch named: '#{feature}' ?")
|
165
178
|
|
166
|
-
description = Github::get_pull_request_description_from_api(feature, dev_branch)
|
167
179
|
update = Git::submodules_update("get")
|
168
180
|
|
169
181
|
Git::run_safe([
|
@@ -176,7 +188,7 @@ when 'merge'
|
|
176
188
|
# rebase the unpushed master commits if any.
|
177
189
|
"git rebase --preserve-merges origin/#{dev_branch}",
|
178
190
|
# merge the feature branch into master
|
179
|
-
"git merge --no-ff --edit -m #{description.shellescape} \"#{feature}\"",
|
191
|
+
"git merge --no-ff --edit -m #{pull_info[:description].shellescape} \"#{feature}\"",
|
180
192
|
# init any submodules in the master branch
|
181
193
|
"#{update}",
|
182
194
|
# delete the local feature-branch
|
@@ -216,12 +228,14 @@ when 'prune'
|
|
216
228
|
end
|
217
229
|
|
218
230
|
currentBranch = Git::current_branch()
|
231
|
+
development_branch = Git::get_branch('development')
|
232
|
+
stable_branch = Git::get_branch('stable')
|
219
233
|
|
220
234
|
def branches_cmd(location, currentBranch)
|
221
|
-
branch = location == 'origin' ?
|
235
|
+
branch = location == 'origin' ? "origin/#{development_branch}" : development_branch
|
222
236
|
return "git branch --merged #{branch} |
|
223
|
-
grep -v
|
224
|
-
grep -v
|
237
|
+
grep -v #{development_branch} |
|
238
|
+
grep -v #{stable_branch} |
|
225
239
|
grep -v #{currentBranch}"
|
226
240
|
end
|
227
241
|
|
@@ -245,9 +259,9 @@ when 'prune'
|
|
245
259
|
system("#{commands} | xargs git branch -d")
|
246
260
|
elsif location == "origin"
|
247
261
|
system("git remote prune origin &&
|
248
|
-
git branch -r --merged origin
|
249
|
-
grep -v
|
250
|
-
grep -v
|
262
|
+
git branch -r --merged origin/#{development_branch} |
|
263
|
+
grep -v #{development_branch} |
|
264
|
+
grep -v #{stable_branch} |
|
251
265
|
grep -v #{currentBranch} |
|
252
266
|
sed -n 's| origin/|:|p' |
|
253
267
|
xargs git push origin")
|
data/bin/hotfix
CHANGED
@@ -18,13 +18,14 @@ case command
|
|
18
18
|
when 'start'
|
19
19
|
require_argument(:hotfix, :start)
|
20
20
|
hotfix = hotfix_branch(ARGV[1])
|
21
|
+
stable_branch = Git::get_branch('stable')
|
21
22
|
|
22
23
|
exit unless confirm("Create hotfix branch named: '#{hotfix}' ?")
|
23
24
|
|
24
25
|
Git::run_safe([
|
25
|
-
"git checkout
|
26
|
+
"git checkout #{stable_branch}",
|
26
27
|
"git pull --rebase",
|
27
|
-
"git branch \"#{hotfix}\"
|
28
|
+
"git branch \"#{hotfix}\" #{stable_branch}",
|
28
29
|
"git checkout \"#{hotfix}\""
|
29
30
|
])
|
30
31
|
|
@@ -60,7 +61,7 @@ when 'finish'
|
|
60
61
|
|
61
62
|
response = octokit.create_pull_request(
|
62
63
|
Github::get_github_repo,
|
63
|
-
'stable',
|
64
|
+
Git::get_branch('stable'),
|
64
65
|
hotfix,
|
65
66
|
description[:title],
|
66
67
|
description[:body]
|
@@ -83,7 +84,7 @@ when 'finish-issue'
|
|
83
84
|
|
84
85
|
pull = octokit.create_pull_request_for_issue(
|
85
86
|
Github::get_github_repo,
|
86
|
-
'stable',
|
87
|
+
Git::get_branch('stable'),
|
87
88
|
hotfix,
|
88
89
|
issue
|
89
90
|
)
|
@@ -122,20 +123,24 @@ Original issue: #{original_title}
|
|
122
123
|
|
123
124
|
when 'merge'
|
124
125
|
fail_on_local_changes
|
125
|
-
dev_branch = Git::
|
126
|
+
dev_branch = Git::get_branch('development')
|
127
|
+
stable_branch = Git::get_branch('stable')
|
126
128
|
hotfix = current_hotfix_branch
|
127
129
|
|
128
130
|
Git::run_safe(["git fetch"])
|
129
131
|
|
130
|
-
|
132
|
+
pull_info = Github::get_pull_request_info_from_api(hotfix, stable_branch)
|
133
|
+
|
134
|
+
warning = Github::get_commit_status_warning(pull_info[:status])
|
135
|
+
unless warning.empty?
|
136
|
+
puts highlight(warning)
|
137
|
+
end
|
131
138
|
|
132
|
-
|
139
|
+
exit 1 unless confirm("Merge hotfix named: '#{hotfix}' ?")
|
133
140
|
|
134
|
-
commit_message = Git::get_description_from_user(description)
|
135
|
-
|
136
|
-
dev_commit_message = commit_message.sub('stable', dev_branch)
|
141
|
+
commit_message = Git::get_description_from_user(pull_info[:description])
|
142
|
+
commit_message_dev = commit_message.sub(stable_branch, dev_branch)
|
137
143
|
|
138
|
-
# Get command to init any submodules in the stable branch.
|
139
144
|
update = Git::submodules_update("get")
|
140
145
|
|
141
146
|
Git::run_safe([
|
@@ -143,29 +148,29 @@ when 'merge'
|
|
143
148
|
"git checkout #{hotfix.shellescape}",
|
144
149
|
"git rebase --preserve-merges origin/#{hotfix.shellescape}",
|
145
150
|
# Merge into stable.
|
146
|
-
"git checkout
|
151
|
+
"git checkout #{stable_branch}",
|
147
152
|
# Pull the latest changes and rebase the unpushed commits if any.
|
148
|
-
"git rebase --preserve-merges origin
|
153
|
+
"git rebase --preserve-merges origin/#{stable_branch}",
|
149
154
|
# Merge the hotfix branch into stable.
|
150
|
-
"git merge --no-ff --no-edit -m #{commit_message.shellescape} #{hotfix
|
155
|
+
"git merge --no-ff --no-edit -m #{commit_message.shellescape} \"#{hotfix}\"",
|
151
156
|
"#{update}",
|
152
157
|
# Merge into master.
|
153
158
|
"git checkout #{dev_branch}",
|
154
159
|
# Pull the latest changes and rebase the unpushed master commits if any.
|
155
160
|
"git rebase origin/#{dev_branch}",
|
156
161
|
# Merge the hotfix branch into master.
|
157
|
-
"git merge --no-ff --no-edit -m #{
|
158
|
-
# Init any submodules in the master branch. Note: no need to change
|
159
|
-
#
|
162
|
+
"git merge --no-ff --no-edit -m #{commit_message_dev.shellescape} \"#{hotfix}\"",
|
163
|
+
# Init any submodules in the master branch. Note: no need to change.
|
164
|
+
# Directories before calling git submodule since we are already in the
|
160
165
|
# projects top-level directory.
|
161
166
|
"#{update}",
|
162
167
|
# Delete the local hotfix branch.
|
163
168
|
"git branch -d #{hotfix.shellescape}",
|
164
169
|
# Checkout stable branch.
|
165
|
-
"git checkout
|
170
|
+
"git checkout #{stable_branch}"
|
166
171
|
])
|
167
172
|
|
168
|
-
puts "Successfully merged hotfix branch: #{hotfix} into
|
173
|
+
puts "Successfully merged hotfix branch: #{hotfix} into #{stable_branch} and #{dev_branch}"
|
169
174
|
puts "If you are satisfied with the result, do this:\n" + <<CMDS
|
170
175
|
git push
|
171
176
|
git checkout #{dev_branch}
|
data/lib/git.rb
CHANGED
@@ -8,15 +8,14 @@ module Git
|
|
8
8
|
return system("git rev-parse")
|
9
9
|
end
|
10
10
|
|
11
|
-
# Return the
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
"git config feature.development-branch master")
|
11
|
+
# Return the specified branch in the feature git config section.
|
12
|
+
def self.get_branch(branch = '')
|
13
|
+
specified_branch = `git config feature.#{branch.shellescape}-branch`.strip
|
14
|
+
if specified_branch.empty? || $? != 0
|
15
|
+
die("No #{branch} branch specified; set it with:\n" +
|
16
|
+
"git config feature.#{branch}-branch \"name-of-branch\"")
|
18
17
|
end
|
19
|
-
|
18
|
+
return specified_branch
|
20
19
|
end
|
21
20
|
|
22
21
|
# Returns the editor specified in the user's gitconfig.
|
@@ -62,10 +61,11 @@ module Git
|
|
62
61
|
|
63
62
|
# Returns an array of unmerged hotfix branches
|
64
63
|
def self.hotfix_branches(type)
|
64
|
+
stable_branch = get_branch('stable')
|
65
65
|
branches = if type == :unmerged
|
66
|
-
self.branches_not_merged_into(
|
66
|
+
self.branches_not_merged_into(stable_branch)
|
67
67
|
elsif type == :merged
|
68
|
-
self.merged_branches(
|
68
|
+
self.merged_branches(stable_branch)
|
69
69
|
else
|
70
70
|
raise ArgumentError, 'Must specify :merged or :unmerged in hotfix_branches.'
|
71
71
|
end
|
@@ -75,7 +75,7 @@ module Git
|
|
75
75
|
|
76
76
|
# Returns an array of unmerged feature branches
|
77
77
|
def self.feature_branches(type)
|
78
|
-
devBranch =
|
78
|
+
devBranch = get_branch('development')
|
79
79
|
|
80
80
|
branches = if type == :unmerged
|
81
81
|
self.branches_not_merged_into(devBranch)
|
data/lib/github.rb
CHANGED
@@ -133,14 +133,15 @@ Body of pull-request
|
|
133
133
|
msg.write(message)
|
134
134
|
msg.close
|
135
135
|
|
136
|
-
|
137
|
-
if (
|
138
|
-
opts = "
|
136
|
+
editor = Git::editor
|
137
|
+
if (editor == 'vim')
|
138
|
+
opts = "'+set ft=gitcommit' '+set textwidth=72'" +
|
139
|
+
" '+setlocal spell spelllang=en_us'"
|
139
140
|
else
|
140
141
|
opts = ""
|
141
142
|
end
|
142
143
|
|
143
|
-
system("
|
144
|
+
system("#{editor} #{opts} #{msg.path.shellescape}")
|
144
145
|
full_message = File.open(msg.path, "r").read
|
145
146
|
lines = full_message.split("\n")
|
146
147
|
lines = lines.reject {|line| line =~ /^\s*#/ }
|
@@ -161,22 +162,49 @@ Body of pull-request
|
|
161
162
|
}
|
162
163
|
end
|
163
164
|
|
164
|
-
def self.
|
165
|
+
def self.get_pull_request_info_from_api(branch_name, into_branch)
|
165
166
|
octokit = Github::api
|
166
167
|
# Should succeed if authentication is set up.
|
167
|
-
|
168
|
+
repo = Github::get_github_repo
|
169
|
+
pulls = octokit.pulls(repo)
|
168
170
|
pull = pulls.find {|pull| branch_name == pull[:head][:ref] }
|
169
171
|
|
170
172
|
if pull
|
171
|
-
|
173
|
+
# This will grab the latest commit and retrieve the state from it.
|
174
|
+
sha = pull[:head][:sha]
|
175
|
+
state = octokit.statuses(repo, sha).shift
|
176
|
+
state = state ? state[:state] : 'none'
|
177
|
+
|
178
|
+
desc = <<-MSG
|
172
179
|
Merge #{branch_name} (##{pull[:number]}) into #{into_branch}
|
173
180
|
|
174
181
|
#{pull[:title].gsub("\r", '')}
|
175
182
|
|
176
183
|
#{pull[:body].gsub("\r", '')}
|
177
184
|
MSG
|
185
|
+
|
186
|
+
return {:status => state, :description => desc}
|
187
|
+
else
|
188
|
+
return {:status => nil, :description => "Merge #{branch_name} into #{into_branch}"}
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
def self.get_commit_status_warning(status)
|
193
|
+
warning = 'Merge with caution.'
|
194
|
+
case status
|
195
|
+
when 'failure'
|
196
|
+
return 'This pull request has failed to pass continuous integration' +
|
197
|
+
" tests. #{warning}"
|
198
|
+
when 'pending'
|
199
|
+
return "Continuous integration tests have not finished. #{warning}"
|
200
|
+
when 'error'
|
201
|
+
return "Build tests were not able to complete. #{warning}"
|
202
|
+
when 'none'
|
203
|
+
return 'Continuous integration has not been set up.'
|
204
|
+
when nil
|
205
|
+
return 'No pull request found for this branch.'
|
178
206
|
else
|
179
|
-
return
|
207
|
+
return ''
|
180
208
|
end
|
181
209
|
end
|
182
210
|
end
|
data/lib/helpers.rb
CHANGED
@@ -17,7 +17,7 @@ def display_feature_help(command = nil, message = nil)
|
|
17
17
|
:switch => "feature switch (name-of-feature | -n number-of-feature) [--clean]",
|
18
18
|
:finish => "feature finish [name-of-feature]",
|
19
19
|
:'finish-issue' => "feature finish-issue issue-number",
|
20
|
-
:merge => "feature merge
|
20
|
+
:merge => "feature merge (name-of-feature | -n number-of-feature)",
|
21
21
|
:pull => "feature pull",
|
22
22
|
:prune => "feature prune <local | origin> <preview | clean>",
|
23
23
|
:status => "feature status",
|
@@ -40,7 +40,7 @@ def display_hotfix_help(command = nil, message = nil)
|
|
40
40
|
:switch => "hotfix switch (name-of-hotfix | -n number-of-hotfix)",
|
41
41
|
:finish => "hotfix finish [name-of-hotfix]",
|
42
42
|
:'finish-issue' => "hotfix finish-issue issue-number",
|
43
|
-
:merge => "hotfix merge
|
43
|
+
:merge => "hotfix merge (name-of-hotfix | -n number-of-hotfix)",
|
44
44
|
},
|
45
45
|
:command_name => 'hotfix',
|
46
46
|
:command => command,
|
data/man/feature-clean.1
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
.\" generated with Ronn/v0.7.3
|
2
2
|
.\" http://github.com/rtomayko/ronn/tree/0.7.3
|
3
3
|
.
|
4
|
-
.TH "FEATURE\-CLEAN" "1" "
|
4
|
+
.TH "FEATURE\-CLEAN" "1" "September 2013" "iFixit" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBfeature\-clean\fR \- Remove untracked files and submodules\.
|
@@ -0,0 +1,120 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv='content-type' value='text/html;charset=utf8'>
|
5
|
+
<meta name='generator' value='Ronn/v0.7.3 (http://github.com/rtomayko/ronn/tree/0.7.3)'>
|
6
|
+
<title>feature-clean(1) - Remove untracked files and submodules.</title>
|
7
|
+
<style type='text/css' media='all'>
|
8
|
+
/* style: man */
|
9
|
+
body#manpage {margin:0}
|
10
|
+
.mp {max-width:100ex;padding:0 9ex 1ex 4ex}
|
11
|
+
.mp p,.mp pre,.mp ul,.mp ol,.mp dl {margin:0 0 20px 0}
|
12
|
+
.mp h2 {margin:10px 0 0 0}
|
13
|
+
.mp > p,.mp > pre,.mp > ul,.mp > ol,.mp > dl {margin-left:8ex}
|
14
|
+
.mp h3 {margin:0 0 0 4ex}
|
15
|
+
.mp dt {margin:0;clear:left}
|
16
|
+
.mp dt.flush {float:left;width:8ex}
|
17
|
+
.mp dd {margin:0 0 0 9ex}
|
18
|
+
.mp h1,.mp h2,.mp h3,.mp h4 {clear:left}
|
19
|
+
.mp pre {margin-bottom:20px}
|
20
|
+
.mp pre+h2,.mp pre+h3 {margin-top:22px}
|
21
|
+
.mp h2+pre,.mp h3+pre {margin-top:5px}
|
22
|
+
.mp img {display:block;margin:auto}
|
23
|
+
.mp h1.man-title {display:none}
|
24
|
+
.mp,.mp code,.mp pre,.mp tt,.mp kbd,.mp samp,.mp h3,.mp h4 {font-family:monospace;font-size:14px;line-height:1.42857142857143}
|
25
|
+
.mp h2 {font-size:16px;line-height:1.25}
|
26
|
+
.mp h1 {font-size:20px;line-height:2}
|
27
|
+
.mp {text-align:justify;background:#fff}
|
28
|
+
.mp,.mp code,.mp pre,.mp pre code,.mp tt,.mp kbd,.mp samp {color:#131211}
|
29
|
+
.mp h1,.mp h2,.mp h3,.mp h4 {color:#030201}
|
30
|
+
.mp u {text-decoration:underline}
|
31
|
+
.mp code,.mp strong,.mp b {font-weight:bold;color:#131211}
|
32
|
+
.mp em,.mp var {font-style:italic;color:#232221;text-decoration:none}
|
33
|
+
.mp a,.mp a:link,.mp a:hover,.mp a code,.mp a pre,.mp a tt,.mp a kbd,.mp a samp {color:#0000ff}
|
34
|
+
.mp b.man-ref {font-weight:normal;color:#434241}
|
35
|
+
.mp pre {padding:0 4ex}
|
36
|
+
.mp pre code {font-weight:normal;color:#434241}
|
37
|
+
.mp h2+pre,h3+pre {padding-left:0}
|
38
|
+
ol.man-decor,ol.man-decor li {margin:3px 0 10px 0;padding:0;float:left;width:33%;list-style-type:none;text-transform:uppercase;color:#999;letter-spacing:1px}
|
39
|
+
ol.man-decor {width:100%}
|
40
|
+
ol.man-decor li.tl {text-align:left}
|
41
|
+
ol.man-decor li.tc {text-align:center;letter-spacing:4px}
|
42
|
+
ol.man-decor li.tr {text-align:right;float:right}
|
43
|
+
</style>
|
44
|
+
<style type='text/css' media='all'>
|
45
|
+
/* style: toc */
|
46
|
+
.man-navigation {display:block !important;position:fixed;top:0;left:113ex;height:100%;width:100%;padding:48px 0 0 0;border-left:1px solid #dbdbdb;background:#eee}
|
47
|
+
.man-navigation a,.man-navigation a:hover,.man-navigation a:link,.man-navigation a:visited {display:block;margin:0;padding:5px 2px 5px 30px;color:#999;text-decoration:none}
|
48
|
+
.man-navigation a:hover {color:#111;text-decoration:underline}
|
49
|
+
</style>
|
50
|
+
</head>
|
51
|
+
<!--
|
52
|
+
The following styles are deprecated and will be removed at some point:
|
53
|
+
div#man, div#man ol.man, div#man ol.head, div#man ol.man.
|
54
|
+
|
55
|
+
The .man-page, .man-decor, .man-head, .man-foot, .man-title, and
|
56
|
+
.man-navigation should be used instead.
|
57
|
+
-->
|
58
|
+
<body id='manpage'>
|
59
|
+
<div class='mp' id='man'>
|
60
|
+
|
61
|
+
<div class='man-navigation' style='display:none'>
|
62
|
+
<a href="#NAME">NAME</a>
|
63
|
+
<a href="#SYNOPSIS">SYNOPSIS</a>
|
64
|
+
<a href="#DESCRIPTION">DESCRIPTION</a>
|
65
|
+
<a href="#OPTIONS">OPTIONS</a>
|
66
|
+
<a href="#COPYRIGHT">COPYRIGHT</a>
|
67
|
+
<a href="#SEE-ALSO">SEE ALSO</a>
|
68
|
+
<a href="#WWW">WWW</a>
|
69
|
+
</div>
|
70
|
+
|
71
|
+
<ol class='man-decor man-head man head'>
|
72
|
+
<li class='tl'>feature-clean(1)</li>
|
73
|
+
<li class='tc'></li>
|
74
|
+
<li class='tr'>feature-clean(1)</li>
|
75
|
+
</ol>
|
76
|
+
|
77
|
+
<h2 id="NAME">NAME</h2>
|
78
|
+
<p class="man-name">
|
79
|
+
<code>feature-clean</code> - <span class="man-whatis">Remove untracked files and submodules.</span>
|
80
|
+
</p>
|
81
|
+
|
82
|
+
<h2 id="SYNOPSIS">SYNOPSIS</h2>
|
83
|
+
|
84
|
+
<p><code>feature clean</code> [--all]</p>
|
85
|
+
|
86
|
+
<h2 id="DESCRIPTION">DESCRIPTION</h2>
|
87
|
+
|
88
|
+
<p>Remove untracked files and submodules.</p>
|
89
|
+
|
90
|
+
<p>Compatible with hotfix branches.</p>
|
91
|
+
|
92
|
+
<h2 id="OPTIONS">OPTIONS</h2>
|
93
|
+
|
94
|
+
<dl>
|
95
|
+
<dt> <code>--clean</code></dt><dd> Remove all untracked .gitignored files as well.</dd>
|
96
|
+
</dl>
|
97
|
+
|
98
|
+
|
99
|
+
<h2 id="COPYRIGHT">COPYRIGHT</h2>
|
100
|
+
|
101
|
+
<p>Copyright (c) 2012-2013 iFixit.</p>
|
102
|
+
|
103
|
+
<h2 id="SEE-ALSO">SEE ALSO</h2>
|
104
|
+
|
105
|
+
<p><a class="man-ref" href="feature.1.html">feature<span class="s">(1)</span></a></p>
|
106
|
+
|
107
|
+
<h2 id="WWW">WWW</h2>
|
108
|
+
|
109
|
+
<p>https://github.com/iFixit/git-scripts</p>
|
110
|
+
|
111
|
+
|
112
|
+
<ol class='man-decor man-foot man foot'>
|
113
|
+
<li class='tl'>iFixit</li>
|
114
|
+
<li class='tc'>September 2013</li>
|
115
|
+
<li class='tr'>feature-clean(1)</li>
|
116
|
+
</ol>
|
117
|
+
|
118
|
+
</div>
|
119
|
+
</body>
|
120
|
+
</html>
|