thegarage-gitx 2.5.0 → 2.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4467ae416b3bf6136ccfc3158301c00c961574b6
4
- data.tar.gz: cc0365b89a0d11315998d3a0d42aa44f30ba4301
3
+ metadata.gz: d0b811de52af14874eb51c9c61fd1394fc6ce510
4
+ data.tar.gz: a497c02d33bbe70cdc915bbab537f019d20e82d8
5
5
  SHA512:
6
- metadata.gz: 866b0b4cbd14c4e6991a6301c9d2bf7630dc51cdaa96291e9ca708fa39170737a45db6139aecda4bfd7d4303e4cc403745b7731dd96d7b93e2a9238fce3464ed
7
- data.tar.gz: 74c7b693a591709e00c1068d7cf073848a276b9fd4223fc32acd7d55df0d5086e2c76618787a788e34c48889ab205b0cef1f780b3995ad85c1db62c46955bb6f
6
+ metadata.gz: a7cf35490ed34c5b821d659bf89f7e67450a1718c00f2d1fd63dc4843a837d13565bb3f36ca12e80e7e3c8eb9cdf61e4807c0ef62714bcdc067b7cc2c27e5cd2
7
+ data.tar.gz: 1d2d0f3cfd6f47ded0614469664a948a73ed5f1237bb8a4f46a97e5100e56616eb6f664673ba50127b11ac3b52e83cc32ead1d32d8234b9a5ca0ea523d9ee8d6
@@ -15,7 +15,11 @@ module Thegarage
15
15
  branch = feature_branch_name
16
16
  print_message(branch, integration_branch)
17
17
 
18
- UpdateCommand.new.update
18
+ begin
19
+ UpdateCommand.new.update
20
+ rescue
21
+ fail MergeError, "Merge Conflict Occurred. Please Merge Conflict Occurred. Please fix merge conflict and rerun the integrate command"
22
+ end
19
23
 
20
24
  integrate_branch(branch, integration_branch) unless options[:resume]
21
25
  checkout_branch branch
@@ -8,15 +8,29 @@ module Thegarage
8
8
  class UpdateCommand < BaseCommand
9
9
  desc 'update', 'Update the current branch with latest changes from the remote feature branch and master'
10
10
  def update
11
- say 'Updating '
11
+ say "Updating "
12
12
  say "#{current_branch.name} ", :green
13
13
  say "with latest changes from "
14
14
  say Thegarage::Gitx::BASE_BRANCH, :green
15
15
 
16
- run_cmd "git pull origin #{current_branch.name}", :allow_failure => true
17
- run_cmd "git pull origin #{Thegarage::Gitx::BASE_BRANCH}"
16
+ update_branch(current_branch.name) if remote_branch_exists?(current_branch.name)
17
+ update_branch(Thegarage::Gitx::BASE_BRANCH)
18
18
  run_cmd 'git push origin HEAD'
19
19
  end
20
+
21
+ private
22
+
23
+ def update_branch(branch)
24
+ begin
25
+ run_cmd "git pull origin #{branch}"
26
+ rescue
27
+ fail MergeError, "Merge Conflict Occurred. Please fix merge conflict and rerun the update command"
28
+ end
29
+ end
30
+
31
+ def remote_branch_exists?(branch)
32
+ repo.branches.each_name(:remote).include?("origin/#{branch}")
33
+ end
20
34
  end
21
35
  end
22
36
  end
@@ -1,5 +1,5 @@
1
1
  module Thegarage
2
2
  module Gitx
3
- VERSION = '2.5.0'
3
+ VERSION = '2.5.1'
4
4
  end
5
5
  end
@@ -91,7 +91,18 @@ describe Thegarage::Gitx::Cli::IntegrateCommand do
91
91
  expect { cli.integrate('some-other-branch') }.to raise_error(/Invalid aggregate branch: some-other-branch must be one of supported aggregate branches/)
92
92
  end
93
93
  end
