bigkeeper 0.7.6 → 0.7.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/big_keeper.gemspec +3 -3
  4. data/docs/en-US/README.md +2 -2
  5. data/docs/zh-CN/BIGKEEPER_FILE.md +2 -2
  6. data/docs/zh-CN/FEATURE&HOTFIX.md +18 -11
  7. data/lib/big_keeper.rb +9 -289
  8. data/lib/big_keeper/command/feature&hotfix.rb +140 -0
  9. data/lib/big_keeper/command/feature&hotfix/finish.rb +7 -4
  10. data/lib/big_keeper/command/feature&hotfix/publish.rb +7 -6
  11. data/lib/big_keeper/command/feature&hotfix/pull.rb +2 -2
  12. data/lib/big_keeper/command/feature&hotfix/push.rb +2 -2
  13. data/lib/big_keeper/command/feature&hotfix/rebase.rb +2 -2
  14. data/lib/big_keeper/command/feature&hotfix/start.rb +16 -6
  15. data/lib/big_keeper/command/feature&hotfix/switch.rb +4 -6
  16. data/lib/big_keeper/command/feature&hotfix/update.rb +6 -4
  17. data/lib/big_keeper/command/pod.rb +36 -0
  18. data/lib/big_keeper/command/release.rb +68 -0
  19. data/lib/big_keeper/command/release/home.rb +2 -1
  20. data/lib/big_keeper/dependency/dep_gradle_operator.rb +26 -130
  21. data/lib/big_keeper/dependency/dep_operator.rb +4 -10
  22. data/lib/big_keeper/dependency/dep_pod_operator.rb +9 -53
  23. data/lib/big_keeper/dependency/dep_service.rb +2 -2
  24. data/lib/big_keeper/dependency/dep_type.rb +4 -4
  25. data/lib/big_keeper/model/gitflow_type.rb +12 -0
  26. data/lib/big_keeper/service/git_service.rb +2 -2
  27. data/lib/big_keeper/service/module_service.rb +15 -6
  28. data/lib/big_keeper/util/cache_operator.rb +69 -0
  29. data/lib/big_keeper/util/gradle_operator.rb +151 -0
  30. data/lib/big_keeper/util/podfile_operator.rb +4 -4
  31. data/lib/big_keeper/version.rb +1 -1
  32. data/resources/keynote/big-keeper-readme-feature.key +0 -0
  33. metadata +10 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4edeeb8d082f8fb0f11ead86d138df2495d7d95f
4
- data.tar.gz: 453186ec769bb6796be140554f744b1058f4769a
3
+ metadata.gz: 8b02490a4482b21afea4b0b7c529e37d7d5cc14a
4
+ data.tar.gz: 3b1581b1835064d928109eae24fe791e60d729ab
5
5
  SHA512:
6
- metadata.gz: 5d0a063e3a386f4bda808202e6caf49054fb62f0c0cf2eafe98e172762f2ecd71f622c147d5d38f75422e2e4f1689db111776a0460a48064c2717b52eaa5676a
7
- data.tar.gz: d08a0e038c04cbf4203215c458f96abf3c7e02751b6c9d5baefaab2aa793bdfef82fb60037b0e26bdaa984f3e392377e222e73ffd8e2e14459dbb8185f22ccb6
6
+ metadata.gz: 35c3e7ef3c40003c7818f748c41ad8bf6c56132ce823fce9057514a0870e0d7d3bb81f99241f4d56550d96e4fa65eaaf922376f5e09ea6832a3342d6d5800889
7
+ data.tar.gz: 30da0f0494391712d2e2736de23ec93e45f06e223848966b1dd67b08157b6b98f94eb45216b229fd102b448ab14a29aaf6f40dc8bb6bb5d0ce278451972fa554
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bigkeeper (0.7.5)
4
+ bigkeeper (0.7.6)
5
5
  big_stash (~> 0.1)
