31 Oct 2017
直接在 Gradle 中明文写上用户名、密码不仅会涉及安全性问题,更为 Git 的管理带来诸多不便。
有一个变通的方法如下:
新建一个 Gradle 属性文件~/.gradle/gradle.properties
,可以把用户名、密码以变量的形式存入文本:
NEXUS_USER=yourname
NEXUS_PASSWORD=yourpassword
接着在 Gradle 文件中即可引用上述变量了:
allprojects {
repositories {
//jcenter()
maven {
url "http://ip:port/repository/some-central/"
credentials {
username = "${NEXUS_USER}"
password = "${NEXUS_PASSWORD}"
}
}
}
uploadArchives {
configuration = configurations.archives
repositories {
mavenDeployer {
repository(url: "http://ip:port/repository/some-central/") {
authentication(userName: NEXUS_USER, password: NEXUS_PASSWORD)
}
pom.project {
version '2.3.0'
artifactId 'ad'
groupId 'com.something'
packaging 'jar'
description 'A Common Java Library'
}
}
}
30 Oct 2017

这里的 Password 是需要再 Gerrit UI 上生成的:

29 Oct 2017
下述方法适合 Gerrit stable-2.13
-
下载 Gerrit 源码
-
安装 Gerrit 编译工具
-
下载插件
将插件的源码放入 Gerrit 源码的 plugins 目录下
需要注意的是,插件的版本要和 Gerrit 源码的版本匹配,建议 check 相应的 tag
-
编译插件
cd gerrit
bazel build plugins/<plugin-name>
-
提取编译后的插件
通常编译后的插件被放在buck-out/gen/plugins/<plugin-name>/<plugin-name>.jar
当然你也可以直接使用find
命令搜索出来
-
Gerrit 服务器部署
将编译后的插件拷贝到 Gerrit 服务器的 plugins 目录,最后重启 Gerrit 服务
11 Oct 2017
至于为什么不用git submodule
来管理代码库依赖,主要还是因为git submodule
的坑太多了,需要对 git 有足够的经验还能驾驭好。各位可以参考如下文章:
创建 Repo 项目
git submodule 使用指南
理解 Git 子模块
git submodule 的坑
Why your company shouldn’t use Git submodules
所以我们决定使用 Repo 来管理代码库依赖
-
安装 Repo
brew install repo
-
创建 Repo 项目
Repo 项目是基于 Manifest 文件的,一般会为 Manifest 建立一个独立的 Git 仓库,在这个仓库中保持一个命名为default.xml
的项目描述文件,这个文件名是固定的。
-
编写项目描述文件
一个简单的default.xml
文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="origin"
fetch=".."
review="http://ip:port/" />
<default revision="master" remote="origin" sync-j="4" />
<project path="proj1" name="proj1.git" />
<project path="proj2" name="proj2.git" />
</manifest>
-
对 Manifest 的管理
对 Manifest 的管理与 gitosis 很类似,repo 库中出了包含项目 git 库外,同时包含了项目管理 git 库(名称固定为 manifests
,位于 .repo
目录中),就是前面我们存放default.xml
的那个独立库。当需要修改 Repo 项目配置的时候,可以进入到这个 git 库中,接着如操作一个普通的 git 库一样修改、提交。
.repo 目录结构大概是这样子的:
.repo_fetchtimes.json
manifest.xml -> manifests/default.xml
manifests
manifests.git
project-objects
project.list
projects
repo
如果你能具体看一下各文件夹内容的,就会发现,里面包含了所有项目的裸库和项目列表。
-
关于repo init -b
可以使用 repo init -b [branch]
来拉取不同的分支,这是如何做到的呢?
只需在manifests
管理仓库中建立相应的branch`即可,比如,我们在
manifests
仓库中建立一个
develop
分支,并且配置了不同的
default.xml
文件。接着就可以使用
repo init -b develop
``来签出相应的 repo 分支了。
与Gerrit 集成
Gerrit Code Review
使用Repo工作
-
拉取项目
mkdir folder
cd folder
repo init -u ssh://[email protected]:port/ProjectManifest.git --repo-url https://github.com/xlncz/mirror-git-repo.git
注意上述命令中的 —repo-url
是一个我搭建在 github 上的的 google 镜像库,否则会直接向 GOOGLE 请求更新 Repo 工具。
其他备用的镜像库:https://code.csdn.net/kangear/git-repo.git
-
建立分支
repo start master —all
master
为分支名,根据需要可建立不同的分支名
-
查看当前分支
repo branch
可能的输出:
* master | in all projects
-
帮助文档
在使用过程中可随时调出某个命令的帮助文档:
repo help upload
更多关于 Repo 命令的使用可以查阅 这里