一: repo 简介
请转到一下连接进行查看
二:Android manifest的构成
manifests.git
使用如下命令:
$repo init -u https://android.googlesource.com/platform/manifests
就会初始化repo成功.
但是我们要管理自己的仓库,所以要建立一个自己的manifests.git.
这个manifests的内容最简单时是一个default.xml.
default.xml内容如下:
<?xml version="1.0" encoding="UTF-8" ?>
<manifest>
<remote name="local"
fetch="ssh://user.name@192.168.1.100:29418"
review="http://192.168.1.100:82"/>
<default remote="local" revision="master"/>
<project path="hello" name="helo"/>
</manifest>
可以看到,根元素manifest,里边定义了remote,default,project.
remote可以多个,每个定义了一个远程拉取仓库, fetch是仓库的url, 可以使用”..”表示使用repo init -u url里的url
default则设置每个项目的默认仓库和默认分支
project定义了一个项目,它指明一个远程仓库,和clone到本地来后的目录名称. name为项目的远程仓库名。
这里使用的是ssh的方式,进行的拉起。
在使用之前先设置一下 url
git config --global url."ssh://xxx.yyy".insteadOf "ssh://user.name"
使用自己在服务器上的名字,替换xml中的 ssh://user.name
review 的地方,设置网址 或者 localhost,使用localhost 需要制定代理的端口号。
这里的82 为nginx 代理的端口号。 在浏览器中输入 ip:82/ssh_info 可以自动查到gerrit 使用的端口号。
三: repo 使用
可以参考 一下连接:
当代码 repo sync 结束之后。
这是本地的代码是没有branch的, 需要使用 repo start branchmame --all 为本地的 所有的git 创建一个分支
从本地上传服务器时,可以使用repo upload 或者进入某个git 目录, 执行git push 的操作。
注: repo upload 的时候,使用的name 是git global 时配置的name ,这个name 可能和服务器端的name 不一致。
解决方案:
如果没有保持一致,可以在对象项目的 .git/config 里边添加
username 字段来设置
[review "127.0.0.1:82"]
username=admin
https://github.com/yasuaki/repo-help-ja/blob/master/repo-upload.txt
http://www.worldhello.net/2010/11/10/2059.html https://gerrit-review.googlesource.com/Documentation/user-upload.html#_repo_upload
常用参数:
-u:指定一个URL,其连接到一个maniest仓库
-m :在manifest仓库中选择一个xml文件
-b:选择一个maniest仓库中的一个特殊的分支
--repo-url:设定repo的版本库地址。
--repo-branch:设定需要检出的分支。
--no-repo-verify:设定不要对repo的里程碑签名进行严格的验证。
四: 其他
git rebase
可以解决大多数commit 丢失 change-ID 的问题,
但是第一个丢失并不能解决
参考文章
Android Repo的manifest XML文件格式
Repo全解之自己搭建repo仓库
. Gerrit代码审核服务器
http://www.worldhello.net/gotgit/05-git-server/055-gerrit.html Android 源码
repo 初始化
http://www.360doc.com/content/14/1206/01/20294498_430734224.shtml
Android下的配置管理之道之repo的使用
如何搭建开源code review gerrit服务器