6
6
  cocoapods
7
7
  colorize
@@ -9,9 +9,9 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["mmoaay"]
10
10
  spec.email = ["mmoaay@sina.com"]
11
11
 
12
- spec.summary = %q{Efficiency improvement for iOS modular development.}
13
- spec.description = %q{Efficiency improvement for iOS modular development, iOSer using this tool can make modular development easier.}
14
- spec.homepage = "https://github.com/BigKeeper/big-keeper"
12
+ spec.summary = %q{Efficiency improvement for iOS&Android modular development.}
13
+ spec.description = %q{Efficiency improvement for iOS&Android modular development, iOSer&Androider using this tool can make modular development easier.}
14
+ spec.homepage = "https://github.com/BigKeeper/bigkeeper"
15
15
  spec.license = "MIT"
16
16
 
17
17
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
@@ -5,13 +5,13 @@
5
5
  # bigkeeper - All in home project
6
6
 
7
7
  [![Build Status](https://travis-ci.org/BigKeeper/bigkeeper.svg?branch=master)](https://travis-ci.org/BigKeeper/bigkeeper)
8
- [![Maintainability](https://api.codeclimate.com/v1/badges/c6dc4161e84fcec9a890/maintainability)](https://codeclimate.com/github/BigKeeper/big-keeper/maintainability)
8
+ [![Maintainability](https://api.codeclimate.com/v1/badges/c6dc4161e84fcec9a890/maintainability)](https://codeclimate.com/github/BigKeeper/bigkeeper/maintainability)
9
9
  [![Gem Version](https://badge.fury.io/rb/bigkeeper.svg)](https://rubygems.org/gems/bigkeeper)
10
10
  [![Language: Ruby](https://img.shields.io/badge/language-Ruby-da212f.svg)](https://www.ruby-lang.org/)
11
11
  [![License](https://img.shields.io/badge/license-MIT-000000.svg)](https://github.com/BigKeeper/big-keeper/blob/master/LICENSE)
12
12
  [![Gitter](https://img.shields.io/gitter/room/BigKeeper/BigKeeper.svg)](https://gitter.im/Big-Keeper/Lobby)
13
13
 
14
- bigkeeper is an efficiency improvement for iOS&Android modular development, iOSer&Android using this tool can make modular development easier.
14
+ bigkeeper is an efficiency improvement for iOS&Android modular development, iOSer&Androider using this tool can make modular development easier.
15
15
 
16
16
  ## Installation
17
17
 
@@ -29,7 +29,7 @@ home 'BigKeeperMain', :git => 'git@github.com:BigKeeper/BigKeeperMain.git', :pul
29
29
 
30
30
  ```
31
31
  modules do
32
- pod 'BigKeeperModular', :git => 'git@github.com:BigKeeper/BigKeeperModular.git', :pulls => 'https://github.com/BigKeeper/BigKeeperModular/pulls'
32
+ mod 'BigKeeperModular', :git => 'git@github.com:BigKeeper/BigKeeperModular.git', :pulls => 'https://github.com/BigKeeper/BigKeeperModular/pulls'
33
33
  end
34
34
  ```
35
35
 
@@ -43,7 +43,7 @@ end
43
43
 
44
44
  ```
45
45
  user 'perry' do
46
- pod 'BigKeeperModular', :path => '../BigKeeperModular'
46
+ mod 'BigKeeperModular', :path => '../BigKeeperModular'
47
47
  end
48
48
  ```
49
49
 
@@ -6,28 +6,31 @@
6
6
 
7
7
  ```
8
8
  NAME
9
- feature - Feature operations
10
-
9
+ feature - Gitflow feature operations
11
10
 
12
11
  SYNOPSIS
13
12
  big [global options] feature delete
14
13
  big [global options] feature finish
15
14
  big [global options] feature list
15
+ big [global options] feature publish
16
16
  big [global options] feature pull
17
17
  big [global options] feature push
18
+ big [global options] feature rebase
18
19
  big [global options] feature start
19
20
  big [global options] feature switch
20
21
  big [global options] feature update
21
22
 
22
23
  COMMANDS
23
- delete - Delete feature with name
24
- finish - Finish current feature
25
- list - List all the features
26
- pull - Pull remote changes for current feature
27
- push - Push local changes to remote for current feature
28
- start - Start a new feature with name for given modules and main project
29
- switch - Switch to the feature with name
30
- update - Update modules for the feature with name
24
+ delete - Delete feature with name
25
+ finish - Finish current feature
26
+ list - List all the features
27
+ publish - Publish current feature
28
+ pull - Pull remote changes for current feature
29
+ push - Push local changes to remote for current feature
30
+ rebase - Rebase 'develop' to current feature
31
+ start - Start a new feature with name for given modules and main project
32
+ switch - Switch to the feature with name
33
+ update - Update modules for the feature with name
31
34
  ```
32
35
 
33
36
  功能列表如下:
@@ -37,6 +40,7 @@ COMMANDS
37
40
  - feature 的名字;
38
41
  - 开发该 feature 需要改动的业务模块名。可以多个,用空格隔开;如果不指定,取 **Bigkeeper 文件中所有的业务模块名**。
39
42
  - finish:结束当前 feature;
43
+ - publish:发布当前 feature;
40
44
  - switch:切换到一个已经存在的 feature,输入参数为 feature 名;
41
45
  - update:
42
46
  更新一个 feature 需要改动的业务模块,输入参数依次为:
@@ -44,6 +48,7 @@ COMMANDS
44
48
  - 开发该 feature 需要改动的业务模块名。可以多个,用空格隔开;如果不指定,取 **Bigkeeper 文件中所有的业务模块名**。
45
49
  - pull:拉取当前 feature 主项目和业务模块的远程 git 仓库更新;
46
50
  - push:提交并推送当前 feature 主项目和业务模块的本地变更到远程 git 仓库,输入参数为提交信息;
51
+ - rebase:rebase 主项目和业务模块 `develop` 分支到当前 feature;
47
52
  - delete:根据 featue 名删除主项目和业务模块所有相关分支;(PS:慎用,因为会删除本地和远程所有相关分支)
48
53
  - list:显示当前的 feature 列表。
49
54
 
@@ -53,8 +58,10 @@ COMMANDS
53
58
  - 开发功能过程中如果发现某个模块其实不用改动,使用 bigkeeper feature update 来把这个模块从这个 feature 移除;
54
59
  - 使用 bigkeeper feature pull 来同步主项目和相关业务模块远端变更;
55
60
  - 使用 bigkeeper feature push 来推送主项目和相关业务模块变更到远端;
61
+ - 使用 bigkeeper feature rebase 来 rebase 主项目和业务模块 `develop` 分支到当前 feature;
56
62
  - 使用 bigkeeper feature switch 来切换 feature,比如:两个功能并行开发的时候,就可以用这个命令互相切换了;
57
- - 功能开发完成,需要提交 PR 时,使用 bigkeeper feature finish 结束开发;
63
+ - 功能开发完成,需要单独打包提交测试时,使用 bigkeeper feature finish 结束开发;
64
+ - 开始进行集成测试,需要将代码 PR 到 develop 分支时,使用 bigkeeper feature publish;
58
65
  - 如果开发过程中突然有新的功能需要紧急开发,直接使用 bigkeeper feature start 进行新功能开发,旧功能未提交的内容我们会保存在 stash 中。
59
66
 
60
67
  ## feature 的工作区
@@ -7,18 +7,9 @@ require 'big_keeper/util/git_operator'
7
7
 
8
8
  require 'big_keeper/model/gitflow_type'
9
9
 
10
- require 'big_keeper/command/feature&hotfix/start'
11
- require 'big_keeper/command/feature&hotfix/finish'
12
- require 'big_keeper/command/feature&hotfix/switch'
13
- require 'big_keeper/command/feature&hotfix/update'
14
- require 'big_keeper/command/feature&hotfix/pull'
15
- require 'big_keeper/command/feature&hotfix/push'
16
- require 'big_keeper/command/feature&hotfix/rebase'
17
- require 'big_keeper/command/feature&hotfix/publish'
18
- require 'big_keeper/command/pod/podfile'
19
- require 'big_keeper/command/feature&hotfix/delete'
20
- require 'big_keeper/command/release/home'
21
- require 'big_keeper/command/release/module'
10
+ require 'big_keeper/command/feature&hotfix'
11
+ require 'big_keeper/command/release'
12
+ require 'big_keeper/command/pod'
22
13
 
23
14
  require 'big_keeper/service/git_service'
24
15
 
@@ -34,296 +25,25 @@ module BigKeeper
34
25
  flag %i[v ver], default_value: 'Version in Bigkeeper file'
35
26
  flag %i[u user], default_value: GitOperator.new.user.gsub(/[^0-9A-Za-z]/, '').downcase
36
27
 
37
- path = ''
38
- version = ''
39
- user = GitOperator.new.user
40
-
41
- pre do |global_options, _command, options, args|
42
- path = File.expand_path(global_options[:path])
43
- version = global_options[:ver]
44
- user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
45
- end
46
-
47
28
  if !GitflowOperator.new.verify_git_flow_command
48
29
  p %Q('git-flow' not found, use 'brew install git-flow' to install it)
49
30
  exit
50
31
  end
51
32
 
52
- desc 'Gitflow feature operations'
53
- command :feature do |c|
54
-
55
- c.desc 'Start a new feature with name for given modules and main project'
56
- c.command :start do |start|
57
- start.action do |global_options, options, args|
58
- help_now!('user name is required') if user and user.empty?
59
- help_now!('feature name is required') if args.length < 1
60
- name = args[0]
61
- modules = args[(1...args.length)] if args.length > 1
62
- start(path, version, user, name, modules, GitflowType::FEATURE)
63
- end
64
- end
65
-
66
- c.desc 'Update modules for the feature with name'
67
- c.command :update do |update|
68
- update.action do |global_options, options, args|
69
- help_now!('user name is required') if user and user.empty?
70
- modules = args[(0...args.length)] if args.length > 0
71
- update(path, user, modules, GitflowType::FEATURE)
72
- end
73
- end
74
-
75
- c.desc 'Switch to the feature with name'
76
- c.command :switch do |switch|
77
- switch.action do |global_options, options, args|
78
- help_now!('user name is required') if user and user.empty?
79
- help_now!('feature name is required') if args.length < 1
80
- name = args[0]
81
- switch_to(path, version, user, name, GitflowType::FEATURE)
82
- end
83
- end
84
-
85
- c.desc 'Pull remote changes for current feature'
86
- c.command :pull do |pull|
87
- pull.action do |global_options, options, args|
88
- help_now!('user name is required') if user and user.empty?
89
- pull(path, user, GitflowType::FEATURE)
90
- end
91
- end
92
-
93
- c.desc 'Push local changes to remote for current feature'
94
- c.command :push do |push|
95
- push.action do |global_options, options, args|
96
- help_now!('user name is required') if user and user.empty?
97
- help_now!('comment message is required') if args.length < 1
98
- help_now!(%Q(comment message should be wrappered with '' or "")) if args.length > 1
99
- comment = args[0]
100
- push(path, user, comment, GitflowType::FEATURE)
101
- end
102
- end
103
-
104
- c.desc "Rebase 'develop' to current feature"
105
- c.command :rebase do |rebase|
106
- rebase.action do |global_options, options, args|
107
- help_now!('user name is required') if user and user.empty?
108
- rebase(path, user, GitflowType::FEATURE)
109
- end
110
- end
111
-
112
- c.desc 'Finish current feature'
113
- c.command :finish do |finish|
114
- finish.action do |global_options, options, args|
115
- help_now!('user name is required') if user and user.empty?
116
- finish(path, user, GitflowType::FEATURE)
117
- end
118
- end
119
-
120
- c.desc 'Publish current feature'
121
- c.command :publish do |publish|
122
- publish.action do |global_options, options, args|
123
- help_now!('user name is required') if user and user.empty?
124
- publish(path, user, GitflowType::FEATURE)
125
- end
126
- end
127
-
128
- c.desc 'Delete feature with name'
129
- c.command :delete do |delete|
130
- delete.action do |global_options, options, args|
131
- help_now!('user name is required') if user and user.empty?
132
- help_now!('feature name is required') if args.length < 1
133
- name = args[0]
134
- delete(path, user, name, GitflowType::FEATURE)
135
- end
136
- end
137
-
138
- c.desc 'List all the features'
139
- c.command :list do |list|
140
- list.action do
141
- branchs = GitService.new.branchs_with_type(File.expand_path(path), GitflowType::FEATURE)
142
- branchs.each do |branch|
143
- p branch
144
- end
145
- end
146
- end
147
- end
148
-
149
- desc 'Gitflow hotfix operations'
150
- command :hotfix do |c|
151
-
152
- c.desc 'Start a new hotfix with name for given modules and main project'
153
- c.command :start do |start|
154
- start.action do |global_options, options, args|
155
- help_now!('user name is required') if user and user.empty?
156
- help_now!('hotfix name is required') if args.length < 1
157
- name = args[0]
158
- modules = args[(1...args.length)] if args.length > 1
159
- start(path, version, user, name, modules, GitflowType::HOTFIX)
160
- end
161
- end
162
-
163
- c.desc 'Update modules for the hotfix with name'
164
- c.command :update do |update|
165
- update.action do |global_options, options, args|
166
- help_now!('user name is required') if user and user.empty?
167
- modules = args[(0...args.length)] if args.length > 0
168
- update(path, user, modules, GitflowType::HOTFIX)
169
- end
170
- end
33
+ feature_and_hotfix_command(GitflowType::FEATURE)
171
34
 
172
- c.desc 'Switch to the hotfix with name'
173
- c.command :switch do |switch|
174
- switch.action do |global_options, options, args|
175
- help_now!('user name is required') if user and user.empty?
176
- help_now!('hotfix name is required') if args.length < 1
177
- name = args[0]
178
- switch_to(path, version, user, name, GitflowType::HOTFIX)
179
- end
180
- end
35
+ feature_and_hotfix_command(GitflowType::HOTFIX)
181
36
 
182
- c.desc 'Pull remote changes for current hotfix'
183
- c.command :pull do |pull|
184
- pull.action do |global_options, options, args|
185
- help_now!('user name is required') if user and user.empty?
186
- pull(path, user, GitflowType::HOTFIX)
187
- end
188
- end
37
+ release_command
189
38
 
190
- c.desc 'Push local changes to remote for current hotfix'
191
- c.command :push do |push|
192
- push.action do |global_options, options, args|
193
- help_now!('user name is required') if user and user.empty?
194
- help_now!('comment message is required') if args.length < 1
195
- help_now!(%Q(comment message should be wrappered with '' or "")) if args.length > 1
196
- comment = args[0]
197
- push(path, user, comment, GitflowType::HOTFIX)
198
- end
199
- end
200
-
201
- c.desc "Rebase 'master' to current feature"
202
- c.command :rebase do |rebase|
203
- rebase.action do |global_options, options, args|
204
- help_now!('user name is required') if user and user.empty?
205
- rebase(path, user, GitflowType::HOTFIX)
206
- end
207
- end
208
-
209
- c.desc 'Finish current hotfix'
210
- c.command :finish do |finish|
211
- finish.action do |global_options, options, args|
212
- help_now!('user name is required') if user and user.empty?
213
- finish(path, user, GitflowType::HOTFIX)
214
- end
215
- end
216
-
217
- c.desc 'Publish current feature'
218
- c.command :publish do |publish|
219
- publish.action do |global_options, options, args|
220
- help_now!('user name is required') if user and user.empty?
221
- publish(path, user, GitflowType::HOTFIX)
222
- end
223
- end
224
-
225
- c.desc 'Delete hotfix with name'
226
- c.command :delete do |delete|
227
- delete.action do |global_options, options, args|
228
- help_now!('user name is required') if user and user.empty?
229
- help_now!('feature name is required') if args.length < 1
230
- name = args[0]
231
- delete(path, user, name, GitflowType::HOTFIX)
232
- end
233
- end
234
-
235
- c.desc 'List all the hotfixes'
236
- c.command :list do |list|
237
- list.action do
238
- branchs = GitService.new.branchs_with_type(File.expand_path(path), GitflowType::HOTFIX)
239
- branchs.each do |branch|
240
- p branch
241
- end
242
- end
243
- end
244
- end
245
-
246
- desc 'Gitflow release operations'
247
- command :release do |c|
248
-
249
- c.desc 'Release home project operations'
250
- c.command :home do |home|
251
- home.desc 'Start release home project'
252
- home.command :start do |start|
253
- start.action do |global_options, options, args|
254
- help_now!('user name is required') if user and user.empty?
255
- raise Logger.error("release version is required") if version == nil
256
- release_home_start(path, version, user)
257
- end
258
- end
259
-
260
- home.desc 'Finish release home project'
261
- home.command :finish do |finish|
262
- finish.action do |global_options, options, args|
263
- raise Logger.error("release version is required") if version == nil
264
- release_home_finish(path, version)
265
- end
266
- end
267
- end
268
-
269
- c.desc 'release module'
270
- c.command :module do |m|
271
- m.desc 'Start release module project'
272
- m.command :start do |start|
273
- start.action do |global_options, options, args|
274
- help_now!('module name is required') if args.length != 1
275
- raise Logger.error("release version is required") if version == nil
276
- module_name = args[0]
277
- release_module_start(path, version, user, module_name)
278
- end
279
- end
280
-
281
- m.desc 'finish release module project'
282
- m.command :finish do |finish|
283
- finish.action do |global_options, options, args|
284
- help_now!('module name is required') if args.length != 1
285
- raise Logger.error("release version is required") if version == nil
286
- module_name = args[0]
287
- release_module_finish(path, version, user, module_name)
288
- end
289
- end
290
- end
291
-
292
- end
293
-
294
- desc 'Podfile operation'
295
- command :podfile do |podfile|
296
- podfile.flag %i[pod podfile]
297
- podfile.desc 'Podfile'
298
- path = ''
299
-
300
- podfile.desc 'Detect podname should be locked.'
301
- podfile.command :detect do |detect|
302
- detect.action do |global_options,options,args|
303
- podfile_detect(path)
304
- end
305
- end
306
-
307
- podfile.desc 'Lock podname should be locked.'
308
- podfile.command :lock do |lock|
309
- lock.action do |global_options, options, args|
310
- podfile_lock(path)
311
- end
312
- end
313
-
314
- podfile.desc 'Update modules should be upgrade.'
315
- podfile.command :update do |lock|
316
- lock.action do |global_options, options, args|
317
- podfile_modules_update(path)
318
- end
319
- end
320
- end
39
+ pod_command
321
40
 
322
41
  desc 'Show version of bigkeeper'
323
42
  command :version do |version|
324
43
  version.action do |global_options, options, args|
325
44
  p "bigkeeper (#{VERSION})"
326
45
  end
327
- end
46
+ end
47
+
328
48
  exit run(ARGV)
329
49
  end