flash_flow 1.2.3 → 1.3.0
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 +5 -5
- data/lib/flash_flow/data/branch.rb +4 -1
- data/lib/flash_flow/data/collection.rb +1 -0
- data/lib/flash_flow/data/github.rb +4 -3
- data/lib/flash_flow/deploy.rb +6 -2
- data/lib/flash_flow/issue_tracker/pivotal.rb +4 -3
- data/lib/flash_flow/merge_order.rb +27 -0
- data/lib/flash_flow/options.rb +1 -1
- data/lib/flash_flow/version.rb +1 -1
- data/test/lib/data/test_branch.rb +1 -0
- data/test/lib/issue_tracker/test_pivotal.rb +5 -0
- data/test/lib/test_deploy.rb +17 -0
- data/test/lib/test_merge_order.rb +72 -0
- metadata +5 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 26e9411883c55d49e496359a23debe7ce7cad73c
         | 
| 4 | 
            +
              data.tar.gz: c08cd64b3c192f4073802a5b1254e5f821ee2d79
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 1dfe5cb15b0e924fac257397528ef2b4b6dcc00ae213abf1b909445f4059e2407056778d6f30e199dfc10711fc62ec72e766f937f869f3c0750dd46958e5c657
         | 
| 7 | 
            +
              data.tar.gz: 45e2f8c31f6900c51f84e9c9d74bf1662c43ef74fc4f91c64f1f267c6f9ba41c2eb5e6cdb687aab711bd701f316118622e6568cafae13ea14cb88d93246a87b5
         | 
    
        data/Gemfile.lock
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            PATH
         | 
| 2 2 | 
             
              remote: .
         | 
| 3 3 | 
             
              specs:
         | 
