bigkeeper 0.7.6 → 0.7.7

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