1. 从高通或者谷歌的网站下载repo.git
Clone
git://codeaurora.org/quic/la/tools/repo
由于高通用的是caf-stable分支,所以我们要
$ git checkout caf-stable
Push repo.git到服务器:
创建
ssh -p 29418
hwh@192.168.5.42 gerrit create-project -p All-Projects -n tools/repo --empty-commit
Push
改.git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url =
ssh://hwh@192.168.5.42:29418/tools/repo 此处改为服务器地址
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "stable"]
remote = origin
merge = refs/heads/stable
[branch "caf-stable"]
remote = origin
merge = refs/heads/caf-stable
git push --tags origin HEAD:refs/heads/caf-stable
更改~/bin/repo
取manifest git时需要用到
REPO_URL = '
http://192.168.5.42:8081/tools/repo'
REPO_REV = 'caf-stable'
ssh -p 29418
hwh@192.168.5.42 gerrit create-project -p All-Projects -n platform/manifest --empty-commit
$ repo init -u
http://192.168.5.42:8081/platform/manifest.git -b qmc-8974-la-4.0.2-ref
fatal: manifest 'default.xml' not available
fatal: manifest default.xml not found
需要新建default文件
从别处复制default.xml到
.repo/manifests,然后改动default.xml
<manifest>
<remote fetch="
http://192.168.5.42:8081" name="origin" review="
http://192.168.5.42:8081"/>
$ cd .repo/manifests
$ git add .
$ git commit -m "XXX"
winva@winva-Lenovo
:~/project-1T/test/qmc-8974-la-4.0.2-ref/.repo/manifests$ git push ssh://hwh@192.168.5.42:29418/platform/manifest
HEAD:refs/for/qmc-8974-la-4.0.2-ref
在服务器上Merge这个commit,然后重新repo init
winva@winva-Lenovo:~/project-1T/test/qmc-8974-la-4.0.2-ref$ ll .repo/
total 20
drwxrwxr-x 5 winva winva 4096 Jan 11 10:04 ./
drwxrwxr-x 3 winva winva 4096 Jan 9 11:37 ../
drwxrwxr-x 3 winva winva 4096 Jan 9 11:50 manifests/
drwxrwxr-x 10 winva winva 4096 Jan 11 10:04 manifests.git/
lrwxrwxrwx 1 winva winva 21 Jan 11 10:04
manifest.xml -> manifests/default.xml
drwxrwxr-x 7 winva winva 4096 Jan 9 11:37 repo/
$ repo sync
这样仅仅通过gerrit,我们也可以建立一个代码下载没有限制,代码上传需要Key的服务器。完全不需要gitosis。
git push orgin master
git push仅仅能push到一个分支,如果想把git里的所有分支都push到服务器上只能用scp把整个git复制到服务器上了。
scp ../..
或者
未在本机实验,仅供参考:
4.9 Git 守护进程
对于提供公共的,非授权的只读访问,我们可以抛弃 HTTP 协议,改用 Git 自己的协议,这主要是出于性能和速度的考虑。Git 协议远比 HTTP 协议高效,因而访问速度也快,所以它能节省很多用户的时间。
重申一下,这一点只适用于非授权的只读访问。如果建在防火墙之外的服务器上,那么它所提供的服务应该只是那些公开的只读项目。如果是在防火墙之内的 服务器上,可用于支撑大量参与人员或自动系统(用于持续集成或编译的主机)只读访问的项目,这样可以省去逐一配置 SSH 公钥的麻烦。
但不管哪种情形,Git 协议的配置设定都很简单。基本上,只要以守护进程的形式运行该命令即可:
git daemon --reuseaddr --base-path=/opt/git/ /opt/git/
这里的 –reuseaddr 选项表示在重启服务前,不等之前的连接超时就立即重启。而 –base-path 选项则允许克隆项目时不必给出完整路径。最后面的路径告诉 Git 守护进程允许开放给用户访问的仓库目录。假如有防火墙,则需要为该主机的 9418 端口设置为允许通信。
以守护进程的形式运行该进程的方法有很多,但主要还得看用的是什么操作系统。在 Ubuntu 主机上,可以用 Upstart 脚本达成。编辑该文件:
/etc/event.d/local-git-daemon
加入以下内容:
start on startup
stop on shutdown
exec /usr/bin/git daemon \
--user=git --group=git \
--reuseaddr \
--base-path=/opt/git/ \
/opt/git/
respawn
出于安全考虑,强烈建议用一个对仓库只有读取权限的用户身份来运行该进程 — 只需要简单地新建一个名为 git-ro 的用户(译注:新建用户默认对仓库文件不具备写权限,但这取决于仓库目录的权限设定。务必确认git-ro 对仓库只能读不能写。),并用它的身份来启动进程。这里为了简化,后面我们还是用之前运行 Gitosis 的用户 ‘git’。
这样一来,当你重启计算机时,Git 进程也会自动启动。要是进程意外退出或者被杀掉,也会自行重启。在设置完成后,不重启计算机就启动该守护进程,可以运行:
initctl start local-git-daemon
而在其他操作系统上,可以用 xinetd,或者 sysvinit 系统的脚本,或者其他类似的脚本 — 只要能让那个命令变为守护进程并可监控。