qcloudhive 0.1.0
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 +7 -0
- data/.idea/.rakeTasks +7 -0
- data/.idea/Hive.iml +54 -0
- data/.idea/dictionaries/dongzhao.xml +7 -0
- data/.idea/misc.xml +4 -0
- data/.idea/modules.xml +8 -0
- data/.idea/vcs.xml +6 -0
- data/.idea/workspace.xml +699 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Documents/Images/93A5AC58-17D5-4D3F-B5A8-E509CF429BD0.png +0 -0
- data/Documents/Images/C702C824-11B1-47A8-BB15-9F6F14F2B649.png +0 -0
- data/Gem/qcloudhive/.idea/misc.xml +4 -0
- data/Gem/qcloudhive/.idea/modules.xml +8 -0
- data/Gem/qcloudhive/.idea/qcloudhive.iml +8 -0
- data/Gem/qcloudhive/.idea/workspace.xml +383 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +122 -0
- data/LICENSE.txt +21 -0
- data/README.md +273 -0
- data/Rakefile +5 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/exe/Hive +302 -0
- data/lib/qcloudhive.rb +16 -0
- data/lib/qcloudhive/config.rb +176 -0
- data/lib/qcloudhive/feature.rb +92 -0
- data/lib/qcloudhive/framework.rb +192 -0
- data/lib/qcloudhive/git_helper.rb +75 -0
- data/lib/qcloudhive/gitlab.rb +69 -0
- data/lib/qcloudhive/manifest.rb +346 -0
- data/lib/qcloudhive/module.rb +228 -0
- data/lib/qcloudhive/pod_helper.rb +119 -0
- data/lib/qcloudhive/product.rb +32 -0
- data/lib/qcloudhive/project.rb +108 -0
- data/lib/qcloudhive/repo.rb +177 -0
- data/lib/qcloudhive/spec_helper.rb +45 -0
- data/lib/qcloudhive/utils.rb +46 -0
- data/lib/qcloudhive/version.rb +3 -0
- data/lib/qcloudhive/xcodeproj.rb +163 -0
- data/qcloudhive.gemspec +43 -0
- data/resources/shellscriptes/HiveApp.sh +156 -0
- data/resources/shellscriptes/HiveFramework +158 -0
- data/resources/shellscriptes/build_framework.sh +76 -0
- data/resources/templates/AppDefaultTemplate/.gitignore +41 -0
- data/resources/templates/AppDefaultTemplate/AppDefaultTemplate.xcodeproj/project.pbxproj +290 -0
- data/resources/templates/AppDefaultTemplate/AppDefaultTemplate.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/resources/templates/AppDefaultTemplate/AppDefaultTemplate/Info.plist +24 -0
- data/resources/templates/AppDefaultTemplate/Podfile +9 -0
- data/resources/templates/HiveAppTemplate/.gitignore +41 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate.xcodeproj/project.pbxproj +539 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate/AppDelegate.h +17 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate/AppDelegate.m +51 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate/Assets.xcassets/AppIcon.appiconset/Contents.json +68 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate/Base.lproj/LaunchScreen.storyboard +27 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate/Base.lproj/Main.storyboard +26 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate/Info.plist +45 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate/ViewController.h +15 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate/ViewController.m +29 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplate/main.m +16 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplateTests/HiveAppTemplateTests.m +39 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplateTests/Info.plist +22 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplateUITests/HiveAppTemplateUITests.m +40 -0
- data/resources/templates/HiveAppTemplate/HiveAppTemplateUITests/Info.plist +22 -0
- data/resources/templates/HiveAppTemplate/Podfile +20 -0
- data/resources/templates/commonConf.sh +9 -0
- data/resources/templates/manifests/build.rb +8 -0
- data/resources/templates/manifests/default.xml +12 -0
- data/resources/templates/template.podspec +37 -0
- metadata +321 -0
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,122 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
qcloudhive (0.1.0)
|
5
|
+
cocoapods
|
6
|
+
colorize
|
7
|
+
git
|
8
|
+
gitlab
|
9
|
+
httparty (~> 0.14.0)
|
10
|
+
json (~> 2.0.2)
|
11
|
+
nokogiri
|
12
|
+
parseconfig
|
13
|
+
rake (~> 10.0)
|
14
|
+
terminal-table
|
15
|
+
|
16
|
+
GEM
|
17
|
+
remote: https://rubygems.org/
|
18
|
+
specs:
|
19
|
+
CFPropertyList (2.3.5)
|
20
|
+
activesupport (4.2.8)
|
21
|
+
i18n (~> 0.7)
|
22
|
+
minitest (~> 5.1)
|
23
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
24
|
+
tzinfo (~> 1.1)
|
25
|
+
claide (1.0.1)
|
26
|
+
cocoapods (1.2.0)
|
27
|
+
activesupport (>= 4.0.2, < 5)
|
28
|
+
claide (>= 1.0.1, < 2.0)
|
29
|
+
cocoapods-core (= 1.2.0)
|
30
|
+
cocoapods-deintegrate (>= 1.0.1, < 2.0)
|
31
|
+
cocoapods-downloader (>= 1.1.3, < 2.0)
|
32
|
+
cocoapods-plugins (>= 1.0.0, < 2.0)
|
33
|
+
cocoapods-search (>= 1.0.0, < 2.0)
|
34
|
+
cocoapods-stats (>= 1.0.0, < 2.0)
|
35
|
+
cocoapods-trunk (>= 1.1.2, < 2.0)
|
36
|
+
cocoapods-try (>= 1.1.0, < 2.0)
|
37
|
+
colored (~> 1.2)
|
38
|
+
escape (~> 0.0.4)
|
39
|
+
fourflusher (~> 2.0.1)
|
40
|
+
gh_inspector (~> 1.0)
|
41
|
+
molinillo (~> 0.5.5)
|
42
|
+
nap (~> 1.0)
|
43
|
+
ruby-macho (~> 0.2.5)
|
44
|
+
xcodeproj (>= 1.4.1, < 2.0)
|
45
|
+
cocoapods-core (1.2.0)
|
46
|
+
activesupport (>= 4.0.2, < 5)
|
47
|
+
fuzzy_match (~> 2.0.4)
|
48
|
+
nap (~> 1.0)
|
49
|
+
cocoapods-deintegrate (1.0.1)
|
50
|
+
cocoapods-downloader (1.1.3)
|
51
|
+
cocoapods-plugins (1.0.0)
|
52
|
+
nap
|
53
|
+
cocoapods-search (1.0.0)
|
54
|
+
cocoapods-stats (1.0.0)
|
55
|
+
cocoapods-trunk (1.1.2)
|
56
|
+
nap (>= 0.8, < 2.0)
|
57
|
+
netrc (= 0.7.8)
|
58
|
+
cocoapods-try (1.1.0)
|
59
|
+
colored (1.2)
|
60
|
+
colorize (0.8.1)
|
61
|
+
diff-lcs (1.3)
|
62
|
+
escape (0.0.4)
|
63
|
+
fourflusher (2.0.1)
|
64
|
+
fuzzy_match (2.0.4)
|
65
|
+
gh_inspector (1.0.3)
|
66
|
+
git (1.3.0)
|
67
|
+
gitlab (3.6.1)
|
68
|
+
httparty
|
69
|
+
terminal-table
|
70
|
+
httparty (0.14.0)
|
71
|
+
multi_xml (>= 0.5.2)
|
72
|
+
i18n (0.8.1)
|
73
|
+
json (2.0.2)
|
74
|
+
mini_portile2 (2.1.0)
|
75
|
+
minitest (5.10.1)
|
76
|
+
molinillo (0.5.7)
|
77
|
+
multi_xml (0.6.0)
|
78
|
+
nanaimo (0.2.3)
|
79
|
+
nap (1.1.0)
|
80
|
+
netrc (0.7.8)
|
81
|
+
nokogiri (1.7.0.1)
|
82
|
+
mini_portile2 (~> 2.1.0)
|
83
|
+
parseconfig (1.0.8)
|
84
|
+
rake (10.5.0)
|
85
|
+
rspec (3.5.0)
|
86
|
+
rspec-core (~> 3.5.0)
|
87
|
+
rspec-expectations (~> 3.5.0)
|
88
|
+
rspec-mocks (~> 3.5.0)
|
89
|
+
rspec-core (3.5.4)
|
90
|
+
rspec-support (~> 3.5.0)
|
91
|
+
rspec-expectations (3.5.0)
|
92
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
93
|
+
rspec-support (~> 3.5.0)
|
94
|
+
rspec-mocks (3.5.0)
|
95
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
96
|
+
rspec-support (~> 3.5.0)
|
97
|
+
rspec-support (3.5.0)
|
98
|
+
ruby-macho (0.2.6)
|
99
|
+
terminal-table (1.7.3)
|
100
|
+
unicode-display_width (~> 1.1.1)
|
101
|
+
thread_safe (0.3.6)
|
102
|
+
tzinfo (1.2.2)
|
103
|
+
thread_safe (~> 0.1)
|
104
|
+
unicode-display_width (1.1.3)
|
105
|
+
xcodeproj (1.4.2)
|
106
|
+
CFPropertyList (~> 2.3.3)
|
107
|
+
activesupport (>= 3)
|
108
|
+
claide (>= 1.0.1, < 2.0)
|
109
|
+
colored (~> 1.2)
|
110
|
+
nanaimo (~> 0.2.3)
|
111
|
+
|
112
|
+
PLATFORMS
|
113
|
+
ruby
|
114
|
+
|
115
|
+
DEPENDENCIES
|
116
|
+
bundler (~> 1.14)
|
117
|
+
qcloudhive!
|
118
|
+
rake (~> 10.0)
|
119
|
+
rspec
|
120
|
+
|
121
|
+
BUNDLED WITH
|
122
|
+
1.14.6
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2017 stonedong
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,273 @@
|
|
1
|
+
|
2
|
+
# hive iOS多模块管理工具
|
3
|
+
|
4
|
+
腾讯云终端团队,目前需要维护的产品线很多,保守估计目前有5个产品线。而在众多产品线中有非常多的公用模块,这里就涉及到这些共用模块的维护问题,同时还有众多产品线源码管理的问题。我们希望尽可能的复用各个模块,也希望脱离原始的手工维护的噩梦,能够有一个较为先进的代码和产品管理工具。于是hive这个工具就诞生了。
|
5
|
+
|
6
|
+
基于工具链:repo+git+cocoapods进行多模块管理和维护。
|
7
|
+
|
8
|
+
|
9
|
+
|
10
|
+
## Install
|
11
|
+
|
12
|
+
### 工具链搭建
|
13
|
+
|
14
|
+
#### repo
|
15
|
+
|
16
|
+
参考:[https://github.com/esrlabs/git-repo](https://github.com/esrlabs/git-repo)
|
17
|
+
|
18
|
+
~~~
|
19
|
+
mkdir ~/bin
|
20
|
+
PATH=~/bin:$PATH
|
21
|
+
git clone http://git.code.oa.com/stonedong/git-repo.git
|
22
|
+
cp git-repo/repo ~/bin/repo
|
23
|
+
chmod a+x ~/bin/repo
|
24
|
+
~~~
|
25
|
+
|
26
|
+
同时需要将~/bin目录添加到环境变量PATH中,请编辑文件~/.bashrc添加以下内容
|
27
|
+
~~~
|
28
|
+
export PATH=$PATH:~/bin
|
29
|
+
~~~
|
30
|
+
|
31
|
+
安装过程中出现问题可以参考:
|
32
|
+
http://git.code.oa.com/stonedong/git-repo.git
|
33
|
+
|
34
|
+
关于repo的更多用法请参考:[Repo command reference](http://source.android.com/source/using-repo.html)
|
35
|
+
|
36
|
+
|
37
|
+
#### Git
|
38
|
+
|
39
|
+
使用Xcode自带的Git。
|
40
|
+
|
41
|
+
#### Cocoapods
|
42
|
+
|
43
|
+
> 如果您当前的ruby版本低于2.2.0,请跟随文章[《MAC Ruby版本需要升级至2.2.2以上》](http://www.jianshu.com/p/8b13987f392a)升级您的ruby。
|
44
|
+
|
45
|
+
~~~
|
46
|
+
[sudo] gem install cocoapods
|
47
|
+
~~~
|
48
|
+
|
49
|
+
### hive 安装
|
50
|
+
|
51
|
+
~~~
|
52
|
+
git clone http://git.code.oa.com/qcloud-terminal/hive.git
|
53
|
+
cd hive
|
54
|
+
gem build qcloudhive.gemspec
|
55
|
+
sudo gem install qcloudhive-0.1.0.gem
|
56
|
+
~~~
|
57
|
+
|
58
|
+
如果您当前在开发网环境下,运行gem命令的时候,请加上代理:
|
59
|
+
|
60
|
+
~~~
|
61
|
+
sudo gem install qcloudhive-0.1.0.gem --http-proxy http://dev-proxy.oa.com:8080
|
62
|
+
~~~
|
63
|
+
|
64
|
+
如果在安装过程中出现权限问题,尤其是MAC OS 10.11以上的系统版本:
|
65
|
+

|
66
|
+
|
67
|
+
请按照以下方法关闭系统的保护:
|
68
|
+
|
69
|
+
附关闭方法:重启,开机按住Command + R,以Recovery分区启动,然后选择以下方式:图形化操作在Security Configuration中关闭Enforce System Integrity Protection命令行操作
|
70
|
+
|
71
|
+
~~~
|
72
|
+
csrutil disable
|
73
|
+
~~~
|
74
|
+
|
75
|
+
## Usage
|
76
|
+
|
77
|
+
|
78
|
+
## 支持命令集
|
79
|
+
|
80
|
+
在使用之前请在Home目录下面建立.hiveconfig配置文件,内容为:
|
81
|
+
|
82
|
+
~~~
|
83
|
+
[CodeOA]
|
84
|
+
private_token = 您自己的git.code.oa.com上的private_token
|
85
|
+
team = 您自己的团队名称例如[qcloud-terminal]
|
86
|
+
~~~
|
87
|
+
|
88
|
+
> 以.开头的文件在linux系统中为隐藏文件,创建文件可使用命令 touch ~/.hiveconfig。编辑文件推荐使用atom。安装了atom的命令行版本后,可以运行atom ~/.hiveconfig来编辑改文件
|
89
|
+
|
90
|
+
|
91
|
+
命令以以下方式运行:
|
92
|
+
|
93
|
+
~~~
|
94
|
+
hive [sub commnad namespace] [sub command] [parameters]
|
95
|
+
~~~
|
96
|
+
|
97
|
+
支持的命令集:
|
98
|
+
|
99
|
+
|子命令空间|子命令|释义|支持参数| and more|
|
100
|
+
|:--|:--|:--|:--|:--|
|
101
|
+
|module|add|添加一个子模块到当前项目中|-------|该命令会检测codeoa上是否存在相关git仓库,不存在则创建对应的Git仓库,如果存在则将其添加到对应当前项目中,并检查其在cocoapods specs上的依赖关系,并以同样的相对路径将依赖引入到当前工程|
|
102
|
+
| |||-n name |子模块名称(require)|
|
103
|
+
| |||-p path|子模块在工程中的相对路径(option)|
|
104
|
+
| |release|发布当前模块到cocoapods specs|-------|---------------------------------------|
|
105
|
+
| |||-n name |子模块名称(require)|
|
106
|
+
| |dislink|删除对于某个模块的源码引用|-------|hive开发模式是方便在源码开发调试和pods发布版本之间切换的模式,使用该名后,将模块的源码引用从项目中移除|
|
107
|
+
| |||-n name |子模块名称(require)|
|
108
|
+
|manifest| push|提交本地对于repo的配置文件manifest的修改|无||
|
109
|
+
|framework|build|根据名称将当前项目中所有的模块打包成一个framework|-------|---------------------------------------|
|
110
|
+
| |||-n name |子模块名称(require)|
|
111
|
+
|project|init|初始化项目|-------|该命令会根据对应的名字创建一个新的项目包括:CodeOA上的Git仓库,用于存储repo配置,本地对应的目录。如果CodeOA上已经存在对应的仓库,则不会创建,直接Checkout。|
|
112
|
+
| |||-n name |子模块名称(require)|
|
113
|
+
|product|init|创建Demo工程|------|该命令回在当前目录下,根据对应的名称创建一个崭新的Demo工程|
|
114
|
+
| |||-n name |子模块名称(require)|
|
115
|
+
| |update|更新Demo产品|------|该命令会在所有产品下面运行pod update命令|
|
116
|
+
|repo|status|各子模块状态检查|------||
|
117
|
+
| |request|将当前所在的模块提交Merge Request|------||
|
118
|
+
|feature|commit|在有修改的模块当中调用git commit -m |------||
|
119
|
+
| |||-m message |提交Commit Message(require)|
|
120
|
+
| |push|推送本地的修改到服务器|------||
|
121
|
+
|
122
|
+
### Checkout一个项目:
|
123
|
+
|
124
|
+
在配置好工具链之后,就可以Checkout项目进行开发了。以QCloudSDK为例:
|
125
|
+
|
126
|
+
~~~
|
127
|
+
hive project init -n name
|
128
|
+
~~~
|
129
|
+
|
130
|
+
Checkout后记得将当前的项目切到正在开发的分支上,例如切到主分支:
|
131
|
+
|
132
|
+
~~~
|
133
|
+
repo start master --all
|
134
|
+
~~~
|
135
|
+
|
136
|
+
### Crate a hive 项目
|
137
|
+
|
138
|
+
~~~
|
139
|
+
hive project init -n name
|
140
|
+
~~~
|
141
|
+
|
142
|
+
|
143
|
+
|
144
|
+
### 创建子模块命令
|
145
|
+
|
146
|
+
~~~
|
147
|
+
hive module add -n name
|
148
|
+
~~~
|
149
|
+
|
150
|
+
> 新版本不用指定--project-name 会自动从url中提取PATH部分作为projectname
|
151
|
+
|
152
|
+
|
153
|
+
### 同步配置文件manifest
|
154
|
+
|
155
|
+
~~~
|
156
|
+
hive manifest push
|
157
|
+
~~~
|
158
|
+
|
159
|
+
### 打包Framework命令
|
160
|
+
|
161
|
+
运行该命令,将会按照指定的名称,将产品目录下面所有的podspec合成并打包成一个framework,输出到当前目录
|
162
|
+
|
163
|
+
~~~
|
164
|
+
hive framework build [-n framework-name]
|
165
|
+
~~~
|
166
|
+
|
167
|
+
|
168
|
+
### 添加已经存在的子模块到manifest命令
|
169
|
+
|
170
|
+
~~~
|
171
|
+
hive module add -n[name] -p [local relevete path]
|
172
|
+
~~~
|
173
|
+
|
174
|
+
添加完成后,需要进行拉取代码的话请使用命令
|
175
|
+
|
176
|
+
~~~
|
177
|
+
repo sync
|
178
|
+
~~~
|
179
|
+
|
180
|
+
> 该命令目前不会解决子模块的依赖问题,当引入一个模块之后,需要手动的将其依赖的其他子模块引入到工程之中!!!!!!!!。自动支持依赖将会在后续版本中支持。
|
181
|
+
|
182
|
+
### 创建DemoAPP命令
|
183
|
+
|
184
|
+
> 创建完成完成Demo APP不会自动添加到manifest里面,如果需要添加到manifest里面请调用add-module子命令
|
185
|
+
|
186
|
+
~~~
|
187
|
+
hive product create -n[name]
|
188
|
+
~~~
|
189
|
+
|
190
|
+
## 开发模式简介
|
191
|
+
|
192
|
+
首先hive构建的是一整套组件化开发的基础工具链。所谓组件化开发,就是将程序按照功能打散成一个个组件。然后通过组件之间组合构建出一个产品,这个产品可能是APP也可能像云这样是Framework。同时还解决了一个协作的问题,每个组件都是一个git库,每个组件都有可能被多人开发,而一个产品会涉及到多个组件的调用。这种使用我们按照单个组件的维护看,我们使用git-flow的模式。master为发布分支,其他分支为开发分支。而从整体产品的角度看,则是所有组件的库统一切到一个分支。则构成了当前产品的开发环境。
|
193
|
+
|
194
|
+
比如COS产品,涉及到QCloudCore和QCloudHTTPMock模块,当两个模块都切到master分支的时候,就构成了COS产品的一个发布环境,当都切到check分支的时候,就构成了产品特性为**的开发环境。这里需要强调的是,master分支是不能提交更改的。只能通过merge-request的方式来合并其他分支的修改。
|
195
|
+
|
196
|
+
在开发的过程中,我们强烈建议引入CR,因此我们使用merge request的方式来强制CR。
|
197
|
+
|
198
|
+
|
199
|
+
### 从零创建一个项目
|
200
|
+
|
201
|
+
首先需要创建一个git repo用来保存manifest文件。这里以创建QCloudSDK项目为例:
|
202
|
+
|
203
|
+
~~~
|
204
|
+
hive project init -n QCloudSDK
|
205
|
+
~~~
|
206
|
+
|
207
|
+
project init命令会自动去git.code.oa.com上检查是否存在对应的项目,如果不存在则会调用接口创建该项目。
|
208
|
+
|
209
|
+
> 注意,腾讯云的终端同学,项目情使用QCLOUD前缀
|
210
|
+
|
211
|
+
建好之后便可添加依赖的模块或者创建demo项目
|
212
|
+
|
213
|
+
比如使用下述命令引入一个模块QCloudFileUtils,同样如果该模块不存在,则会新建该模块
|
214
|
+
|
215
|
+
~~~
|
216
|
+
hive module add -n QCloudFileUtils
|
217
|
+
~~~
|
218
|
+
|
219
|
+
使用下述命令创建一个Demo
|
220
|
+
|
221
|
+
~~~
|
222
|
+
hive product init -n XXXX
|
223
|
+
~~~
|
224
|
+
|
225
|
+
demo会建立在当前目录下面,需要注意的是Demo不会添加到整个项目的依赖中,需要手工添加。
|
226
|
+
|
227
|
+
|
228
|
+
### 使用已有项目
|
229
|
+
|
230
|
+
通用如果你是使用已经存在的项目则可以直接
|
231
|
+
|
232
|
+
~~~
|
233
|
+
hive project init -n QCloudSDK
|
234
|
+
~~~
|
235
|
+
|
236
|
+
#### 同步项目
|
237
|
+
|
238
|
+
当项目已经check到本地,需要下载远端的修改,执行下述名。
|
239
|
+
~~~
|
240
|
+
repo sync
|
241
|
+
~~~
|
242
|
+
|
243
|
+
> 在同步完成后,子模块的分支会切换到具体的commit版本上去,此时需要运行`repo start [project name] --all` 来重新切换分支
|
244
|
+
|
245
|
+
在同步的过程中会发生git的错误,当出现错误的时候请到对应的子模块的目录下面进行操作,清除相关错误:
|
246
|
+
|
247
|
+
1. conflict冲突问题
|
248
|
+
2. checkout错误
|
249
|
+
3. 合并commit出错
|
250
|
+
|
251
|
+
修正完错误之后,再次运行repo sync命令
|
252
|
+
|
253
|
+
#### 开发
|
254
|
+
|
255
|
+
在开发代码之前需要首先需要将需求涉及到的模块切到对应分支,比如现在我们有A,B,C三个模块,开发需求upload,现在需要修改A,B模块:
|
256
|
+
|
257
|
+
~~~
|
258
|
+
repo start upload A B
|
259
|
+
~~~
|
260
|
+
|
261
|
+
之后进行代码开发
|
262
|
+
|
263
|
+
#### 提交
|
264
|
+
|
265
|
+
在提交之前使用,使用下述命令来检查各个模块的状态:
|
266
|
+
|
267
|
+
~~~
|
268
|
+
hive repo status
|
269
|
+
~~~
|
270
|
+
|
271
|
+

|
272
|
+
|
273
|
+
然后在各个模块中执行对应的操作之后,进行提交
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "qcloudhive"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start(__FILE__)
|