ggsm 1.5.1 → 1.6.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: 720e88a2a9390cc061414bf6acde20035124fa03
4
- data.tar.gz: 8eacd0a554174bfbba66ea2affd3e9f3daa75372
3
+ metadata.gz: 69c805930e864b62f6d3d204382434aaa2834597
4
+ data.tar.gz: 76ccc110964243679acb139cd88a79bc3deb342a
5
5
  SHA512:
6
- metadata.gz: 576e5d9a73dd563d26c6c6c6ba4401b79fdd00fc1f8d6b8aa1cae4b2e3febe312d6a8c11857ed4122b212d0530f6b1fea5c33d4e3713e5bc787c02cf9579130d
7
- data.tar.gz: ffc96b9267b7247ce786f5f066fc07d119a9c87513608c5284b10ed5a35766b8ad8a97154f00ab05c926a59bbdb26d2eb15f9dd57aacbf038f46a80a9f2bbaf0
6
+ metadata.gz: 217a55a09c089548b21ab2cb2e593b743a890ad2a7375c63f7a37b1c1d638c357d9d5246adbbfe948a7ade9dc91b2b8a08a8e889277b9f39f903ac42e19b70e6
7
+ data.tar.gz: 3715f2f5a477b083bfcac5e9cbfe7f1739bc51b71e104d29faf97f66f793371220f0b4b7a1e4df150d99e5dc07f7d371b85fcde71e08c148e41bccdc0570e325
@@ -1,12 +1,12 @@
1
1
  require 'thor'
2
2
  require_relative 'ggsm/version'
3
- require_relative 'ggsm/flow/start'
4
- require_relative 'ggsm/flow/sync'
5
- require_relative 'ggsm/flow/switch'
6
- require_relative 'ggsm/flow/delete'
7
- require_relative 'ggsm/flow/foreach'
8
- require_relative 'ggsm/flow/merge'
9
- require_relative 'ggsm/flow/finish'
3
+ require_relative 'ggsm/command/start'
4
+ require_relative 'ggsm/command/sync'
5
+ require_relative 'ggsm/command/switch'
6
+ require_relative 'ggsm/command/delete'
7
+ require_relative 'ggsm/command/foreach'
8
+ require_relative 'ggsm/command/merge'
9
+ require_relative 'ggsm/command/finish'
10
10
 
11
11
  module GGSM
12
12
  class Cli < Thor
@@ -18,21 +18,31 @@ module GGSM
18
18
  include Merge
19
19
  include Finish
20
20
 
21
+ desc 'sync', '当前分支同步(拉取)远程代码'
22
+ def sync
23
+ sync_flow
24
+ end
25
+
21
26
  desc 'start <branch> [<commit>] [<origin>]', '检出新分支,新功能、修bug务必使用该命令'
22
27
  def start(branch, action='')
23
28
  start_flow(branch, action)
24
29
  end
25
30
 
31
+ desc 'merge <branch>', 'Merge,开发完成后执行'
32
+ def merge(branch)
33
+ merge_flow(branch)
34
+ end
35
+
36
+ desc 'finish', 'Merge后并解决冲突后执行'
37
+ def finish
38
+ finish_flow
39
+ end
40
+
26
41
  desc 'switch <branch>', '切换分支'
27
42
  def switch(branch)
28
43
  switch_flow(branch)
29
44
  end
30
45
 
31
- desc 'sync', '当前分支同步(拉取)远程代码'
32
- def sync
33
- sync_flow
34
- end
35
-
36
46
  desc 'delete <branch> [-r|--remote] [-a|--all]', '删除指定分支'
37
47
  option :remote, :default => false, :type => :boolean, aliases: '-r'
38
48
  option :all, :default => false, :type => :boolean, aliases: '-a'
@@ -42,21 +52,16 @@ module GGSM
42
52
  delete_flow(branch, remote, all)
43
53
  end
44
54
 
55
+ desc 'status', '显示所有模块的状态'
56
+ def status
57
+ foreach('status')
58
+ end
59
+
45
60
  desc 'foreach [<commands>...]', '所有模块执行git命令(foreach后跟git命令)'
46
61
  def foreach(*commands)
47
62
  foreach_flow(*commands)
48
63
  end
49
64
 
50
- desc 'merge <branch>', 'Merge,开发完成后执行'
51
- def merge(branch)
52
- merge_flow(branch)
53
- end
54
-
55
- desc 'finish', 'Merge后并解决冲突后执行'
56
- def finish
57
- finish_flow
58
- end
59
-
60
65
  desc '[v|version]', '查看版本'