94
- context 'when merge conflicts occur' do
94
+ context 'when merge conflicts occur during the updatecommand execution' do
95
+ let(:remote_branch_names) { ['origin/staging'] }
96
+ before do
97
+ expect(fake_update_command).to receive(:update).and_raise(Thegarage::Gitx::Cli::BaseCommand::MergeError)
98
+
99
+ expect { cli.integrate }.to raise_error(Thegarage::Gitx::Cli::BaseCommand::MergeError, 'Merge Conflict Occurred. Please Merge Conflict Occurred. Please fix merge conflict and rerun the integrate command')
100
+ end
101
+ it 'raises a helpful error' do
102
+ should meet_expectations
103
+ end
104
+ end
105
+ context 'when merge conflicts occur with the integrate command' do
95
106
  let(:remote_branch_names) { ['origin/staging'] }
96
107
  before do
97
108
  expect(fake_update_command).to receive(:update)
@@ -11,23 +11,69 @@ describe Thegarage::Gitx::Cli::UpdateCommand do
11
11
  end
12
12
  let(:cli) { Thegarage::Gitx::Cli::UpdateCommand.new(args, options, config) }
13
13
  let(:branch) { double('fake branch', name: 'feature-branch') }
14
+ let(:repo) { cli.send(:repo) }
15
+ let(:remote_branch_names) { ['origin/feature-branch'] }
14
16
 
15
17
  before do
16
18
  allow(cli).to receive(:current_branch).and_return(branch)
19
+ branches = double('fake branches')
20
+ allow(branches).to receive(:each_name).with(:remote).and_return(remote_branch_names)
21
+ allow(repo).to receive(:branches).and_return(branches)
17
22
  end
18
23
 
19
24
  describe '#update' do
20
- before do
21
- allow(cli).to receive(:say)
25
+ context 'when no merge conflicts occur' do
26
+ before do
27
+ allow(cli).to receive(:say)
22
28
 
23
- expect(cli).to receive(:run_cmd).with('git pull origin feature-branch', allow_failure: true).ordered
24
- expect(cli).to receive(:run_cmd).with('git pull origin master').ordered
25
- expect(cli).to receive(:run_cmd).with('git push origin HEAD').ordered
29
+ expect(cli).to receive(:run_cmd).with('git pull origin feature-branch').ordered
30
+ expect(cli).to receive(:run_cmd).with('git pull origin master').ordered
31
+ expect(cli).to receive(:run_cmd).with('git push origin HEAD').ordered
26
32
 
27
- cli.update
33
+ cli.update
34
+ end
35
+ it 'runs expected commands' do
36
+ should meet_expectations
37
+ end
28
38
  end
29
- it 'runs expected commands' do
30
- should meet_expectations
39
+ context 'when merge conflicts occur when pulling remote feature-branch' do
40
+ before do
41
+ allow(cli).to receive(:say)
42
+
43
+ expect(cli).to receive(:run_cmd).with('git pull origin feature-branch').and_raise('merge error').ordered
44
+
45
+ expect { cli.update }.to raise_error(Thegarage::Gitx::Cli::BaseCommand::MergeError, 'Merge Conflict Occurred. Please fix merge conflict and rerun the update command')
46
+ end
47
+ it 'raises error' do
48
+ should meet_expectations
49
+ end
50
+ end
51
+ context 'when merge conflicts occur when pulling remote master branch' do
52
+ before do
53
+ allow(cli).to receive(:say)
54
+
55
+ expect(cli).to receive(:run_cmd).with('git pull origin feature-branch').ordered
56
+ expect(cli).to receive(:run_cmd).with('git pull origin master').and_raise('merge error occurred').ordered
57
+
58
+ expect { cli.update }.to raise_error(Thegarage::Gitx::Cli::BaseCommand::MergeError, 'Merge Conflict Occurred. Please fix merge conflict and rerun the update command')
59
+ end
60
+ it 'raises error' do
61
+ should meet_expectations
62
+ end
63
+ end
64
+ context 'when feature-branch does not exist remotely' do
65
+ let(:remote_branch_names) { [] }
66
+ before do
67
+ allow(cli).to receive(:say)
68
+
69
+ expect(cli).not_to receive(:run_cmd).with('git pull origin feature-branch')
70
+ expect(cli).to receive(:run_cmd).with('git pull origin master').ordered
71
+
72
+ cli.update
73
+ end
74
+ it 'skips pulling from feature branch' do
75
+ should meet_expectations
76
+ end
31
77
  end
32
78
  end
33
79
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thegarage-gitx
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.5.0
4
+ version: 2.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Sonnek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-23 00:00:00.000000000 Z
11
+ date: 2014-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rugged