flash_flow 1.1.1 → 1.1.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +30 -15
- data/lib/flash_flow/data/base.rb +11 -1
- data/lib/flash_flow/shadow_repo.rb +7 -2
- data/lib/flash_flow/version.rb +1 -1
- data/log/.keep +0 -0
- data/test/lib/test_deploy.rb +5 -4
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 27e0ad4e0bdac4c870699435930fec56da8d1e6f
|
4
|
+
data.tar.gz: 81f782e7022f09c4814f6488f387767df0c7e042
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7e7c38d6703b872e27d45202122a2e747a1fa9aca61ae80937c78cea2b932dee0587eaa963b8a09ac3a986f70aca121c6142970b67808c6bfbb335afddadc480
|
7
|
+
data.tar.gz: f83076ce192c2bb9987c883e10a6ea1e91be261bfc6c7b6b1f5cf78c3ad9b14433bd25a849ec5412a6ee70e7e9dfff9613ac4743f37ed84d7f443222fe2b7d9a
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -36,14 +36,16 @@ What that will do (once your application is properly configured) is:
|
|
36
36
|
3. Get your list of pull requests from github (or use the saved list, more on that later)
|
37
37
|
4. Filter out any "removed" branches
|
38
38
|
5. Merge the rest into the newly created `merge_branch`
|
39
|
-
6.
|
39
|
+
6. Push the `merge_branch` to the `merge_remote`
|
40
|
+
7. The `merge_branch` is now a merge of your master branch plus all of your pull requests.
|
40
41
|
|
41
42
|
### Notes
|
42
43
|
|
43
44
|
1. Step 1 will not push your branch if you're on either the `merge_branch` or `master_branch`, but it will
|
44
45
|
still merge all the other branches and push the result.
|
45
|
-
2. flash_flow
|
46
|
-
|
46
|
+
2. flash_flow creates a copy of your local git repo. The copy lives in /your/repo/dir/../.flash_flow/.
|
47
|
+
That's where it merges all the code and pushes to the remote from. This "shadow" directory is used so
|
48
|
+
that your local git repository is still available for your use while flash flow is running.
|
47
49
|
|
48
50
|
|
49
51
|
### Configuring a lock
|
@@ -60,20 +62,25 @@ In step 1 after your branch is pushed, a pull request into `master_branch` will
|
|
60
62
|
add the "do not merge" label to a pull request, it will be excluded from the `merge_branch`. This is extremely
|
61
63
|
useful whenever one of your co-workers breaks the build, you can either run `flash_flow --no-merge` from their
|
62
64
|
branch, or go directly to github and add the "do not merge" label and then re-run flash_flow from your branch.
|
65
|
+
|
63
66
|
To use github as your source of merge branches you have to configure it with the class name, github token and
|
64
67
|
repo, your master branch name and both the unmergeable label and do not merge label, which must exist on github.
|
65
68
|
The unmergeable label is added to a pull request that has a conflict that can't be resolved and is therefore
|
66
69
|
excluded from the merge branch.
|
67
70
|
|
68
71
|
### Configuring an issue tracker
|
69
|
-
We use Pivotal Tracker.
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
72
|
+
We use Pivotal Tracker. When we have finished work for a story on a particular branch we run
|
73
|
+
`flash_flow --story <story_id>`, which will transition all of those stories to "finished" if they were previously
|
74
|
+
"started".
|
75
|
+
|
76
|
+
When code deploys to our review environment, our deploy script runs `flash_flow --review-deploy`, which transitions
|
77
|
+
stories associated with merged branches from "finished" to "delivered". At the same time, for a branch that has been
|
78
|
+
removed ("--no-merge"), if the story is "delivered" it will transition back to "finished". This means that the only
|
79
|
+
buttons that have to be manually clicked in tracker are "Start" and "Accept/Reject".
|
80
|
+
|
81
|
+
In addition, as part of our production deploy script, we run `flash_flow --prod-deploy`, which takes all the stories
|
82
|
+
that are newly in the `master_branch` and adds a comment "Deployed to production on 12/25/2015 at 11:11pm". Tracker
|
83
|
+
doesn't support a real state for "In production", so for us this comment serves as that state.
|
77
84
|
|
78
85
|
### Configuring hipchat
|
79
86
|
When a branch other than the one you're on doesn't merge cleanly and can't be fixed by rerere (more on that later
|
@@ -123,14 +130,22 @@ If you have Pivotal Tracker configured it will look at all stories associated wi
|
|
123
130
|
deployed to `acceptance_branch` it will mark any finished stories as delivered. This is best used right after every
|
124
131
|
deploy to your acceptance environment. The acceptance branch will not be re-built in this case.
|
125
132
|
|
126
|
-
|
133
|
+
#### --resolve
|
134
|
+
Launch a bash shell to save your conflict resolutions. If your branch didn't merge the last time you ran flash flow
|
135
|
+
you'll run this command. This drops you into bash where you can save your resolved conflicts, then those resolutions
|
136
|
+
will be remembered the next time you run flash flow.
|
137
|
+
|
138
|
+
#### --resolve-manual
|
139
|
+
Print instructions that will show you how to resolve your merge conflicts without using flash flow's version of the
|
140
|
+
shell. If you don't use bash, or flash flow does odd things to your bash config, this is the way to go.
|
141
|
+
|
142
|
+
### A note about merge conflicts
|
127
143
|
When we first started using flash_flow, if your branch had a merge conflict you were out of luck. You had to wait for
|
128
144
|
the branch that you were conflicting with to be merged to master, merge master into your branch, and then try again to
|
129
145
|
get your code into the merge branch.
|
130
146
|
|
131
|
-
Then we discovered git rerere, which is the coolest feature of git that almost no one seems to have heard of.
|
132
|
-
|
133
|
-
resolved conflicts and apply those patches.
|
147
|
+
Then we discovered git rerere, which is the coolest feature of git that almost no one seems to have heard of. Basically
|
148
|
+
what rerere does is remember how you resolved conflicts and auto-apply those patches when it notices the same conflicts.
|
134
149
|
|
135
150
|
If your branch has a conflict with the `merge_branch` flash_flow will look for a rerere patch and apply that if it
|
136
151
|
exists. If it doesn't, flash_flow will not merge your branch (but will continue merging all the others), and it will
|
data/lib/flash_flow/data/base.rb
CHANGED
@@ -44,7 +44,10 @@ module FlashFlow
|
|
44
44
|
|
45
45
|
def backwards_compatible_store
|
46
46
|
@backwards_compatible_store ||= begin
|
47
|
-
hash =
|
47
|
+
hash = in_shadow_repo do
|
48
|
+
@store.get
|
49
|
+
end
|
50
|
+
|
48
51
|
hash.has_key?('branches') ? hash : { 'branches' => hash }
|
49
52
|
end
|
50
53
|
end
|
@@ -53,6 +56,13 @@ module FlashFlow
|
|
53
56
|
Collection.from_hash(@git.remotes, backwards_compatible_store['branches']).to_a
|
54
57
|
end
|
55
58
|
|
59
|
+
private
|
60
|
+
|
61
|
+
def in_shadow_repo
|
62
|
+
ShadowRepo.new(@git).in_dir do
|
63
|
+
yield
|
64
|
+
end
|
65
|
+
end
|
56
66
|
end
|
57
67
|
end
|
58
68
|
end
|
@@ -29,12 +29,17 @@ module FlashFlow
|
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
+
FLASH_FLOW_BASE = '.flash_flow'
|
32
33
|
def flash_flow_base_dir
|
33
|
-
|
34
|
+
if current_dir =~ /\.flash_flow/
|
35
|
+
"#{current_dir.split(FLASH_FLOW_BASE).first}#{FLASH_FLOW_BASE}"
|
36
|
+
else
|
37
|
+
"#{current_dir}/../#{FLASH_FLOW_BASE}"
|
38
|
+
end
|
34
39
|
end
|
35
40
|
|
36
41
|
def current_dir
|
37
|
-
|
42
|
+
Dir.getwd
|
38
43
|
end
|
39
44
|
|
40
45
|
def flash_flow_dir
|
data/lib/flash_flow/version.rb
CHANGED
data/log/.keep
ADDED
File without changes
|
data/test/lib/test_deploy.rb
CHANGED
@@ -75,8 +75,10 @@ module FlashFlow
|
|
75
75
|
def test_check_out_to_working_branch
|
76
76
|
@deploy.stub(:in_shadow_repo, true) do
|
77
77
|
@deploy.stub(:check_repo, true) do
|
78
|
-
|
79
|
-
|
78
|
+
@deploy.stub(:check_version, true) do
|
79
|
+
Lock::Base.stub_any_instance(:with_lock, -> { raise Lock::Error }) do
|
80
|
+
assert_output(/Failure!/) { @deploy.run }
|
81
|
+
end
|
80
82
|
end
|
81
83
|
end
|
82
84
|
end
|
@@ -99,13 +101,12 @@ module FlashFlow
|
|
99
101
|
end
|
100
102
|
|
101
103
|
def test_merge_conflict
|
102
|
-
data.expect(:mark_failure, true, [@branch,
|
104
|
+
data.expect(:mark_failure, true, [@branch, nil])
|
103
105
|
|
104
106
|
notifier.expect(:merge_conflict, true, [@branch])
|
105
107
|
|
106
108
|
merger
|
107
109
|
.expect(:do_merge, :conflict, [ false ])
|
108
|
-
.expect(:conflict_sha, 'some_sha')
|
109
110
|
|
110
111
|
BranchMerger.stub(:new, merger) do
|
111
112
|
@deploy.git_merge(@branch, false)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flash_flow
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Flashfunders
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-10-
|
11
|
+
date: 2015-10-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: octokit
|
@@ -164,6 +164,7 @@ files:
|
|
164
164
|
- lib/flash_flow/shadow_repo.rb
|
165
165
|
- lib/flash_flow/time_helper.rb
|
166
166
|
- lib/flash_flow/version.rb
|
167
|
+
- log/.keep
|
167
168
|
- test/lib/data/test_base.rb
|
168
169
|
- test/lib/data/test_branch.rb
|
169
170
|
- test/lib/data/test_collection.rb
|