建立Baseline之repo,manifest

来源:互联网 发布:工业英语电子词典软件 编辑:程序博客网 时间:2024/05/03 19:39
1. 从高通或者谷歌的网站下载repo.git
https://www.codeaurora.org/cgit/quic/la/tools/repo/

Clone 
git://codeaurora.org/quic/la/tools/repo 

由于高通用的是caf-stable分支,所以我们要 
$ git checkout caf-stable 

Push repo.git到服务器: 

2. 把repo上传到本地服务器 
创建 
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 

3. 更改repo脚本
更改~/bin/repo 

取manifest git时需要用到 
REPO_URL = ' http://192.168.5.42:8081/tools/repo' 
REPO_REV = 'caf-stable' 

4. 建立manifest git
ssh -p 29418  hwh@192.168.5.42 gerrit create-project -p All-Projects -n platform/manifest --empty-commit 

在 http://192.168.5.42:8081/上用图形界面创建 platform/manifest 的分支: qmc-8974-la-4.0.2-ref    

$ 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 

$ repo init -u  http://192.168.5.42:8081/platform/manifest.git  -b qmc-8974-la-4.0.2-ref 
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。 

5. 完全push一个git到服务器
git push orgin master 
git push仅仅能push到一个分支,如果想把git里的所有分支都push到服务器上只能用scp把整个git复制到服务器上了。 
scp  ../.. 
或者 
以镜像推送的方式上传代码到 GitHub 服务器上。 
        cd project.git 
        git push –mirror  git@github.com:username/newproject.git 

6. 增加支持git协议
未在本机实验,仅供参考:
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 系统的脚本,或者其他类似的脚本 — 只要能让那个命令变为守护进程并可监控。 

0 0
原创粉丝点击