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 +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
|