git-scripts 0.9.1 → 0.9.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +6 -55
- data/bin/feature +0 -12
- data/completion/_feature +1 -1
- data/completion/bash_completion.sh +2 -11
- data/lib/git.rb +1 -15
- data/lib/helpers.rb +1 -47
- data/man/feature-finish-issue.1 +2 -2
- data/man/feature-finish-issue.1.ronn +1 -1
- data/man/feature-finish.1 +2 -2
- data/man/feature-finish.1.ronn +1 -1
- data/man/feature-github-test.1 +1 -1
- data/man/feature-list.1 +2 -2
- data/man/feature-list.1.ronn +1 -1
- data/man/feature-merge.1 +2 -2
- data/man/feature-merge.1.ronn +1 -1
- data/man/feature-prune.1 +1 -1
- data/man/feature-start.1 +2 -2
- data/man/feature-start.1.ronn +1 -1
- data/man/feature-stashes.1 +1 -4
- data/man/feature-stashes.1.ronn +0 -2
- data/man/feature-status.1 +1 -4
- data/man/feature-status.1.ronn +0 -2
- data/man/feature-switch.1 +2 -2
- data/man/feature-switch.1.ronn +1 -1
- data/man/feature-url.1 +2 -2
- data/man/feature-url.1.ronn +1 -1
- data/man/feature.1 +3 -3
- data/man/feature.1.ronn +2 -3
- data/man/index.txt +0 -7
- metadata +4 -23
- data/bin/hotfix +0 -230
- data/completion/_hotfix +0 -28
- data/man/hotfix-finish-issue.1 +0 -22
- data/man/hotfix-finish-issue.1.ronn +0 -26
- data/man/hotfix-finish.1 +0 -22
- data/man/hotfix-finish.1.ronn +0 -25
- data/man/hotfix-list.1 +0 -28
- data/man/hotfix-list.1.ronn +0 -29
- data/man/hotfix-merge.1 +0 -25
- data/man/hotfix-merge.1.ronn +0 -29
- data/man/hotfix-start.1 +0 -22
- data/man/hotfix-start.1.ronn +0 -23
- data/man/hotfix-switch.1 +0 -38
- data/man/hotfix-switch.1.ronn +0 -33
- data/man/hotfix-url.1 +0 -22
- data/man/hotfix-url.1.ronn +0 -23
- data/man/hotfix.1 +0 -52
- data/man/hotfix.1.ronn +0 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e5d80b708d282d506e10b2c2b2a70efcb888bd8cf85722f70cf8d3d62adcdb0
|
4
|
+
data.tar.gz: f087693642161ef49da12207a75471daa82effe96dfc2f63cfc669ab98a50185
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4fc9f06c243191725a23cb5fc1baad0dc2e21ad9dbfc69ce0121aaad7207187c4d68bbdc54efe282a300a626d9012ba696fc41aa0f68a9d651ca5002ae24dbf
|
7
|
+
data.tar.gz: cee8d4b300803a86a526f2c0a251954ac7977c684c9e64781f32be5c935b5aa102640542bf8494380a8309257f12d48acd5405eb51aed385820870293d1e8590
|
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
# Git Scripts
|
4
4
|
|
5
|
-
User scripts for easily managing feature branches
|
5
|
+
User scripts for easily managing feature branches.
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
```bash
|
@@ -16,45 +16,23 @@ git clone git://github.com/iFixit/git-scripts.git
|
|
16
16
|
cd git-scripts
|
17
17
|
bundle install
|
18
18
|
ln -s ${PWD}/bin/feature /path/to/bin/dir/
|
19
|
-
ln -s ${PWD}/bin/hotfix /path/to/bin/dir/
|
20
19
|
```
|
21
20
|
|
22
21
|
## Branching Model
|
23
22
|
|
24
23
|
This is loosely based on the [Git Flow][gitflow] branching model, with a couple
|
25
24
|
of noteable changes. Essentially Git Flow's `develop` is our `master`, Git
|
26
|
-
Flow's `master` is our `stable`,
|
27
|
-
|
25
|
+
Flow's `master` is our `stable`, there are no `release` branches nor hotfix
|
26
|
+
branches.
|
28
27
|
|
29
|
-
**master** is
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
**stable** is the branch which is deployed on the production machines. You
|
34
|
-
should always be able to check out this branch and get "bug-free" production
|
35
|
-
code. This branch is always ready-to-go and should always be deployed as soon
|
36
|
-
as it's changed
|
28
|
+
**master** is always deployed. It's also the branch that all feature branches
|
29
|
+
start from. This is configurable using: `git config feature.development_branch
|
30
|
+
branch-name`
|
37
31
|
|
38
32
|
**feature branches** are named after the feature you're developing and branched
|
39
33
|
from `master`. When finished, the feature branch is merged back into master
|
40
34
|
with `--no-ff` (so we preserve the merge commit) and deleted.
|
41
35
|
|
42
|
-
**hotfix branches** are named `hotfix-name` and branched from `stable`. When
|
43
|
-
finished, the hotfix branch is merged back into `stable` with `--no-ff` so we
|
44
|
-
preserve the merge commit. We attempt to merge it back into `master` as well,
|
45
|
-
but if it's going to get messy just bail.
|
46
|
-
|
47
|
-
## Deployment
|
48
|
-
|
49
|
-
The production machines always run off the `stable` branch. When deploying,
|
50
|
-
you need to:
|
51
|
-
|
52
|
-
* Merge `stable` into `master` (and vice-versa). This ensures that the two code
|
53
|
-
paths come together relatively frequently. This also guarantees that we'll
|
54
|
-
pick up any stray hotfixes that didn't get merged back.
|
55
|
-
|
56
|
-
* Create a tag on `stable` for keeping track of deploys
|
57
|
-
|
58
36
|
## feature script
|
59
37
|
|
60
38
|
feature <command> [branch name]
|
@@ -96,33 +74,6 @@ remote version of the current branch (the upstream).
|
|
96
74
|
Lists the stashes saved on the current branch if any. -v shows all stashes on
|
97
75
|
all branches.
|
98
76
|
|
99
|
-
## hotfix script
|
100
|
-
|
101
|
-
hotfix <command> [branch name]
|
102
|
-
|
103
|
-
Automates the process of fixing a bug on the live site, similar to the
|
104
|
-
`feature` script with a few differences. Any command that is run with missing
|
105
|
-
arguments will just print the help and exit
|
106
|
-
|
107
|
-
hotfix start my-sweet-fix
|
108
|
-
|
109
|
-
Makes a new branch from `stable` named `hotfix_my-sweet-fix`. Prepending the
|
110
|
-
name with `hotfix_` allows easy filtering.
|
111
|
-
|
112
|
-
hotfix switch my-other-fix
|
113
|
-
|
114
|
-
Switches hotfix branches. Assuming the branch `hotfix_my-other-fix` exists, it
|
115
|
-
checks out that branch and informs you about any stashes saved on that branch.
|
116
|
-
|
117
|
-
hotfix finish [my-other-fix]
|
118
|
-
|
119
|
-
Creates a pull-request on Github for the current or specified hotfix branch.
|
120
|
-
|
121
|
-
hotfix merge [my-other-fix]
|
122
|
-
|
123
|
-
Merges the hotfix branch back into `stable` with `--no-ff`. Also does a
|
124
|
-
merge back into `master`.
|
125
|
-
|
126
77
|
[gitflow]: http://nvie.com/posts/a-successful-git-branching-model/
|
127
78
|
|
128
79
|
## Plugins
|
data/bin/feature
CHANGED
@@ -88,10 +88,6 @@ when 'status'
|
|
88
88
|
when 'finish'
|
89
89
|
feature = ARGV[1] || Git::current_branch
|
90
90
|
|
91
|
-
if is_hotfix_branch feature
|
92
|
-
abort "This is a hotfix branch. Please use hotfix-finish."
|
93
|
-
end
|
94
|
-
|
95
91
|
# Push commits to origin
|
96
92
|
Git::run_safe(["git push origin #{feature}:#{feature}"])
|
97
93
|
|
@@ -123,10 +119,6 @@ when 'finish-issue'
|
|
123
119
|
issue = ARGV[1]
|
124
120
|
feature = Git::current_branch
|
125
121
|
|
126
|
-
if is_hotfix_branch feature
|
127
|
-
abort "This is a hotfix branch. Please use hotfix-finish-issue."
|
128
|
-
end
|
129
|
-
|
130
122
|
# Push commits to origin
|
131
123
|
Git::run_safe(["git push origin #{feature}:#{feature}"])
|
132
124
|
|
@@ -183,10 +175,6 @@ when 'merge'
|
|
183
175
|
feature = ARGV[1] || Git::current_branch
|
184
176
|
end
|
185
177
|
|
186
|
-
if is_hotfix_branch feature
|
187
|
-
exit 1 unless confirm("It looks like this is a hotfix branch. Are you sure you want to merge it into only #{dev_branch}?")
|
188
|
-
end
|
189
|
-
|
190
178
|
pull_info = Github::get_pull_request_info_from_api(feature, dev_branch)
|
191
179
|
|
192
180
|
warning = Github::get_commit_status_warning(pull_info[:status])
|
data/completion/_feature
CHANGED
@@ -22,7 +22,7 @@ _feature() {
|
|
22
22
|
"$words[2]" == "url" ||
|
23
23
|
"$words[2]" == "finish" ]]; then
|
24
24
|
local -a featureBranches args
|
25
|
-
featureBranches="$(git branch -a | tr -d ' *' |
|
25
|
+
featureBranches="$(git branch -a | tr -d ' *' | sed 's|remotes/origin/||')"
|
26
26
|
args="$(echo ${featureBranches} | tr "\$\'\\n\'" " ")"
|
27
27
|
_arguments '2:Branches:($(echo ${args}))'
|
28
28
|
fi
|
@@ -12,16 +12,7 @@ _git-scripts()
|
|
12
12
|
if [ "$line" = "$cmd $cur" ]; then
|
13
13
|
words="switch start finish finish-issue stashes list merge pull status prune url"
|
14
14
|
else
|
15
|
-
|
16
|
-
words="$(git branch -a | tr -d ' *' | grep -v 'hotfix-' | sed 's|remotes/origin/||')"
|
17
|
-
fi
|
18
|
-
;;
|
19
|
-
hotfix)
|
20
|
-
if [ "$line" = "$cmd $cur" ]; then
|
21
|
-
words="switch start finish finish-issue merge list url"
|
22
|
-
else
|
23
|
-
# get hotfix branch names
|
24
|
-
words="$(git branch -a | tr -d ' *' | grep 'hotfix-' | sed -e 's|remotes/origin/||' -e 's|hotfix-||')"
|
15
|
+
words="$(git branch -a | tr -d ' *' | sed 's|remotes/origin/||')"
|
25
16
|
fi
|
26
17
|
;;
|
27
18
|
esac
|
@@ -30,4 +21,4 @@ _git-scripts()
|
|
30
21
|
return 0
|
31
22
|
}
|
32
23
|
|
33
|
-
complete -F _git-scripts feature
|
24
|
+
complete -F _git-scripts feature
|
data/lib/git.rb
CHANGED
@@ -59,20 +59,6 @@ module Git
|
|
59
59
|
self::all_branches - self::merged_branches(branch)
|
60
60
|
end
|
61
61
|
|
62
|
-
# Returns an array of unmerged hotfix branches
|
63
|
-
def self.hotfix_branches(type)
|
64
|
-
stable_branch = get_branch('stable')
|
65
|
-
branches = if type == :unmerged
|
66
|
-
self.branches_not_merged_into(stable_branch)
|
67
|
-
elsif type == :merged
|
68
|
-
self.merged_branches(stable_branch)
|
69
|
-
else
|
70
|
-
raise ArgumentError, 'Must specify :merged or :unmerged in hotfix_branches.'
|
71
|
-
end
|
72
|
-
|
73
|
-
branches.select {|branch| branch.include?('hotfix-') }
|
74
|
-
end
|
75
|
-
|
76
62
|
# Returns an array of unmerged feature branches
|
77
63
|
def self.feature_branches(type)
|
78
64
|
devBranch = get_branch('development')
|
@@ -85,7 +71,7 @@ module Git
|
|
85
71
|
raise ArgumentError, 'Must specify :merged or :unmerged in feature_branches.'
|
86
72
|
end
|
87
73
|
|
88
|
-
branches
|
74
|
+
branches
|
89
75
|
end
|
90
76
|
|
91
77
|
# Returns an array of all branch names that have have been merged into the
|
data/lib/helpers.rb
CHANGED
@@ -31,24 +31,6 @@ def display_feature_help(command = nil, message = nil)
|
|
31
31
|
)
|
32
32
|
end
|
33
33
|
|
34
|
-
def display_hotfix_help(command = nil, message = nil)
|
35
|
-
display_help(
|
36
|
-
:script_name => "Git Hotfix Helper",
|
37
|
-
:commands => {
|
38
|
-
:list => "hotfix list [-v]",
|
39
|
-
:url => "hotfix url [name-of-hotfix]",
|
40
|
-
:start => "hotfix start name-of-hotfix",
|
41
|
-
:switch => "hotfix switch (name-of-hotfix | -n number-of-hotfix) [options]",
|
42
|
-
:finish => "hotfix finish [name-of-hotfix]",
|
43
|
-
:'finish-issue' => "hotfix finish-issue issue-number",
|
44
|
-
:merge => "hotfix merge (name-of-hotfix | -n number-of-hotfix)",
|
45
|
-
},
|
46
|
-
:command_name => 'hotfix',
|
47
|
-
:command => command,
|
48
|
-
:message => message
|
49
|
-
)
|
50
|
-
end
|
51
|
-
|
52
34
|
def display_help(args)
|
53
35
|
command = args[:command]
|
54
36
|
message = args[:message]
|
@@ -90,11 +72,7 @@ end
|
|
90
72
|
##
|
91
73
|
def require_argument(program, command = nil, min = 2, max = 2)
|
92
74
|
help = lambda do |msg|
|
93
|
-
|
94
|
-
display_hotfix_help(command, msg)
|
95
|
-
else
|
96
|
-
display_feature_help(command, msg)
|
97
|
-
end
|
75
|
+
display_feature_help(command, msg)
|
98
76
|
end
|
99
77
|
|
100
78
|
if (ARGV.length > max)
|
@@ -137,30 +115,6 @@ def get_branch_name_from_number(num)
|
|
137
115
|
return octokit.pull_request(Github::get_github_repo, num).head.ref
|
138
116
|
end
|
139
117
|
|
140
|
-
def hotfix_branch(name)
|
141
|
-
if is_hotfix_branch(name)
|
142
|
-
return name
|
143
|
-
else
|
144
|
-
return "hotfix-#{name}"
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
def current_hotfix_branch()
|
149
|
-
if ARGV[1] == '-n'
|
150
|
-
branch = get_branch_name_from_number(ARGV[2])
|
151
|
-
elsif ARGV[1]
|
152
|
-
branch = hotfix_branch(ARGV[1])
|
153
|
-
else
|
154
|
-
branch = Git::current_branch
|
155
|
-
end
|
156
|
-
|
157
|
-
return branch
|
158
|
-
end
|
159
|
-
|
160
|
-
def is_hotfix_branch(name)
|
161
|
-
name =~ /^hotfix-/
|
162
|
-
end
|
163
|
-
|
164
118
|
def wrap_text(txt, col = 80)
|
165
119
|
txt.gsub(
|
166
120
|
/(.{1,#{col}})(?: +|$)\n?|(.{#{col}})/,
|
data/man/feature-finish-issue.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\-FINISH\-ISSUE" "1" "
|
4
|
+
.TH "FEATURE\-FINISH\-ISSUE" "1" "November 2019" "iFixit" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBfeature\-finish\-issue\fR \- Finish this feature branch and attach it to an issue\.
|
@@ -16,7 +16,7 @@ Finish the current feature branch and optionally convert an existing issue into
|
|
16
16
|
Copyright (c) 2012\-2013 iFixit\.
|
17
17
|
.
|
18
18
|
.SH "SEE ALSO"
|
19
|
-
feature(1), feature\-finish(1)
|
19
|
+
feature(1), feature\-finish(1)
|
20
20
|
.
|
21
21
|
.SH "WWW"
|
22
22
|
https://github\.com/iFixit/git\-scripts
|
data/man/feature-finish.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\-FINISH" "1" "
|
4
|
+
.TH "FEATURE\-FINISH" "1" "November 2019" "iFixit" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBfeature\-finish\fR \- Finish this feature branch\.
|
@@ -16,7 +16,7 @@ Finish the current feature branch or the one specified\. Push all remote commits
|
|
16
16
|
Copyright (c) 2012\-2013 iFixit\.
|
17
17
|
.
|
18
18
|
.SH "SEE ALSO"
|
19
|
-
feature(1), feature\-finish\-issue(1)
|
19
|
+
feature(1), feature\-finish\-issue(1)
|
20
20
|
.
|
21
21
|
.SH "WWW"
|
22
22
|
https://github\.com/iFixit/git\-scripts
|
data/man/feature-finish.1.ronn
CHANGED
data/man/feature-github-test.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\-GITHUB\-TEST" "1" "
|
4
|
+
.TH "FEATURE\-GITHUB\-TEST" "1" "July 2013" "iFixit" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBfeature\-github\-test\fR \- Test Github authentication\.
|
data/man/feature-list.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\-LIST" "1" "
|
4
|
+
.TH "FEATURE\-LIST" "1" "November 2019" "iFixit" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBfeature\-list\fR \- Lists the current branch and any available feature branches\.
|
@@ -22,7 +22,7 @@ List merged branches\.
|
|
22
22
|
Copyright (c) 2012\-2013 iFixit\.
|
23
23
|
.
|
24
24
|
.SH "SEE ALSO"
|
25
|
-
feature(1)
|
25
|
+
feature(1)
|
26
26
|
.
|
27
27
|
.SH "WWW"
|
28
28
|
https://github\.com/iFixit/git\-scripts
|
data/man/feature-list.1.ronn
CHANGED
data/man/feature-merge.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\-MERGE" "1" "
|
4
|
+
.TH "FEATURE\-MERGE" "1" "November 2019" "iFixit" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBfeature\-merge\fR \- Merge a feature branch into the development branch\.
|
@@ -19,7 +19,7 @@ Deletes the local copy of the branch on success\.
|
|
19
19
|
Copyright (c) 2012\-2013 iFixit\.
|
20
20
|
.
|
21
21
|
.SH "SEE ALSO"
|
22
|
-
feature(1)
|
22
|
+
feature(1)
|
23
23
|
.
|
24
24
|
.SH "WWW"
|
25
25
|
https://github\.com/iFixit/git\-scripts
|
data/man/feature-merge.1.ronn
CHANGED
data/man/feature-prune.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\-PRUNE" "1" "
|
4
|
+
.TH "FEATURE\-PRUNE" "1" "July 2013" "iFixit" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBfeature\-prune\fR \- Remove old branches on original or local\.
|
data/man/feature-start.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\-START" "1" "
|
4
|
+
.TH "FEATURE\-START" "1" "November 2019" "iFixit" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBfeature\-start\fR \- Start a new feature branch\.
|
@@ -16,7 +16,7 @@ Start a new feature branch based off \fIfeature\.development\-branch\fR\.
|
|
16
16
|
Copyright (c) 2012\-2013 iFixit\.
|
17
17
|
.
|
18
18
|
.SH "SEE ALSO"
|
19
|
-
feature(1)
|
19
|
+
feature(1)
|
20
20
|
.
|
21
21
|
.SH "WWW"
|
22
22
|
https://github\.com/iFixit/git\-scripts
|
data/man/feature-start.1.ronn
CHANGED
data/man/feature-stashes.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\-STASHES" "1" "
|
4
|
+
.TH "FEATURE\-STASHES" "1" "November 2019" "iFixit" ""
|
5
5
|
.
|
6
6
|
.SH "NAME"
|
7
7
|
\fBfeature\-stashes\fR \- Show stashes saved on the current branch\.
|
@@ -12,9 +12,6 @@
|
|
12
12
|
.SH "DESCRIPTION"
|
13
13
|
Show stashes saved on the current branch\. Display the relative time the stash was saved, the stash message, and instructions on viewing and applying the stash\.
|
14
14
|
.
|
15
|
-
.P
|
16
|
-
Compatible with hotfix branches\.
|
17
|
-
.
|
18
15
|
.SH "OPTIONS"
|
19
16
|
.
|
20
17
|
.TP
|