61
66
  def version
62
67
  puts VERSION
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -7,8 +7,9 @@ module GGSM
7
7
  include Submodule
8
8
  include Stash
9
9
 
10
- def switch_flow(branch)
10
+ def switch_flow(branch, *is_sync)
11
11
  check_submodule
12
+ check_submodule_status(is_sync)
12
13
 
13
14
  puts '==> 进入主工程:'.yellow
14
15
 
@@ -13,7 +13,7 @@ module GGSM
13
13
  return
14
14
  end
15
15
 
16
- switch_flow(get_current_branch)
16
+ switch_flow(get_current_branch, true)
17
17
  end
18
18
  end
19
19
  end
@@ -4,7 +4,7 @@ require 'colorize'
4
4
  @msg = IO.read(ARGV[0]).force_encoding('UTF-8')
5
5
 
6
6
  def commit_check
7
- standards = %w(fix: fix: feat: feat: style: style: doc: doc: docs: docs: ref: ref: refactor: refactor: chore: chore: test: test: Merge merge)
7
+ standards = %w(fix: fix: feat: feat: style: style: doc: doc: docs: docs: ref: ref: refactor: refactor: chore: chore: test: test: Merge merge Revert revert)
8
8
  standards.each do |standard|
9
9
  check(standard)
10
10
  end
@@ -31,6 +31,7 @@ begin
31
31
  result = `java -jar #{Dir.pwd}/_script/checkstyle-7.0.jar -c #{Dir.pwd}/_script/checkstyle.xml #{Dir.pwd}/#{file}`
32
32
  result = result.gsub("Starting audit...\n", '')
33
33
  result = result.gsub("Audit done.\n", '')
34
+ result = result.force_encoding('UTF-8')
34
35
 
35
36
  if result.include?('WARN') || result.include?('ERROR')
36
37
  count = count + 1
@@ -0,0 +1,46 @@
1
+ module GGSM
2
+ module Hooks
3
+ def check_hooks
4
+ if update_hooks
5
+ subs = get_submodule
6
+ subs.each do |sub|
7
+ cp_hooks(sub)
8
+ end
9
+ end
10
+ end
11
+
12
+ def update_hooks
13
+ version = `ggsm v`
14
+ ggsm_path = '.git/ggsm'
15
+ unless File.exist?(ggsm_path)
16
+ Dir.mkdir(ggsm_path)
17
+ end
18
+
19
+ config_path = "#{ggsm_path}/VERSION"
20
+ target_path = '.git/hooks'
21
+
22
+ if !File.exist?(config_path) || version != IO.read(config_path)
23
+ cp_files(target_path)
24
+
25
+ file = File.new(config_path, 'w')
26
+ file << version
27
+ file.close
28
+
29
+ puts '已更新Hooks'.blue
30
+ return true
31
+ end
32
+ false
33
+ end
34
+
35
+ def cp_hooks(sub)
36
+ target_path = ".git/modules/#{sub}/hooks"
37
+ cp_files(target_path)
38
+ end
39
+
40
+ def cp_files(target_path)
41
+ path = `gem which ggsm`.split('/ggsm.rb')[0]
42
+ `cp #{path}/ggsm/hook/commit-msg #{target_path}/commit-msg`
43
+ `cp #{path}/ggsm/hook/pre-commit #{target_path}/pre-commit`
44
+ end
45
+ end
46
+ end
@@ -1,5 +1,9 @@
1
+ require_relative 'hooks'
2
+
1
3
  module GGSM
2
4
  module Submodule
5
+ include Hooks
6
+
3
7
  def check_submodule
4
8
  sub_str = `git submodule`
5
9
  if sub_str.empty?
@@ -7,7 +11,7 @@ module GGSM
7
11
  exit 1
8
12
  end
9
13
 
10
- switch_dir
14
+ correct_dir
11
15
  check_hooks
12
16
  end
13
17
 
@@ -33,6 +37,49 @@ module GGSM
33
37
  result
34
38
  end
35
39
 
