ggsm 1.6.2 → 1.7.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 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