| 4 | 
            -
                flash_flow (1. | 
| 4 | 
            +
                flash_flow (1.3.0)
         | 
| 5 5 | 
             
                  hipchat (~> 1.5)
         | 
| 6 6 | 
             
                  octokit (~> 4.1)
         | 
| 7 7 | 
             
                  pivotal-tracker (~> 0.5)
         | 
| @@ -33,16 +33,16 @@ GEM | |
| 33 33 | 
             
                  json (~> 1.8)
         | 
| 34 34 | 
             
                  multi_xml (>= 0.5.2)
         | 
| 35 35 | 
             
                json (1.8.3)
         | 
| 36 | 
            -
                mime-types (2. | 
| 36 | 
            +
                mime-types (2.99)
         | 
| 37 37 | 
             
                mimemagic (0.3.0)
         | 
| 38 | 
            -
                 | 
| 38 | 
            +
                mini_portile2 (2.0.0)
         | 
| 39 39 | 
             
                minitest (5.3.5)
         | 
| 40 40 | 
             
                minitest-stub_any_instance (1.0.1)
         | 
| 41 41 | 
             
                multi_xml (0.5.5)
         | 
| 42 42 | 
             
                multipart-post (2.0.0)
         | 
| 43 43 | 
             
                netrc (0.11.0)
         | 
| 44 | 
            -
                nokogiri (1.6. | 
| 45 | 
            -
                   | 
| 44 | 
            +
                nokogiri (1.6.7.2)
         | 
| 45 | 
            +
                  mini_portile2 (~> 2.0.0.rc2)
         | 
| 46 46 | 
             
                nokogiri-happymapper (0.5.9)
         | 
| 47 47 | 
             
                  nokogiri (~> 1.5)
         | 
| 48 48 | 
             
                octokit (4.1.1)
         | 
| @@ -5,7 +5,7 @@ module FlashFlow | |
| 5 5 |  | 
| 6 6 | 
             
                class Branch
         | 
| 7 7 | 
             
                  attr_accessor :remote, :remote_url, :ref, :sha, :status, :resolutions, :stories, :conflict_sha, :metadata,
         | 
| 8 | 
            -
                                :current_record, :updated_at, :created_at
         | 
| 8 | 
            +
                                :current_record, :merge_order, :updated_at, :created_at
         | 
| 9 9 |  | 
| 10 10 | 
             
                  def initialize(_remote, _remote_url, _ref)
         | 
| 11 11 | 
             
                    @remote = _remote
         | 
| @@ -21,6 +21,7 @@ module FlashFlow | |
| 21 21 | 
             
                    branch = new(hash['remote'], hash['remote_url'], hash['ref'])
         | 
| 22 22 | 
             
                    branch.sha = hash['sha']
         | 
| 23 23 | 
             
                    branch.status = hash['status']
         | 
| 24 | 
            +
                    branch.merge_order = hash['merge_order']
         | 
| 24 25 | 
             
                    branch.resolutions = hash['resolutions']
         | 
| 25 26 | 
             
                    branch.stories = hash['stories']
         | 
| 26 27 | 
             
                    branch.metadata = hash['metadata']
         | 
| @@ -52,6 +53,7 @@ module FlashFlow | |
| 52 53 | 
             
                        'ref' => ref,
         | 
| 53 54 | 
             
                        'sha' => sha,
         | 
| 54 55 | 
             
                        'status' => status,
         | 
| 56 | 
            +
                        'merge_order' => merge_order,
         | 
| 55 57 | 
             
                        'resolutions' => resolutions,
         | 
| 56 58 | 
             
                        'stories' => stories,
         | 
| 57 59 | 
             
                        'conflict_sha' => conflict_sha,
         | 
| @@ -70,6 +72,7 @@ module FlashFlow | |
| 70 72 | 
             
                    unless other.nil?
         | 
| 71 73 | 
             
                      self.sha = other.sha
         | 
| 72 74 | 
             
                      self.status = other.status
         | 
| 75 | 
            +
                      self.merge_order = other.merge_order
         | 
| 73 76 | 
             
                      self.resolutions = other.resolutions
         | 
| 74 77 | 
             
                      self.stories = self.stories.to_a | other.stories.to_a
         | 
| 75 78 | 
             
                      self.updated_at = Time.now
         | 
| @@ -65,6 +65,7 @@ module FlashFlow | |
| 65 65 | 
             
                        branch.created_at = info.created_at
         | 
| 66 66 | 
             
                        branch.resolutions = info.resolutions.to_h.merge(branch.resolutions.to_h)
         | 
| 67 67 | 
             
                        branch.stories = info.stories.to_a | merged_branches[full_ref].stories.to_a
         | 
| 68 | 
            +
                        branch.merge_order ||= info.merge_order
         | 
| 68 69 | 
             
                        if branch.fail?
         | 
| 69 70 | 
             
                          branch.conflict_sha ||= info.conflict_sha
         | 
| 70 71 | 
             
                        end
         | 
| @@ -38,7 +38,8 @@ module FlashFlow | |
| 38 38 | 
             
                          'remote_url' => pr.head.repo.ssh_url,
         | 
| 39 39 | 
             
                          'ref' => pr.head.ref,
         | 
| 40 40 | 
             
                          'status' => status_from_labels(pr),
         | 
| 41 | 
            -
                          'metadata' => metadata(pr)
         | 
| 41 | 
            +
                          'metadata' => metadata(pr),
         | 
| 42 | 
            +
                          'sha' => pr.head.sha
         | 
| 42 43 | 
             
                      )
         | 
| 43 44 | 
             
                    end
         | 
| 44 45 | 
             
                  end
         | 
| @@ -98,7 +99,7 @@ module FlashFlow | |
| 98 99 | 
             
                  end
         | 
| 99 100 |  | 
| 100 101 | 
             
                  def pull_requests
         | 
| 101 | 
            -
                    @pull_requests ||= octokit.pull_requests(repo).sort_by(&: | 
| 102 | 
            +
                    @pull_requests ||= octokit.pull_requests(repo).sort_by(&:created_at)
         | 
| 102 103 | 
             
                  end
         | 
| 103 104 |  | 
| 104 105 | 
             
                  def remove_label(pull_request_number, label)
         | 
| @@ -136,4 +137,4 @@ module FlashFlow | |
| 136 137 | 
             
                  end
         | 
| 137 138 | 
             
                end
         | 
| 138 139 | 
             
              end
         | 
| 139 | 
            -
            end
         | 
| 140 | 
            +
            end
         | 
    
        data/lib/flash_flow/deploy.rb
    CHANGED
    
    | @@ -5,6 +5,7 @@ require 'flash_flow/data' | |
| 5 5 | 
             
            require 'flash_flow/lock'
         | 
| 6 6 | 
             
            require 'flash_flow/notifier'
         | 
| 7 7 | 
             
            require 'flash_flow/branch_merger'
         | 
| 8 | 
            +
            require 'flash_flow/merge_order'
         | 
| 8 9 | 
             
            require 'flash_flow/shadow_repo'
         | 
| 9 10 |  | 
| 10 11 | 
             
            module FlashFlow
         | 
| @@ -104,7 +105,10 @@ module FlashFlow | |
| 104 105 | 
             
                end
         | 
| 105 106 |  | 
| 106 107 | 
             
                def merge_branches
         | 
| 107 | 
            -
                  @data.mergeable. | 
| 108 | 
            +
                  ordered_branches = MergeOrder.new(@git, @data.merged_branches.mergeable).get_order
         | 
| 109 | 
            +
                  ordered_branches.each_with_index do |branch, index|
         | 
| 110 | 
            +
                    branch.merge_order = index + 1
         | 
| 111 | 
            +
             | 
| 108 112 | 
             
                    remote = @git.fetch_remote_for_url(branch.remote_url)
         | 
| 109 113 | 
             
                    if remote.nil?
         | 
| 110 114 | 
             
                      raise RuntimeError.new("No remote found for #{branch.remote_url}. Please run 'git remote add *your_remote_name* #{branch.remote_url}' and try again.")
         | 
| @@ -182,7 +186,7 @@ module FlashFlow | |
| 182 186 | 
             
            Flash Flow run from branch: #{@local_git.working_branch}
         | 
| 183 187 |  | 
| 184 188 | 
             
            Merged branches:
         | 
| 185 | 
            -
            #{@data.successes.empty? ? 'None' : @data.successes.map(&:ref).join("\n")}
         | 
| 189 | 
            +
            #{@data.successes.empty? ? 'None' : @data.successes.sort_by(&:merge_order).map(&:ref).join("\n")}
         | 
| 186 190 |  | 
| 187 191 | 
             
            Failed branches:
         | 
| 188 192 | 
             
            #{@data.failures.empty? ? 'None' : @data.failures.map(&:ref).join("\n")}
         | 
| @@ -32,7 +32,8 @@ module FlashFlow | |
| 32 32 | 
             
                        deliver(story_id)
         | 
| 33 33 | 
             
                      end
         | 
| 34 34 | 
             
                    end
         | 
| 35 | 
            -
             | 
| 35 | 
            +
             | 
| 36 | 
            +
                    removed_and_failed_branches.each do |branch|
         | 
| 36 37 | 
             
                      branch.stories.to_a.each do |story_id|
         | 
| 37 38 | 
             
                        undeliver(story_id)
         | 
| 38 39 | 
             
                      end
         | 
| @@ -188,8 +189,8 @@ module FlashFlow | |
| 188 189 | 
             
                    @branches.select { |b| b.success? }
         | 
| 189 190 | 
             
                  end
         | 
| 190 191 |  | 
| 191 | 
            -
                  def  | 
| 192 | 
            -
                    @branches.select { |b| b.removed? }
         | 
| 192 | 
            +
                  def removed_and_failed_branches
         | 
| 193 | 
            +
                    @branches.select { |b| b.removed? || b.fail? }
         | 
| 193 194 | 
             
                  end
         | 
| 194 195 |  | 
| 195 196 | 
             
                  def merged_working_branch
         | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            module FlashFlow
         | 
| 2 | 
            +
              class MergeOrder
         | 
| 3 | 
            +
             | 
| 4 | 
            +
                def initialize(git, branches)
         | 
| 5 | 
            +
                  @git = git
         | 
| 6 | 
            +
                  @branches = branches
         | 
| 7 | 
            +
                end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                def get_order
         | 
| 10 | 
            +
                  branches = @branches.sort_by(&:merge_order)
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                  unchanged, changed = branches.partition { |branch| current_sha(branch) == branch.sha }
         | 
| 13 | 
            +
                  my_branch_index = changed.find_index { |branch| branch.ref == @git.working_branch }
         | 
| 14 | 
            +
                  my_branch_changed = my_branch_index ? changed.delete_at(my_branch_index) : nil
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                  [unchanged, changed, my_branch_changed].flatten.compact
         | 
| 17 | 
            +
                end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                private
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                def current_sha(branch)
         | 
| 22 | 
            +
                  @git.run("rev-parse #{branch.remote}/#{branch.ref}")
         | 
| 23 | 
            +
                  @git.last_stdout.strip if @git.last_success?
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
            end
         | 
    
        data/lib/flash_flow/options.rb
    CHANGED
    
    | @@ -21,7 +21,7 @@ module FlashFlow | |
| 21 21 | 
             
                    opts.on('-c', '--config-file FILE_PATH', 'The path to your config file. Defaults to config/flash_flow.yml.erb') { |v| options[:config_file] = v }
         | 
| 22 22 | 
             
                    opts.on('--resolve', 'Launch a bash shell to save your conflict resolutions') { |v| options[:resolve] = true }
         | 
| 23 23 | 
             
                    opts.on('--resolve-manual', 'Print instructions to use git to resolve conflicts') { |v| options[:resolve_manual] = true }
         | 
| 24 | 
            -
                    opts.on('--merge-status', ' | 
| 24 | 
            +
                    opts.on('--merge-status', 'Show status of all branches and their stories and exit') { |v| options[:merge_status] = true }
         | 
| 25 25 |  | 
| 26 26 | 
             
                    opts.on_tail("-h", "--help", "Show this message") do
         | 
| 27 27 | 
             
                      puts opts
         | 
    
        data/lib/flash_flow/version.rb
    CHANGED
    
    
| @@ -28,6 +28,7 @@ module FlashFlow | |
| 28 28 | 
             
                    stub_tracker_gem(@project_mock) do
         | 
| 29 29 | 
             
                      mock_find(nil, '111')
         | 
| 30 30 | 
             
                      mock_find(nil, '222')
         | 
| 31 | 
            +
                      mock_find(nil, '333')
         | 
| 31 32 | 
             
                      mock_find(nil, '555')
         | 
| 32 33 |  | 
| 33 34 | 
             
                      Pivotal.new(sample_branches, nil).stories_delivered
         | 
| @@ -46,11 +47,15 @@ module FlashFlow | |
| 46 47 | 
             
                                        .expect(:id, '222')
         | 
| 47 48 | 
             
                                        .expect(:current_state, 'delivered')
         | 
| 48 49 | 
             
                      story3_mock = MiniTest::Mock.new
         | 
| 50 | 
            +
                                        .expect(:id, '333')
         | 
| 51 | 
            +
                                        .expect(:current_state, 'fail')
         | 
| 52 | 
            +
                      story4_mock = MiniTest::Mock.new
         | 
| 49 53 | 
             
                                        .expect(:id, '555')
         | 
| 50 54 | 
             
                                        .expect(:current_state, 'removed')
         | 
| 51 55 | 
             
                      mock_find(story1_mock)
         | 
| 52 56 | 
             
                      mock_find(story2_mock)
         | 
| 53 57 | 
             
                      mock_find(story3_mock)
         | 
| 58 | 
            +
                      mock_find(story4_mock)
         | 
| 54 59 |  | 
| 55 60 | 
             
                      Pivotal.new(sample_branches, nil).stories_delivered
         | 
| 56 61 | 
             
                      story1_mock.verify
         | 
    
        data/test/lib/test_deploy.rb
    CHANGED
    
    | @@ -141,6 +141,18 @@ module FlashFlow | |
| 141 141 | 
             
                  end
         | 
| 142 142 | 
             
                end
         | 
| 143 143 |  | 
| 144 | 
            +
                def test_commit_message_ordering
         | 
| 145 | 
            +
                  data
         | 
| 146 | 
            +
                    .expect(:successes, ['data_successes'])
         | 
| 147 | 
            +
                    .expect(:successes, sample_branches)
         | 
| 148 | 
            +
                    .expect(:failures, [])
         | 
| 149 | 
            +
                    .expect(:removals, [])
         | 
| 150 | 
            +
             | 
| 151 | 
            +
                  expected_message = sample_branches.sort_by(&:merge_order).map(&:ref).join("\n")
         | 
| 152 | 
            +
                  assert_output(/#{expected_message}/) { print @deploy.commit_message }
         | 
| 153 | 
            +
                  data.verify
         | 
| 154 | 
            +
                end
         | 
| 155 | 
            +
             | 
| 144 156 | 
             
                private
         | 
| 145 157 |  | 
| 146 158 | 
             
                def with_versions(current, written)
         | 
| @@ -172,5 +184,10 @@ module FlashFlow | |
| 172 184 | 
             
                  @deploy.instance_variable_set('@data'.to_sym, @data)
         | 
| 173 185 | 
             
                end
         | 
| 174 186 |  | 
| 187 | 
            +
                def sample_branches
         | 
| 188 | 
            +
                  @sample_branches ||= [Data::Branch.from_hash({'ref' => 'branch3', 'merge_order' => 2}),
         | 
| 189 | 
            +
                    Data::Branch.from_hash({'ref' => 'branch1', 'merge_order' => 3}),
         | 
| 190 | 
            +
                    Data::Branch.from_hash({'ref' => 'branch2', 'merge_order' => 1})]
         | 
| 191 | 
            +
                end
         | 
| 175 192 | 
             
              end
         | 
| 176 193 | 
             
            end
         | 
| @@ -0,0 +1,72 @@ | |
| 1 | 
            +
            require 'minitest_helper'
         | 
| 2 | 
            +
            require 'minitest/stub_any_instance'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            module FlashFlow
         | 
| 5 | 
            +
              class TestMergeOrder < Minitest::Test
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                def setup
         | 
| 8 | 
            +
                  @git = Minitest::Mock.new
         | 
| 9 | 
            +
                end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                def test_get_order_unchanged_shas_get_ordered_as_previous
         | 
| 12 | 
            +
                  mock_working_branch(sample_branches[2])
         | 
| 13 | 
            +
                  mock_current_sha(sample_branches[1], sample_branches[1].sha)
         | 
| 14 | 
            +
                  mock_current_sha(sample_branches[0], sample_branches[0].sha)
         | 
| 15 | 
            +
                  mock_current_sha(sample_branches[2], sample_branches[2].sha)
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                  ordered_branches = MergeOrder.new(@git, mergeable_order(1,0,2)).get_order
         | 
| 18 | 
            +
                  assert_equal(ordered_branches.map(&:sha), mergeable_order(1,0,2).map(&:sha))
         | 
| 19 | 
            +
                end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
                def test_get_order_changed_working_branch_is_always_last
         | 
| 22 | 
            +
                  mock_working_branch(sample_branches[0])
         | 
| 23 | 
            +
                  mock_current_sha(sample_branches[1], sample_branches[1].sha)
         | 
| 24 | 
            +
                  mock_current_sha(sample_branches[0], sample_branches[0].sha)
         | 
| 25 | 
            +
                  mock_current_sha(sample_branches[2], sample_branches[2].sha)
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  sample_branches[0].sha = 'sha0-1'
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  ordered_branches = MergeOrder.new(@git, mergeable_order(1,0,2)).get_order
         | 
| 30 | 
            +
                  assert_equal(ordered_branches.map(&:sha), mergeable_order(1,2,0).map(&:sha))
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
                #
         | 
| 33 | 
            +
                def test_get_order_changed_shas_are_between_unchanged_shas_and_changed_working_branch
         | 
| 34 | 
            +
                  mock_working_branch(sample_branches[1])
         | 
| 35 | 
            +
                  mock_current_sha(sample_branches[2], sample_branches[2].sha)
         | 
| 36 | 
            +
                  mock_current_sha(sample_branches[1], sample_branches[1].sha)
         | 
| 37 | 
            +
                  mock_current_sha(sample_branches[0], sample_branches[0].sha)
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                  sample_branches[1].sha = 'sha0-1'
         | 
| 40 | 
            +
                  sample_branches[2].sha = 'sha2-1'
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                  ordered_branches = MergeOrder.new(@git, mergeable_order(2,1,0)).get_order
         | 
| 43 | 
            +
                  assert_equal(ordered_branches.map(&:sha), mergeable_order(0,2,1).map(&:sha))
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                private
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                def mock_current_sha(branch, sha)
         | 
| 49 | 
            +
                  @git.expect(:run, sha, ["rev-parse #{branch.remote}/#{branch.ref}"])
         | 
| 50 | 
            +
                    .expect(:last_success?, true)
         | 
| 51 | 
            +
                    .expect(:last_stdout, sha)
         | 
| 52 | 
            +
                end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                def mock_working_branch(branch)
         | 
| 55 | 
            +
                  sample_branches.count.times { @git.expect(:working_branch, branch.ref) }
         | 
| 56 | 
            +
                end
         | 
| 57 | 
            +
             | 
| 58 | 
            +
                def sample_branches
         | 
| 59 | 
            +
                  @sample_branches ||= [Data::Branch.from_hash({'ref' => 'branch0', 'remote' => 'origin', 'sha' => 'sha0', 'merge_order' => 1}),
         | 
| 60 | 
            +
                    Data::Branch.from_hash({'ref' => 'branch1', 'remote' => 'origin', 'sha' => 'sha1', 'merge_order' => 2}),
         | 
| 61 | 
            +
                    Data::Branch.from_hash({'ref' => 'branch2', 'remote' => 'origin', 'sha' => 'sha2', 'merge_order' => 3})]
         | 
| 62 | 
            +
                end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                def mergeable_order(*order)
         | 
| 65 | 
            +
                  order.map.with_index do |nth, merge_order|
         | 
| 66 | 
            +
                    sample_branches[nth].merge_order = merge_order
         | 
| 67 | 
            +
                    sample_branches[nth]
         | 
| 68 | 
            +
                  end
         | 
| 69 | 
            +
                end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
              end
         | 
| 72 | 
            +
            end
         | 
    
        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. | 
| 4 | 
            +
              version: 1.3.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Flashfunders
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2016-02-23 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: octokit
         | 
| @@ -176,6 +176,7 @@ files: | |
| 176 176 | 
             
            - lib/flash_flow/merge_master/merge_status.html.erb
         | 
| 177 177 | 
             
            - lib/flash_flow/merge_master/release_graph.rb
         | 
| 178 178 | 
             
            - lib/flash_flow/merge_master/status.rb
         | 
| 179 | 
            +
            - lib/flash_flow/merge_order.rb
         | 
| 179 180 | 
             
            - lib/flash_flow/notifier.rb
         | 
| 180 181 | 
             
            - lib/flash_flow/notifier/hipchat.rb
         | 
| 181 182 | 
             
            - lib/flash_flow/options.rb
         | 
| @@ -198,6 +199,7 @@ files: | |
| 198 199 | 
             
            - test/lib/test_deploy.rb
         | 
| 199 200 | 
             
            - test/lib/test_git.rb
         | 
| 200 201 | 
             
            - test/lib/test_issue_tracker.rb
         | 
| 202 | 
            +
            - test/lib/test_merge_order.rb
         | 
| 201 203 | 
             
            - test/lib/test_notifier.rb
         | 
| 202 204 | 
             
            - test/lib/test_resolve.rb
         | 
| 203 205 | 
             
            - test/minitest_helper.rb
         | 
| @@ -241,6 +243,7 @@ test_files: | |
| 241 243 | 
             
            - test/lib/test_deploy.rb
         | 
| 242 244 | 
             
            - test/lib/test_git.rb
         | 
| 243 245 | 
             
            - test/lib/test_issue_tracker.rb
         | 
| 246 | 
            +
            - test/lib/test_merge_order.rb
         | 
| 244 247 | 
             
            - test/lib/test_notifier.rb
         | 
| 245 248 | 
             
            - test/lib/test_resolve.rb
         | 
| 246 249 | 
             
            - test/minitest_helper.rb
         |