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 +4 -4
- data/lib/ggsm.rb +8 -4
- data/lib/ggsm/command/finish.rb +9 -5
- data/lib/ggsm/command/merge.rb +44 -3
- data/lib/ggsm/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 05c8795b96d0aa91153b1ba4e4d78aa378f49261
|
4
|
+
data.tar.gz: e00c2d488a3cb08f3936e3bf063ce7573b8393e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cf1bfd574589d40f400b6f87765d8192505dfa0551542d0cfd1e4ce14a4115d27129ca0f8c61ddec4c9ae2cd28e7bc8e357a8eca3c0039ef40581edf48fb93f5
|
7
|
+
data.tar.gz: f1593b8be071bf1b649519b1439bc173fb8d3e7daf8bf8b920aa0e2e7d9ca3fade2473e1fc1131f4010eb439482ea27b77006b2c3dca99b5eff11e53e7877f54
|
data/lib/ggsm.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
41
|
+
force = options[:force]
|
42
|
+
finish_flow(force)
|
39
43
|
end
|
40
44
|
|
41
45
|
desc 'switch <branch>', '切换分支'
|
data/lib/ggsm/command/finish.rb
CHANGED
@@ -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
|
-
|
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
|
data/lib/ggsm/command/merge.rb
CHANGED
@@ -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
|
-
|
20
|
-
|
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
|
data/lib/ggsm/version.rb
CHANGED
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.
|
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-
|
11
|
+
date: 2017-09-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|