ggsm 1.6.2 → 1.7.0

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: f5b4173c21c484fb8244e9c5bdcc967234257041
4
- data.tar.gz: 6833e332f0d83e5c6d2b8be3eaa6ae64cb864aa5
3
+ metadata.gz: 05c8795b96d0aa91153b1ba4e4d78aa378f49261
4
+ data.tar.gz: e00c2d488a3cb08f3936e3bf063ce7573b8393e9
5
5
  SHA512:
6
- metadata.gz: 5a65c1adcde424213eeb986538bfc45643adeb793ad706a5901ed4b930980a3b23651d01b0a6e90aa79c55637c5f718dc402b40428c9c92fb7bbc1c4a2cc097e
7
- data.tar.gz: cc7482734962413291e0bacfb30ed62645bf7684adf9b701eb534e6431f821f77a1b65af10a842dd7b9b35a8fc81a1156dd78c86cfd996a7d8b19e31d45ae7c0
6
+ metadata.gz: cf1bfd574589d40f400b6f87765d8192505dfa0551542d0cfd1e4ce14a4115d27129ca0f8c61ddec4c9ae2cd28e7bc8e357a8eca3c0039ef40581edf48fb93f5
7
+ data.tar.gz: f1593b8be071bf1b649519b1439bc173fb8d3e7daf8bf8b920aa0e2e7d9ca3fade2473e1fc1131f4010eb439482ea27b77006b2c3dca99b5eff11e53e7877f54
@@ -28,14 +28,18 @@ module GGSM
28
28
  start_flow(branch, action)
29
29
  end
30
30
 
31
- desc 'merge <branch>', 'Merge,开发完成后执行'
31
+ desc 'merge <branch> [-r|--rebase]', 'Merge,开发完成后执行; --rebase:主工程强制rebase'
32
+ option :rebase, :default => false, :type => :boolean, aliases: '-r'
32
33
  def merge(branch)
33
- merge_flow(branch)
34
+ rebase = options[:rebase]
35
+ merge_flow(branch, rebase)
34
36
  end
35
37
 
36
- desc 'finish', 'Merge后并解决冲突后执行'
38
+ desc 'finish [-f|--force]', 'Merge后并解决冲突后执行; --force:主工程强制推送'
39
+ option :force, :default => false, :type => :boolean, aliases: '-f'
37
40
  def finish
38
- finish_flow
41
+ force = options[:force]
42
+ finish_flow(force)
39
43
  end
40
44
 
41
45
  desc 'switch <branch>', '切换分支'
@@ -5,20 +5,20 @@ module GGSM
5
5
  module Finish
6
6
  include Submodule
7
7
 
8
- def finish_flow
8
+ def finish_flow(force)
9
9
  check_submodule
10
10
 
11
11
  foreach_module {
12
- process_finish
12
+ process_finish(false)
13
13
  }
14
14
 
15
15
  puts '==> 进入主工程:'.yellow
16
- process_finish
16
+ process_finish(force)
17
17
 
18
18
  puts 'Modules执行:git add & commit & push'.blue
19
19
  end
20
20
 
21
- def process_finish
21
+ def process_finish(force)
22
22
  system 'git add .'
23
23
 
24
24
  branch = get_current_branch
@@ -28,7 +28,11 @@ module GGSM
28
28
  system 'git commit'
29
29
  end
30
30
 
31
- system "git push origin #{get_current_branch}"
31
+ if force
32
+ system "git push origin #{get_current_branch} -f"
33
+ else
34
+ system "git push origin #{get_current_branch}"
35
+ end
32
36
  end
33
37
  end
34
38
  end
@@ -5,7 +5,7 @@ module GGSM
5
5
  module Merge
6
6
  include Submodule
7
7
 
8
- def merge_flow(branch)
8
+ def merge_flow(branch, force_rebase)
9
9
  check_submodule
10
10
  check_un_commit_code
11
11
 
@@ -16,8 +16,19 @@ module GGSM
16
16
  }
17
17
 
18
18
  puts '==> 进入主工程:'.yellow
19
- process_rebase(arry_conflict, branch)
20
- puts "Modules执行:git merge #{branch}".blue
19
+
20
+ main_rebase = false
21
+ if force_rebase
22
+ main_rebase = true
23
+ end
24
+
25
+ if need_rebase(branch) || force_rebase
26
+ process_rebase(arry_conflict, branch)
27
+ puts 'Tip: 主工程rebase模式'.blue
28
+ else
29
+ process_merge(arry_conflict, '主工程', branch)
30
+ puts 'Tip: 主工程merge模式'.blue
31
+ end
21
32
 
22
33
  if arry_conflict.size > 0
23
34
  tip = "==> #{arry_conflict.size}个模块冲突:"
@@ -25,6 +36,14 @@ module GGSM
25
36
  tip = "#{tip} #{sub}"
26
37
  end
27
38
  puts tip.red
39
+ puts "Tip: 当你解决冲突后,执行\"git add .\",如需推送远程,在主工程执行\"ggsm finish\"".blue
40
+ else
41
+
42
+ if main_rebase
43
+ puts "Tip: 如需推送远程,执行\"ggsm finish -f|--force\"".blue
44
+ else
45
+ puts "Tip: 如需推送远程,执行\"ggsm finish\"".blue
46
+ end
28
47
  end
29
48
  end
30
49
 
@@ -45,5 +64,27 @@ module GGSM
45
64
  arry_conflict.push('主工程')
46
65
  end
47
66
  end
67
+
68
+ def need_rebase(branch)
69
+ pattern = /[0-9a-z]{7}(?=\s)/
70
+ current_branch = get_current_branch
71
+
72
+ remote = `git config --get branch.#{current_branch}.remote`
73
+ if remote == ''
74
+ return true
75
+ end
76
+
77
+ diff_logs = `git log --oneline #{branch}..#{current_branch}`.split("\n").reverse
78
+
79
+ diff_logs.each do |log|
80
+ commit = pattern.match(log.strip)[0]
81
+ result = `git log #{remote}/#{current_branch} |grep #{commit}`
82
+
83
+ if result.strip != ''
84
+ return false
85
+ end
86
+ end
87
+ true
88
+ end
48
89
  end
49
90
  end
@@ -1,3 +1,3 @@
1
1
  module GGSM
2
- VERSION = '1.6.2'
2
+ VERSION = '1.7.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ggsm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.2
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - YoKey
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-31 00:00:00.000000000 Z
11
+ date: 2017-09-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler