bigkeeper 0.8.5 → 0.8.6
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/README.md +28 -22
- data/docs/en-US/README.md +4 -0
- data/docs/zh-CN/BIGKEEPER_FILE.md +22 -0
- data/docs/zh-CN/FEATURE&HOTFIX.md +19 -59
- data/docs/zh-CN/IMAGE.md +0 -0
- data/docs/zh-CN/README.md +28 -24
- data/docs/zh-CN/RELEASE.md +57 -40
- data/docs/zh-CN/SPEC.md +39 -0
- data/lib/big_keeper.rb +0 -3
- data/lib/big_keeper/command/image.rb +12 -14
- data/lib/big_keeper/command/spec.rb +20 -1
- data/lib/big_keeper/command/spec/add.rb +1 -1
- data/lib/big_keeper/command/spec/analyze.rb +9 -12
- data/lib/big_keeper/command/spec/delete.rb +1 -1
- data/lib/big_keeper/command/{module → spec}/list.rb +1 -1
- data/lib/big_keeper/command/spec/search.rb +1 -1
- data/lib/big_keeper/util/git_operator.rb +2 -2
- data/lib/big_keeper/version.rb +1 -1
- data/resources/banner.png +0 -0
- data/resources/command.png +0 -0
- metadata +6 -29
- data/lib/big_keeper/command/module.rb +0 -23
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.001.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.002.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.003.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.004.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.005.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.006.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.007.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.008.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.009.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.010.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.011.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.012.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.013.jpeg +0 -0
- data/resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.014.jpeg +0 -0
- data/resources/readme/big-keeper-readme.002.png +0 -0
- data/resources/readme/big-keeper-readme.003.png +0 -0
- data/resources/readme/big-keeper-readme.004.png +0 -0
- data/resources/readme/big-keeper-readme.005.png +0 -0
- data/resources/readme/big-keeper-readme.006.png +0 -0
- data/resources/readme/big-keeper-readme.007.png +0 -0
- data/resources/readme/big-keeper-readme.008.png +0 -0
- data/resources/readme/big-keeper-readme.009.png +0 -0
- data/resources/readme/big-keeper-readme.010.png +0 -0
- data/resources/readme/big-keeper-readme.011.png +0 -0
- data/resources/readme/big-keeper-readme.012.png +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f110eccd6b2a0185f889a7af2324d30da13c9477
|
|
4
|
+
data.tar.gz: 40582adaa6066a3710e6b2f3ea7686b2ef7e991e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b3d3418c579636978d527e9618c4d2a0157e609d08e41213c1af69fb3f339bf281c15cc62c53dbb6dbc2985f5a91425597239d5eb71e53b6610e608bda7c3184
|
|
7
|
+
data.tar.gz: f6e1804ea25f309520dbafa108b192a26d6f54a7c52dd610e0efff8ba748b69893dfe9776ee70dfd2e004d76f1f74ed49e6619aab0e7b89f5136cb7544edcb07
|
data/README.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-

|
|
2
|
-
|
|
3
1
|
[English](./docs/en-US/README.md)
|
|
4
2
|
|
|
5
3
|
---
|
|
6
4
|
|
|
7
5
|
# bigkeeper
|
|
8
6
|
|
|
7
|
+

|
|
8
|
+
|
|
9
9
|
[](https://travis-ci.org/BigKeeper/bigkeeper)
|
|
10
10
|
[](https://codeclimate.com/github/BigKeeper/big-keeper/maintainability)
|
|
11
11
|
[](https://rubygems.org/gems/bigkeeper)
|
|
@@ -13,11 +13,11 @@
|
|
|
13
13
|
[](https://github.com/BigKeeper/big-keeper/blob/master/LICENSE)
|
|
14
14
|
[](https://gitter.im/Big-Keeper/Lobby)
|
|
15
15
|
|
|
16
|
-
bigkeeper 是一个 **iOS&Android
|
|
16
|
+
bigkeeper 是一个 **iOS&Android 模块化项目**效率提升工具,旨在帮助有模块化需求的团队更轻松的渡过“半模块化”尴尬期。
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
使用这个工具后,开发者**在主项目内**即可完成**包括其他业务模块在内**所有代码的编写和管理。
|
|
19
19
|
|
|
20
|
-
我们借鉴 CocoaPods 的做法,开发团队只需要在主项目中加入一个 Bigkeeper 文件,然后利用我们提供的 `
|
|
20
|
+
我们借鉴 CocoaPods 的做法,开发团队只需要在主项目中加入一个 Bigkeeper 文件,然后利用我们提供的 `big` 命令,即可更便捷的实现**代码分支**和**业务模块**的管理;另外,通过 `big` 命令提供的流程,也能帮助开发者养成更规范的日常开发习惯,减轻项目管理者的负担。
|
|
21
21
|
|
|
22
22
|
## 应用场景
|
|
23
23
|
|
|
@@ -26,7 +26,9 @@ bigkeeper 是一个 **iOS&Android 模块化项目**效率提升工具,使用
|
|
|
26
26
|
- 开发者开发一个 feature 时需要维护多个项目的分支,同时还要频繁修改主项目的 `Podfile`;
|
|
27
27
|
- 项目管理者需要花很大精力去和团队成员同步项目管理规范流程,尤其对于新人,挑战很大;
|
|
28
28
|
- 开发过程中如果碰到突发情况需要开新分支处理问题时对当前工作区的保存操作会很繁琐(PS:因为涉及到多个项目);
|
|
29
|
-
- 日常开发过程中类似 commit、pull、push 等操作比较繁琐(PS
|
|
29
|
+
- 日常开发过程中类似 commit、pull、push 等操作比较繁琐(PS:因为涉及到多个项目);
|
|
30
|
+
- 资源(比如图片)散落在各个业务模块,可能存在重名、重复等问题,难以管理;
|
|
31
|
+
- 业务模块可能存在横向依赖的问题,导致业务模块间耦合严重,不能单独编译运行。
|
|
30
32
|
|
|
31
33
|
bigkeeper 的出现就是为了解决这些问题。
|
|
32
34
|
|
|
@@ -62,39 +64,43 @@ bigkeeper 的出现就是为了解决这些问题。
|
|
|
62
64
|
|
|
63
65
|
```
|
|
64
66
|
NAME
|
|
65
|
-
|
|
67
|
+
big - Efficiency improvement for iOS&Android module development, iOSer&Android using this tool can make module development easier.
|
|
66
68
|
|
|
67
69
|
SYNOPSIS
|
|
68
|
-
|
|
70
|
+
big [global options] command [command options] [arguments...]
|
|
69
71
|
|
|
70
|
-
GLOBAL OPTIONS
|
|
71
|
-
--help - Show this message
|
|
72
|
-
-p, --path=arg - (default: ./)
|
|
73
|
-
-u, --user=arg - (default: mmoaay)
|
|
74
72
|
|
|
75
|
-
|
|
73
|
+
GLOBAL OPTIONS
|
|
74
|
+
--help - Show this message
|
|
75
|
+
-p, --path=arg - (default: ./)
|
|
76
|
+
-u, --user=arg - (default: mmoaay)
|
|
77
|
+
-v, --ver=arg - (default: Version in Bigkeeper file)
|
|
76
78
|
|
|
77
79
|
COMMANDS
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
80
|
+
feature - Gitflow feature operations
|
|
81
|
+
help - Shows a list of commands or help for one command
|
|
82
|
+
hotfix - Gitflow hotfix operations
|
|
83
|
+
image - Image operations
|
|
84
|
+
podfile - Podfile operation
|
|
85
|
+
release - Gitflow release operations
|
|
86
|
+
spec - Spec operations
|
|
87
|
+
version - Show version of bigkeeper
|
|
84
88
|
```
|
|
85
89
|
|
|
86
90
|
全局参数如下:
|
|
87
91
|
|
|
88
92
|
- -p, --path:主项目所在的目录,默认是执行 bigkeeper 命令的当前目录;
|
|
89
|
-
- -v, --ver:版本号,如果没有指定的话,会以主项目 [Bigkeeper 文件](BIGKEEPER_FILE.md)中指定的版本为准。
|
|
93
|
+
- -v, --ver:版本号,如果没有指定的话,会以主项目 [Bigkeeper 文件](./docs/zh-CN/BIGKEEPER_FILE.md)中指定的版本为准。
|
|
90
94
|
- -u, --user:用户名,默认是 git global config 的 user.name,会显示在命令提示信息中,比如上述提示信息中的默认用户名是 mmoaay
|
|
91
95
|
|
|
92
96
|
功能列表如下:
|
|
93
97
|
|
|
94
98
|
- [feature](./docs/zh-CN/FEATURE&HOTFIX.md):功能开发流程;
|
|
95
|
-
- [hotfix](./docs/zh-CN/FEATURE&HOTFIX.md)
|
|
99
|
+
- [hotfix](./docs/zh-CN/FEATURE&HOTFIX.md):线上 Bug 修复流程;
|
|
96
100
|
- [release](./docs/zh-CN/RELEASE.md):发布流程;
|
|
97
|
-
- [podfile](./docs/zh-CN/PODFILE.md):Podfile
|
|
101
|
+
- [podfile](./docs/zh-CN/PODFILE.md):Podfile 管理;
|
|
102
|
+
- [image](./docs/zh-CN/IMAGE.md):图片管理;
|
|
103
|
+
- [spec](./docs/zh-CN/SPEC.md):spec 管理;
|
|
98
104
|
- version:查看 bigkeeper 当前版本号;
|
|
99
105
|
- help:查看 bigkeeper 帮助文档。
|
|
100
106
|
|
data/docs/en-US/README.md
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
+
|
|
2
|
+
|
|
1
3
|
[中文](../zh-CN/README.md)
|
|
2
4
|
|
|
3
5
|
---
|
|
4
6
|
|
|
5
7
|
# bigkeeper - All in home project
|
|
6
8
|
|
|
9
|
+

|
|
10
|
+
|
|
7
11
|
[](https://travis-ci.org/BigKeeper/bigkeeper)
|
|
8
12
|
[](https://codeclimate.com/github/BigKeeper/bigkeeper/maintainability)
|
|
9
13
|
[](https://rubygems.org/gems/bigkeeper)
|
|
@@ -25,11 +25,33 @@ home 'BigKeeperMain', :git => 'git@github.com:BigKeeper/BigKeeperMain.git', :pul
|
|
|
25
25
|
- 主项目的 git 远程仓库地址;
|
|
26
26
|
- 主项目的 pull request / merge request 页面地址,完成某个 feature / hotfix 时,会自动打开这个页面,让开发者提交 pull request / merge request。
|
|
27
27
|
|
|
28
|
+
## 配置模块源
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
source 'git@git.elenet.me:LPD-iOS/LPDSpecs.git, elenet-lpdspecs' do
|
|
32
|
+
modules do
|
|
33
|
+
...
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
source ...
|
|
38
|
+
...
|
|
39
|
+
end
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
考虑到我们的业务模块可能属于不同的源,所以配置业务模块之前,要先在最外层配置源信息:
|
|
43
|
+
|
|
44
|
+
- 源 git 地址;
|
|
45
|
+
- 源名称。
|
|
46
|
+
|
|
47
|
+
配置这个主要是方便对我们关心的源执行 `pod repo update`,从而节省命令执行的时间。
|
|
48
|
+
|
|
28
49
|
## 配置业务模块
|
|
29
50
|
|
|
30
51
|
```
|
|
31
52
|
modules do
|
|
32
53
|
mod 'BigKeeperModular', :git => 'git@github.com:BigKeeper/BigKeeperModular.git', :pulls => 'https://github.com/BigKeeper/BigKeeperModular/pulls'
|
|
54
|
+
mod ...
|
|
33
55
|
end
|
|
34
56
|
```
|
|
35
57
|
|
|
@@ -52,21 +52,25 @@ COMMANDS
|
|
|
52
52
|
- delete:根据 featue 名删除主项目和业务模块所有相关分支;(PS:慎用,因为会删除本地和远程所有相关分支)
|
|
53
53
|
- list:显示当前的 feature 列表。
|
|
54
54
|
|
|
55
|
-
##
|
|
55
|
+
## 各个指令的使用场景
|
|
56
56
|
|
|
57
|
-
- 如果需要开发新的功能,使用
|
|
58
|
-
- 开发功能过程中如果发现某个模块其实不用改动,使用
|
|
59
|
-
- 使用
|
|
60
|
-
- 使用
|
|
61
|
-
- 使用
|
|
62
|
-
- 使用
|
|
63
|
-
- 功能开发完成,需要单独打包提交测试时,使用
|
|
64
|
-
- 开始进行集成测试,需要将代码 PR 到 develop 分支时,使用
|
|
65
|
-
- 如果开发过程中突然有新的功能需要紧急开发,直接使用
|
|
57
|
+
- 如果需要开发新的功能,使用 big feature start;
|
|
58
|
+
- 开发功能过程中如果发现某个模块其实不用改动,使用 big feature update 来把这个模块从这个 feature 移除;
|
|
59
|
+
- 使用 big feature pull 来同步主项目和相关业务模块远端变更;
|
|
60
|
+
- 使用 big feature push 来推送主项目和相关业务模块变更到远端;
|
|
61
|
+
- 使用 big feature rebase 来 rebase 主项目和业务模块 `develop` 分支到当前 feature;
|
|
62
|
+
- 使用 big feature switch 来切换 feature,比如:两个功能并行开发的时候,就可以用这个命令互相切换了;
|
|
63
|
+
- 功能开发完成,需要单独打包提交测试时,使用 big feature finish 结束开发;
|
|
64
|
+
- 开始进行集成测试,需要将代码 PR 到 develop 分支时,使用 big feature publish;
|
|
65
|
+
- 如果开发过程中突然有新的功能需要紧急开发,直接使用 big feature start 进行新功能开发,旧功能未提交的内容我们会保存在 stash 中。
|
|
66
66
|
|
|
67
|
-
##
|
|
67
|
+
## 各个指令执行结束后工程的状态
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
### feature 的工作区
|
|
70
|
+
|
|
71
|
+
在开始了解各条指令执行后工程的状态之前,我们先了解一下 bigkeeper feature 流程的工作区。
|
|
72
|
+
|
|
73
|
+

|
|
70
74
|
|
|
71
75
|
feature 的工作区主要由两部分组成:
|
|
72
76
|
|
|
@@ -79,50 +83,6 @@ feature 的工作区主要由两部分组成:
|
|
|
79
83
|
- stash 缓存区,当用户需要切换新的 feature 时,对于用户来不及提交的改动,我们会缓存到各个项目的 stash 中,(PS:所以代码突然不见了不要担心,都在 git 的 stash 里面),而当用户切换回某个 feature 时,我们会把和该 feature 分支同名的 stash 恢复回来,从而使用户可以继续开发之前未完成的部分,因为需要通过 feature 的分支名来匹配 stash,而 git stash 又没有提供给 stash 命名的功能,所以我们实现了 [bigstash](https://github.com/BigKeeper/bigstash) 来完成这个功能;
|
|
80
84
|
- git。
|
|
81
85
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
## master/develop 分支状态检查流程
|
|
87
|
-
|
|
88
|
-

|
|
89
|
-
|
|
90
|
-
## 切换分支流程
|
|
91
|
-
|
|
92
|
-

|
|
93
|
-
|
|
94
|
-
## 同步业务模块与主项目分支流程
|
|
95
|
-
|
|
96
|
-

|
|
97
|
-
|
|
98
|
-
## finish 业务模块 feature/hotfix 流程
|
|
99
|
-
|
|
100
|
-

|
|
101
|
-
|
|
102
|
-
## 从 feature/hotfix 移除模块流程
|
|
103
|
-
|
|
104
|
-

|
|
105
|
-
|
|
106
|
-
## feature start 流程
|
|
107
|
-
|
|
108
|
-

|
|
109
|
-
|
|
110
|
-
## feature finish 流程
|
|
111
|
-
|
|
112
|
-

|
|
113
|
-
|
|
114
|
-
## feature switch 流程
|
|
115
|
-
|
|
116
|
-

|
|
117
|
-
|
|
118
|
-
## feature update 流程
|
|
119
|
-
|
|
120
|
-

|
|
121
|
-
|
|
122
|
-
## feature pull 流程
|
|
123
|
-
|
|
124
|
-

|
|
125
|
-
|
|
126
|
-
## feature push 流程
|
|
127
|
-
|
|
128
|
-

|
|
86
|
+
> 注:
|
|
87
|
+
> 1. 所有的指令我们都做了良好的出错提示和异常恢复机制,当某个步骤报错时,只需要根据提示的错误手动修复问题,重新输入指令,bigkeeper 会继续执行接下来的流程。
|
|
88
|
+
> 2. 所有的代码都会保存在工作区中,除了 delete 操作,bigkeeper 不会删除任何工作区的代码,也就是说:你总是可以在变更区、Stash 中或者远端找到你变更的代码。
|
data/docs/zh-CN/IMAGE.md
ADDED
|
File without changes
|
data/docs/zh-CN/README.md
CHANGED
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
|
|
5
5
|
# bigkeeper
|
|
6
6
|
|
|
7
|
+

|
|
8
|
+
|
|
7
9
|
[](https://travis-ci.org/BigKeeper/bigkeeper)
|
|
8
10
|
[](https://codeclimate.com/github/BigKeeper/big-keeper/maintainability)
|
|
9
11
|
[](https://rubygems.org/gems/bigkeeper)
|
|
@@ -11,11 +13,11 @@
|
|
|
11
13
|
[](https://github.com/BigKeeper/big-keeper/blob/master/LICENSE)
|
|
12
14
|
[](https://gitter.im/Big-Keeper/Lobby)
|
|
13
15
|
|
|
14
|
-
bigkeeper 是一个 **iOS&Android
|
|
16
|
+
bigkeeper 是一个 **iOS&Android 模块化项目**效率提升工具,旨在帮助有模块化需求的团队更轻松的渡过“半模块化”尴尬期。
|
|
15
17
|
|
|
16
|
-
|
|
18
|
+
使用这个工具后,开发者**在主项目内**即可完成**包括其他业务模块在内**所有代码的编写和管理。
|
|
17
19
|
|
|
18
|
-
我们借鉴 CocoaPods 的做法,开发团队只需要在主项目中加入一个 Bigkeeper 文件,然后利用我们提供的 `
|
|
20
|
+
我们借鉴 CocoaPods 的做法,开发团队只需要在主项目中加入一个 Bigkeeper 文件,然后利用我们提供的 `big` 命令,即可更便捷的实现**代码分支**和**业务模块**的管理;另外,通过 `big` 命令提供的流程,也能帮助开发者养成更规范的日常开发习惯,减轻项目管理者的负担。
|
|
19
21
|
|
|
20
22
|
## 应用场景
|
|
21
23
|
|
|
@@ -24,11 +26,13 @@ bigkeeper 是一个 **iOS&Android 模块化项目**效率提升工具,使用
|
|
|
24
26
|
- 开发者开发一个 feature 时需要维护多个项目的分支,同时还要频繁修改主项目的 `Podfile`;
|
|
25
27
|
- 项目管理者需要花很大精力去和团队成员同步项目管理规范流程,尤其对于新人,挑战很大;
|
|
26
28
|
- 开发过程中如果碰到突发情况需要开新分支处理问题时对当前工作区的保存操作会很繁琐(PS:因为涉及到多个项目);
|
|
27
|
-
- 日常开发过程中类似 commit、pull、push 等操作比较繁琐(PS
|
|
29
|
+
- 日常开发过程中类似 commit、pull、push 等操作比较繁琐(PS:因为涉及到多个项目);
|
|
30
|
+
- 资源(比如图片)散落在各个业务模块,可能存在重名、重复等问题,难以管理;
|
|
31
|
+
- 业务模块可能存在横向依赖的问题,导致业务模块间耦合严重,不能单独编译运行。
|
|
28
32
|
|
|
29
33
|
bigkeeper 的出现就是为了解决这些问题。
|
|
30
34
|
|
|
31
|
-
> 注:也有很多人认为直接做一个完整的组件化项目更合理,而不需要采用这样曲折的方案,但是很多时候我们并没有这么多的精力直接去做这些事情,bigkeeper
|
|
35
|
+
> 注:也有很多人认为直接做一个完整的组件化项目更合理,而不需要采用这样曲折的方案,但是很多时候我们并没有这么多的精力直接去做这些事情,bigkeeper 存在的价值也是为了帮助开发团队在** iOS&Android 模块化项目过渡阶段**能更轻松的往前走。
|
|
32
36
|
|
|
33
37
|
## 安装
|
|
34
38
|
|
|
@@ -49,10 +53,6 @@ bigkeeper 的出现就是为了解决这些问题。
|
|
|
49
53
|
|
|
50
54
|
## 使用方法
|
|
51
55
|
|
|
52
|
-
> 注:每个流程我们都提供详细的流程图来让你了解我们都做了些什么,为了方便你更好的了解我们的流程,我们提供了一个流程参考图,如下:
|
|
53
|
-
>
|
|
54
|
-
> 
|
|
55
|
-
|
|
56
56
|
- [Bigkeeper 文件配置](BIGKEEPER_FILE.md)
|
|
57
57
|
- `bigkeeper` 工具使用:
|
|
58
58
|
|
|
@@ -60,25 +60,27 @@ bigkeeper 的出现就是为了解决这些问题。
|
|
|
60
60
|
|
|
61
61
|
```
|
|
62
62
|
NAME
|
|
63
|
-
|
|
63
|
+
big - Efficiency improvement for iOS&Android module development, iOSer&Android using this tool can make module development easier.
|
|
64
64
|
|
|
65
65
|
SYNOPSIS
|
|
66
|
-
|
|
66
|
+
big [global options] command [command options] [arguments...]
|
|
67
67
|
|
|
68
|
-
GLOBAL OPTIONS
|
|
69
|
-
--help - Show this message
|
|
70
|
-
-p, --path=arg - (default: ./)
|
|
71
|
-
-u, --user=arg - (default: mmoaay)
|
|
72
68
|
|
|
73
|
-
|
|
69
|
+
GLOBAL OPTIONS
|
|
70
|
+
--help - Show this message
|
|
71
|
+
-p, --path=arg - (default: ./)
|
|
72
|
+
-u, --user=arg - (default: mmoaay)
|
|
73
|
+
-v, --ver=arg - (default: Version in Bigkeeper file)
|
|
74
74
|
|
|
75
75
|
COMMANDS
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
76
|
+
feature - Gitflow feature operations
|
|
77
|
+
help - Shows a list of commands or help for one command
|
|
78
|
+
hotfix - Gitflow hotfix operations
|
|
79
|
+
image - Image operations
|
|
80
|
+
podfile - Podfile operation
|
|
81
|
+
release - Gitflow release operations
|
|
82
|
+
spec - Spec operations
|
|
83
|
+
version - Show version of bigkeeper
|
|
82
84
|
```
|
|
83
85
|
|
|
84
86
|
全局参数如下:
|
|
@@ -90,9 +92,11 @@ bigkeeper 的出现就是为了解决这些问题。
|
|
|
90
92
|
功能列表如下:
|
|
91
93
|
|
|
92
94
|
- [feature](FEATURE&HOTFIX.md):功能开发流程;
|
|
93
|
-
- [hotfix](FEATURE&HOTFIX.md)
|
|
95
|
+
- [hotfix](FEATURE&HOTFIX.md):线上 Bug 修复流程;
|
|
94
96
|
- [release](RELEASE.md):发布流程;
|
|
95
|
-
- [podfile](PODFILE.md):Podfile
|
|
97
|
+
- [podfile](PODFILE.md):Podfile 管理;
|
|
98
|
+
- [image](IMAGE.md):图片管理;
|
|
99
|
+
- [spec](SPEC.md):spec 管理;
|
|
96
100
|
- version:查看 bigkeeper 当前版本号;
|
|
97
101
|
- help:查看 bigkeeper 帮助文档。
|
|
98
102
|
|
data/docs/zh-CN/RELEASE.md
CHANGED
|
@@ -1,43 +1,60 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
饿了么物流模块化效率提升思考 - 发布流程篇
|
|
2
|
+
### 背景
|
|
3
|
+
bigkeeper 的目的是为了在项目的模块化过渡阶段提升效率,在过渡到模块化的过程中要做很多的代码抽离,而越来越多的 Pod依赖(假设用Cocoapods做包管理)对项目管理者的负担越来越大.
|
|
4
|
+
移动端完成一个需求迭代,除了代码开发外,还需要有模块发版,集成,打包,回归这些步骤,而往往在回归到发版的时候,研发同学要花较多时间在发版,这严重影响了开发效率.
|
|
5
|
+
### 解决方案
|
|
6
|
+
为了提高要提高发布流程的发布效率,我们开发了big release 功能是来提升发布效率.首先说明,bigkeeper的开发以及发布流程是完全遵循[git-flow 流程](https://jeffkreeftmeijer.com/git-flow/).
|
|
7
|
+
我们建议直接把`Pods`和`Podfile.lock`移出版本控制系统,因为模块化的操作会频繁进行 `Pods`的增删以及更新,但是这会带来版本锁定的困扰,我们建议把版本锁定的工作从 `Podfile.lock`移到`Podfile`中,为此我们做了一个功能 [big pod](---.).
|
|
8
|
+
`bigkeeper`提供了`release module`模块发版和`release home`主工程发版,每种发版方式分为` start`和` finish`, 这两种方式的最大区别是` start`没有`git push`,不会因为可能存在的问题而污染`origin`仓库,这也留一个口子给研发人员进行二次确认.
|
|
9
|
+
#### 模块发版
|
|
10
|
+
在过渡到模块化和已经模块化的项目中, 会存在很多依赖库, 一般会分为:
|
|
11
|
+
* 业务模块库
|
|
12
|
+
* 业务基础库
|
|
13
|
+
* 二方库(公司内部库)
|
|
14
|
+
* 三方库
|
|
15
|
+
一般来说,二方库和三方库的版本稳定,而每次业务迭代频繁改动往往就是业务模块库与业务基础库,这这两种类型的库在发布的时候往往因为会因为依赖库的原因而导致发版失败,浪费开发人员的时间.
|
|
16
|
+
所以,模块发布提供了两种解决方案:
|
|
4
17
|
```
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
SYNOPSIS
|
|
9
|
-
big [global options] release home
|
|
10
|
-
big [global options] release module
|
|
11
|
-
|
|
12
|
-
COMMANDS
|
|
13
|
-
home - Release home project operations
|
|
14
|
-
module - Start release module
|
|
18
|
+
big release module finish ExampleModule
|
|
19
|
+
Options:
|
|
20
|
+
-s, --spec : 模块需要发布版本
|
|
15
21
|
```
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
22
|
+
`--spec`指令决定模块需要发版,如果不需要,那仅会在`master`分支打上`tag`.
|
|
23
|
+
而在`start`指令中我们也做了一些安全性检查:
|
|
24
|
+
* 根据开发流程的分支命名规范(branch: feature/x.x.x),检查当前是否有分支还没有合并到`develop`分支;
|
|
25
|
+
* 检查`master`分支相较于`develop`分支是否有超前的` commit`,防止有不规范的操作导致污染` master`分支代码.
|
|
26
|
+
```
|
|
27
|
+
big release module start ExampleModule
|
|
28
|
+
Options:
|
|
29
|
+
-i, --ignore : 忽略安全性检查(默认开启)
|
|
30
|
+
```
|
|
31
|
+
#### 主工程发版
|
|
32
|
+
在模块化完成之后,主工程基本上是个壳工程,只会有`Podfile`和配置文件的改动, 根据`git-flow`的规则`bigkeeper`在发布主工程时会从`develop`切出` release/x.x.x`分支,`release`分支是一个暂时性分支,在代码已经并入`master`之后会删除`release`分支.
|
|
33
|
+
`release home start`中有两种模块的引用方式:
|
|
34
|
+
```
|
|
35
|
+
pod 'ExampleModule', '0.1.0'
|
|
36
|
+
or
|
|
37
|
+
pod 'ExampleModule', :git => 'ExampleModule.git', :tag => '0.1.0'
|
|
38
|
+
```
|
|
39
|
+
如果模块没有发布,` bigkeeper`会根据在根据仓库里的最新`tag`和`.cocoapods/repos` 里的已发布版本去找到合适的依赖方式.
|
|
40
|
+
在` release home finish`中有一个需要注意的地方就是` release`分支合并到` develop`之前`reset`掉对` Podfile`的操作,这样保持了不会有在` Podfile`文件不会有冲突.
|
|
41
|
+
### 举个例子
|
|
42
|
+
模块发版:
|
|
43
|
+
```
|
|
44
|
+
big -v 0.1.0 release module start ExampleModule
|
|
45
|
+
big -v 0.1.0 release module finish ExampleModule
|
|
46
|
+
Options:
|
|
47
|
+
-v : 发布是指定版本号,如未指定,则用bigkeeper文件中的vesion
|
|
48
|
+
```
|
|
49
|
+
主工程发版:
|
|
50
|
+
```
|
|
51
|
+
big -v 0.1.0 release home start
|
|
52
|
+
big -v 0.1.0 release home finish
|
|
53
|
+
Options:
|
|
54
|
+
-v : 发布是指定版本号,如未指定,则用bigkeeper文件中的vesion
|
|
55
|
+
```
|
|
56
|
+
### 展望
|
|
57
|
+
对于很多中大型公司来说都是自己的CI系统,可以把发版本这种耗时而且占内存的工作放在CI机器上,所以我们也有计划把`release module`最后一步的发版本的步骤留个口子,研发同学可以在这里去触发各自CI系统的发版流程.
|
|
58
|
+
### 结束语
|
|
59
|
+
`bigkeeper`在饿了么物流已经实践了半年多了,从数个模块到现在40+的模块数量,仅`release`流程节省项目管理者非常多的时间,提升了效率而且规范化了开发流程,也希望大家在使用中有` issue`反馈给到我们.
|
|
35
60
|
|
|
36
|
-
## release home start 流程
|
|
37
|
-

|
|
38
|
-
## release home finish 流程
|
|
39
|
-

|
|
40
|
-
## release module start 流程
|
|
41
|
-

|
|
42
|
-
## release module finish 流程
|
|
43
|
-

|
data/docs/zh-CN/SPEC.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# spec - spec 管理
|
|
2
|
+
|
|
3
|
+
## 背景
|
|
4
|
+
|
|
5
|
+
模块化推进过程中势必存在业务模块间的横向依赖,原则上这种依赖我们都需要通过 router 进行解耦,不能直接源码依赖其他业务模块,因为这样的依赖会导致如下的问题:
|
|
6
|
+
|
|
7
|
+
- 因为直接横向依赖业务模块,导致业务模块无法独立编译运行。
|
|
8
|
+
- 各个业务模块如果存在大量类似依赖,必将导致后期模块代码依赖错综复杂,难以维护。
|
|
9
|
+
|
|
10
|
+
## 功能简介
|
|
11
|
+
|
|
12
|
+
直接在命令行执行 `big spec --help` 可以查看其提供的所有功能:
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
NAME
|
|
16
|
+
spec - Spec operations
|
|
17
|
+
|
|
18
|
+
SYNOPSIS
|
|
19
|
+
big [global options] spec [command options] add
|
|
20
|
+
big [global options] spec [command options] analyze
|
|
21
|
+
big [global options] spec [command options] delete
|
|
22
|
+
big [global options] spec [command options] list
|
|
23
|
+
big [global options] spec [command options] search
|
|
24
|
+
|
|
25
|
+
COMMAND OPTIONS
|
|
26
|
+
-a, --[no-]all -
|
|
27
|
+
|
|
28
|
+
COMMANDS
|
|
29
|
+
add - Add a spec (Coming soon).
|
|
30
|
+
analyze - Analyze spec dependency infomation.
|
|
31
|
+
delete - Delete a spec (Coming soon).
|
|
32
|
+
list - List all the specs.
|
|
33
|
+
search - Search a spec with name (Coming soon).
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
功能列表如下:
|
|
37
|
+
|
|
38
|
+
- analyze:分析所有指定模块之间的依赖,通常为业务模块。
|
|
39
|
+
- list:显示当前所有的业务 spec。
|
data/lib/big_keeper.rb
CHANGED
|
@@ -11,7 +11,6 @@ require 'big_keeper/model/gitflow_type'
|
|
|
11
11
|
require 'big_keeper/command/feature&hotfix'
|
|
12
12
|
require 'big_keeper/command/release'
|
|
13
13
|
require 'big_keeper/command/pod'
|
|
14
|
-
require 'big_keeper/command/module'
|
|
15
14
|
require 'big_keeper/command/spec'
|
|
16
15
|
require 'big_keeper/command/image'
|
|
17
16
|
|
|
@@ -47,8 +46,6 @@ module BigKeeper
|
|
|
47
46
|
|
|
48
47
|
pod_command
|
|
49
48
|
|
|
50
|
-
module_command
|
|
51
|
-
|
|
52
49
|
spec_command
|
|
53
50
|
|
|
54
51
|
image_command
|
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
require 'big_resources/util/image/name_analyze_util'
|
|
2
2
|
|
|
3
3
|
module BigKeeper
|
|
4
|
-
|
|
5
4
|
def self.image_command
|
|
6
|
-
|
|
7
|
-
desc 'Image operation'
|
|
5
|
+
desc 'Image operations'
|
|
8
6
|
command :image do | c |
|
|
9
7
|
c.desc "Detect duplicate name images."
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
end
|
|
8
|
+
c.command :name do | name |
|
|
9
|
+
name.action do | global_options, options, args |
|
|
10
|
+
path = File.expand_path(global_options[:path])
|
|
11
|
+
BigResources::ImageAnalyzeUtil.get_duplicate_name_file_with_type(path, BigResources::PNG)
|
|
15
12
|
end
|
|
13
|
+
end
|
|
16
14
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
end
|
|
15
|
+
c.desc "Detect duplicate content images."
|
|
16
|
+
c.command :content do | content |
|
|
17
|
+
content.action do | global_options, options, args |
|
|
18
|
+
path = File.expand_path(global_options[:path])
|
|
19
|
+
BigResources::ImageAnalyzeUtil.get_duplicate_content_file_with_type(path, BigResources::PNG)
|
|
23
20
|
end
|
|
21
|
+
end
|
|
24
22
|
end
|
|
25
23
|
end
|
|
26
24
|
end
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'big_keeper/command/spec/analyze'
|
|
2
|
+
require 'big_keeper/command/spec/list'
|
|
2
3
|
require 'big_keeper/command/spec/add'
|
|
3
4
|
require 'big_keeper/command/spec/delete'
|
|
4
5
|
require 'big_keeper/command/spec/search'
|
|
@@ -6,10 +7,11 @@ require 'big_keeper/command/spec/search'
|
|
|
6
7
|
module BigKeeper
|
|
7
8
|
|
|
8
9
|
def self.spec_command
|
|
9
|
-
desc '
|
|
10
|
+
desc 'Spec operations'
|
|
10
11
|
|
|
11
12
|
command :spec do |spec|
|
|
12
13
|
spec.switch [:a,:all]
|
|
14
|
+
spec.desc 'Analyze spec dependency infomation.'
|
|
13
15
|
spec.command :analyze do |analyze|
|
|
14
16
|
analyze.action do |global_options, options, args|
|
|
15
17
|
path = File.expand_path(global_options[:path])
|
|
@@ -18,16 +20,33 @@ module BigKeeper
|
|
|
18
20
|
spec_analyze(path, is_all, module_names)
|
|
19
21
|
end
|
|
20
22
|
end
|
|
23
|
+
|
|
24
|
+
spec.desc 'List all the specs.'
|
|
25
|
+
spec.command :list do | list |
|
|
26
|
+
list.action do |global_options, options, args|
|
|
27
|
+
path = File.expand_path(global_options[:path])
|
|
28
|
+
version = global_options[:ver]
|
|
29
|
+
user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
|
|
30
|
+
|
|
31
|
+
spec_list(path, user, options)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
spec.desc 'Add a spec (Coming soon).'
|
|
21
36
|
spec.command :add do |add|
|
|
22
37
|
add.action do
|
|
23
38
|
spec_add()
|
|
24
39
|
end
|
|
25
40
|
end
|
|
41
|
+
|
|
42
|
+
spec.desc 'Delete a spec (Coming soon).'
|
|
26
43
|
spec.command :delete do |delete|
|
|
27
44
|
delete.action do
|
|
28
45
|
spec_delete()
|
|
29
46
|
end
|
|
30
47
|
end
|
|
48
|
+
|
|
49
|
+
spec.desc 'Search a spec with name (Coming soon).'
|
|
31
50
|
spec.command :search do |search|
|
|
32
51
|
search.action do
|
|
33
52
|
spec_search()
|
|
@@ -10,15 +10,15 @@ module BigKeeper
|
|
|
10
10
|
Logger.error("parameter conflict: [--all] | [module_names]")
|
|
11
11
|
return
|
|
12
12
|
end
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
Logger.highlight('Start spec analyze...')
|
|
14
|
+
Logger.default(Time.now.to_s)
|
|
15
15
|
|
|
16
16
|
# Parse Bigkeeper file
|
|
17
17
|
# BigkeeperParser.parse("#{path}/Bigkeeper")
|
|
18
18
|
# module_names = BigkeeperParser.module_names
|
|
19
19
|
|
|
20
20
|
# find modules
|
|
21
|
-
|
|
21
|
+
Logger.highlight('Get all modules...')
|
|
22
22
|
module_names = []
|
|
23
23
|
pod_path = path+"/Pods/"
|
|
24
24
|
dir = Dir.open(pod_path)
|
|
@@ -28,16 +28,11 @@ module BigKeeper
|
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
is_legal = true
|
|
32
31
|
for input_moudle_name in find_module_names do
|
|
33
32
|
if !module_names.include?(input_moudle_name)
|
|
34
|
-
is_legal = false
|
|
35
33
|
Logger.error("["+input_moudle_name+"] not exist.")
|
|
36
34
|
end
|
|
37
35
|
end
|
|
38
|
-
if !is_legal
|
|
39
|
-
return
|
|
40
|
-
end
|
|
41
36
|
|
|
42
37
|
# setup modules
|
|
43
38
|
module_list = []
|
|
@@ -54,19 +49,21 @@ module BigKeeper
|
|
|
54
49
|
end
|
|
55
50
|
# analyze modules spec
|
|
56
51
|
|
|
57
|
-
|
|
52
|
+
Logger.highlight('Analyze modules...')
|
|
53
|
+
Logger.default(Time.now.to_s)
|
|
58
54
|
file_index = 0
|
|
59
55
|
for library in module_list do
|
|
60
56
|
if is_all || find_module_names.include?(library.name)
|
|
61
|
-
|
|
57
|
+
Logger.default('Analyzing ' + library.name)
|
|
62
58
|
file_index = file_index + library.file_list.size
|
|
63
59
|
library.spec_dependece_library(module_keyword_map.clone)#(Hash.new(module_keyword_map)).to_hash)
|
|
64
60
|
progress = (file_index*100.0)/file_count
|
|
65
61
|
progress = format("%.02f", progress).to_f
|
|
66
|
-
|
|
62
|
+
Logger.default('progress >>>> ' + String(progress) + '% [' + library.name + ' done] ')
|
|
67
63
|
end
|
|
68
64
|
end
|
|
69
|
-
|
|
65
|
+
Logger.highlight('Analyze complete.')
|
|
66
|
+
Logger.default(Time.now.to_s)
|
|
70
67
|
|
|
71
68
|
# log spec info
|
|
72
69
|
for library in module_list do
|
|
@@ -13,7 +13,7 @@ module BigKeeper
|
|
|
13
13
|
has_branch = false
|
|
14
14
|
IO.popen("cd #{path}; git branch -r") do |io|
|
|
15
15
|
io.each do |line|
|
|
16
|
-
has_branch = true if line.include?
|
|
16
|
+
has_branch = true if line.include? branch_name
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
has_branch
|
|
@@ -91,7 +91,7 @@ module BigKeeper
|
|
|
91
91
|
has_commits = false
|
|
92
92
|
IO.popen("cd #{path}; git log --branches --not --remotes") do |io|
|
|
93
93
|
io.each do |line|
|
|
94
|
-
has_commits = true if line.include? branch_name
|
|
94
|
+
has_commits = true if line.include? "(#{branch_name})"
|
|
95
95
|
end
|
|
96
96
|
end
|
|
97
97
|
has_commits
|
data/lib/big_keeper/version.rb
CHANGED
data/resources/banner.png
CHANGED
|
Binary file
|
|
Binary file
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: bigkeeper
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.8.
|
|
4
|
+
version: 0.8.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- mmoaay
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2018-07-
|
|
11
|
+
date: 2018-07-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: gli
|
|
@@ -247,10 +247,12 @@ files:
|
|
|
247
247
|
- docs/en-US/README.md
|
|
248
248
|
- docs/zh-CN/BIGKEEPER_FILE.md
|
|
249
249
|
- docs/zh-CN/FEATURE&HOTFIX.md
|
|
250
|
+
- docs/zh-CN/IMAGE.md
|
|
250
251
|
- docs/zh-CN/PODFILE.md
|
|
251
252
|
- docs/zh-CN/README.md
|
|
252
253
|
- docs/zh-CN/RECOMMEND.md
|
|
253
254
|
- docs/zh-CN/RELEASE.md
|
|
255
|
+
- docs/zh-CN/SPEC.md
|
|
254
256
|
- lib/big_keeper.rb
|
|
255
257
|
- lib/big_keeper/command/feature&hotfix.rb
|
|
256
258
|
- lib/big_keeper/command/feature&hotfix/delete.rb
|
|
@@ -265,8 +267,6 @@ files:
|
|
|
265
267
|
- lib/big_keeper/command/feature&hotfix/update.rb
|
|
266
268
|
- lib/big_keeper/command/image.rb
|
|
267
269
|
- lib/big_keeper/command/image/image.rb
|
|
268
|
-
- lib/big_keeper/command/module.rb
|
|
269
|
-
- lib/big_keeper/command/module/list.rb
|
|
270
270
|
- lib/big_keeper/command/pod.rb
|
|
271
271
|
- lib/big_keeper/command/pod/podfile.rb
|
|
272
272
|
- lib/big_keeper/command/release.rb
|
|
@@ -276,6 +276,7 @@ files:
|
|
|
276
276
|
- lib/big_keeper/command/spec/add.rb
|
|
277
277
|
- lib/big_keeper/command/spec/analyze.rb
|
|
278
278
|
- lib/big_keeper/command/spec/delete.rb
|
|
279
|
+
- lib/big_keeper/command/spec/list.rb
|
|
279
280
|
- lib/big_keeper/command/spec/search.rb
|
|
280
281
|
- lib/big_keeper/dependency/dep_gradle_operator.rb
|
|
281
282
|
- lib/big_keeper/dependency/dep_operator.rb
|
|
@@ -307,35 +308,11 @@ files:
|
|
|
307
308
|
- lib/big_keeper/util/xcode_operator.rb
|
|
308
309
|
- lib/big_keeper/version.rb
|
|
309
310
|
- resources/banner.png
|
|
311
|
+
- resources/command.png
|
|
310
312
|
- resources/keynote/big-keeper-readme-example.key
|
|
311
313
|
- resources/keynote/big-keeper-readme-feature.key
|
|
312
|
-
- resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.001.jpeg
|
|
313
|
-
- resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.002.jpeg
|
|
314
|
-
- resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.003.jpeg
|
|
315
|
-
- resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.004.jpeg
|
|
316
|
-
- resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.005.jpeg
|
|
317
|
-
- resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.006.jpeg
|
|
318
|
-
- resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.007.jpeg
|
|
319
|
-
- resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.008.jpeg
|
|
320
|
-
- resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.009.jpeg
|
|
321
|
-
- resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.010.jpeg
|
|
322
|
-
- resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.011.jpeg
|
|
323
|
-
- resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.012.jpeg
|
|
324
|
-
- resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.013.jpeg
|
|
325
|
-
- resources/keynote/big-keeper-readme-feature/big-keeper-readme-feature.014.jpeg
|
|
326
314
|
- resources/keynote/big-keeper-readme-release.key
|
|
327
315
|
- resources/readme/big-keeper-readme.001.png
|
|
328
|
-
- resources/readme/big-keeper-readme.002.png
|
|
329
|
-
- resources/readme/big-keeper-readme.003.png
|
|
330
|
-
- resources/readme/big-keeper-readme.004.png
|
|
331
|
-
- resources/readme/big-keeper-readme.005.png
|
|
332
|
-
- resources/readme/big-keeper-readme.006.png
|
|
333
|
-
- resources/readme/big-keeper-readme.007.png
|
|
334
|
-
- resources/readme/big-keeper-readme.008.png
|
|
335
|
-
- resources/readme/big-keeper-readme.009.png
|
|
336
|
-
- resources/readme/big-keeper-readme.010.png
|
|
337
|
-
- resources/readme/big-keeper-readme.011.png
|
|
338
|
-
- resources/readme/big-keeper-readme.012.png
|
|
339
316
|
homepage: https://github.com/BigKeeper/bigkeeper
|
|
340
317
|
licenses:
|
|
341
318
|
- MIT
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
require 'big_keeper/command/module/list'
|
|
2
|
-
|
|
3
|
-
module BigKeeper
|
|
4
|
-
|
|
5
|
-
def self.module_command
|
|
6
|
-
|
|
7
|
-
desc 'Module operation'
|
|
8
|
-
command :module do | mod |
|
|
9
|
-
|
|
10
|
-
mod.desc 'module'
|
|
11
|
-
mod.desc 'Prase module relevant infomation.'
|
|
12
|
-
mod.command :list do | list |
|
|
13
|
-
list.action do |global_options, options, args|
|
|
14
|
-
path = File.expand_path(global_options[:path])
|
|
15
|
-
version = global_options[:ver]
|
|
16
|
-
user = global_options[:user].gsub(/[^0-9A-Za-z]/, '').downcase
|
|
17
|
-
|
|
18
|
-
module_list(path, user, options)
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|