40
+ def check_submodule_status(is_sync)
41
+ modified_sub = get_modified_submodule
42
+ if !is_sync && modified_sub.size > 0
43
+ subs = ''
44
+ modified_sub.each do |sub|
45
+ subs = "#{sub} , #{subs}"
46
+ end
47
+ puts "\n存在未跟踪的子模块提交: #{subs[0...subs.size-2]} \n\n请选择操作:\n1 丢弃子模块的改动
48
+ 2 追踪子模块(仅追踪子模块)\n3 追踪所有改变\n4 取消".red
49
+
50
+ input = STDIN.gets.chomp.upcase
51
+ if input == '1'
52
+ elsif input == '2'
53
+ add = 'git add'
54
+ modified_sub.each do |sub|
55
+ add = "#{add} #{sub}"
56
+ end
57
+ system "#{add};git commit"
58
+ elsif input == '3'
59
+ system 'git add .;git commit'
60
+ else
61
+ puts '==> 取消操作'.blue
62
+ return
63
+ end
64
+ end
65
+ end
66
+
67
+ def get_modified_submodule
68
+ result = []
69
+
70
+ status = `git status -s`.split(/\n/)
71
+ subs = get_submodule
72
+
73
+ status.each do |sub|
74
+ array_name = sub.split(' ')
75
+ name = array_name[array_name.size-1]
76
+ if subs.include?name
77
+ result.push(name)
78
+ end
79
+ end
80
+ result
81
+ end
82
+
36
83
  def get_submodule_commit
37
84
  sub_tree = 'git ls-tree HEAD | grep "160000"'
38
85
  sub_commits = `#{sub_tree}`
@@ -92,46 +139,13 @@ module GGSM
92
139
  puts "请联系#{author} 推送远程缺失的commit".red
93
140
  end
94
141
 
95
- def switch_dir
142
+ def correct_dir
96
143
  if File.exist?('.git')
97
144
  return
98
145
  end
99
146
 
100
147
  Dir.chdir '..'
101
- switch_dir
102
- end
103
-
104
- def check_hooks
105
- version = `ggsm v`
106
- subs = get_submodule
107
- subs.each do |sub|
108
- cp_hooks(version, sub)
109
- end
110
- cp_hooks(version, nil)
111
- end
112
-
113
- def cp_hooks(version, sub)
114
- if File.exist?('.git')
115
- if sub != nil
116
- config_path = ".git/modules/#{sub}/hooks/ggsm"
117
- else
118
- config_path = '.git/hooks/ggsm'
119
- end
120
- target_path = config_path.split('/ggsm')[0]
121
- if !File.exist?(config_path) || version != IO.read(config_path)
122
- path = `gem which ggsm`.split('/ggsm.rb')[0]
123
- `cp #{path}/ggsm/hook/commit-msg #{target_path}/commit-msg`
124
- `cp #{path}/ggsm/hook/pre-commit #{target_path}/pre-commit`
125
-
126
- file = File.new(config_path, 'w')
127
- file << version
128
- file.close
129
-
130
- if sub == nil
131
- puts '已更新Hooks'.blue
132
- end
133
- end
134
- end
148
+ correct_dir
135
149
  end
136
150
  end
137
151
  end
@@ -1,3 +1,3 @@
1
1
  module GGSM
2
- VERSION = '1.5.1'
2
+ VERSION = '1.6.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.5.1
4
+ version: 1.6.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-15 00:00:00.000000000 Z
11
+ date: 2017-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -85,15 +85,16 @@ files:
85
85
  - bin/ggsm
86
86
  - ggsm.gemspec
87
87
  - lib/ggsm.rb
88
- - lib/ggsm/flow/delete.rb
89
- - lib/ggsm/flow/finish.rb
90
- - lib/ggsm/flow/foreach.rb
91
- - lib/ggsm/flow/merge.rb
92
- - lib/ggsm/flow/start.rb
93
- - lib/ggsm/flow/switch.rb
94
- - lib/ggsm/flow/sync.rb
88
+ - lib/ggsm/command/delete.rb
89
+ - lib/ggsm/command/finish.rb
90
+ - lib/ggsm/command/foreach.rb
91
+ - lib/ggsm/command/merge.rb
92
+ - lib/ggsm/command/start.rb
93
+ - lib/ggsm/command/switch.rb
94
+ - lib/ggsm/command/sync.rb
95
95
  - lib/ggsm/hook/commit-msg
96
96
  - lib/ggsm/hook/pre-commit
97
+ - lib/ggsm/util/hooks.rb
97
98
  - lib/ggsm/util/stash.rb
98
99
  - lib/ggsm/util/submodule.rb
99
100
  - lib/ggsm/version.rb