1. 配置repo

1.1  下载git-repo.git(B端)

mkdir -p ~/gitCfg
cd ~/gitCfg
git clone https://gerrit.googlesource.com/git-repo git-repo.git

如果上面的地址无法连接,可以尝试下面的地址:

git clone https://review.mfunz.com/git-repo git-repo.git

1.2 配置repo(B端)

a) 将git-repo.git目录下的repo拷贝到 /usr/bin:

cd git-repo.git
sudo cp repo /usr/bin/repo_gitadmin

b) 修改 repo

vi /usr/bin/repo_gitadmin

修改

REPO_URL = 'https://gerrit.googlesource.com/git-repo'
REPO_REV = 'stable'

REPO_URL = /home/gitadmin/gitCfg/git-repo.git
REPO_REV = 'master'

其中,

REPO_URL: repo 所调用库和管理引用仓库;

REPO_REV: 本文设置分支为master,可用命令git branch查看:

git branch -avv 

2. 创建版本根目录(A端)

2.1 如果已经存在 /home/git/repositories 目录,就不需要创建,否则:

sudo su git
cd /home/git
mkdir repositories

2.2 初始化manifest仓库

cd repositories
git init --bare 17435/manifest.git

3. 配置default.xml文件(B端)
default.xml是跟Android代码配套的,可参考google Android源码下的default.xml(.repo/manifests/default.xml)进行修改。

3.1 克隆manifest.git

mkdir /home/gitadmin/17435
cd /home/gitadmin/17435
git clone git@192.168.1.126:17435/manifest.git

3.2 配置default.xml

cd manifest
vi default.xml

本文的配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<manifest> <remote name="origin"
fetch="git://192.168.1.126" />
<default revision="master"
remote="origin"
sync-j="4" /> <project path="build" name="platform/build" groups="pdk" >
<copyfile src="core/root.mk" dest="Makefile" />
</project>
<project path="abi/cpp" name="platform/abi/cpp" groups="pdk" /> ... ... </manifest>

将上面的default.xml 文件push 到仓库:

git add .
git commit -m "Init Commit"
git push 或者 git push --all

 

4. 建立相关的git 仓库(A端)

4.1 获取需要新建的仓库目录列表

cd /home/git/repositories/17435
cat default.xml | cut -d '"' -f 4 > repos_17435.txt

在repos_17435.txt中删除不必要的行,如manifest, Makefile等。

4.2 新建脚本repos_17435.sh

#/bin/bash
set -x
set -e
pwd=${PWD} cd /home/git/repositories/17435
while read line; do
if [ -z "$line" ]; then
echo $work_dir not exist !!!!!!!!!! 1>&2
continue
fi
git init --bare $line.git
echo ==== $line
pwd
done

4.3 使用如下命令新建仓库

cat repos_17435.txt | . repos_17435.sh

4.4 修改仓库的文件属性

sudo chmod 777 -R /home/git/repositories/17435

5. 上传代码到仓库(B端)

5.1 拷贝Android代码到目录,

/home/gitadmin/17435/src

并清除其中git和svn等版本控制信息。

5.2 通过default.xml得到需要上传的仓库目录,并保存在src_17435.txt中

cd /home/gitadmin/17435/src
cat /home/gitadmin/17435/manifest/default.xml | cut -d '"' -f 2 > src_17435.txt

编辑src_17435.txt,清除不必要的行。

5.3 新建脚本src_17435.sh如下:

#/bin/bash

set -x
set -e para1=
work_dir=$1 pwd=${PWD} while read line; do
line1=${line%%/*}
if [ -z "$line" ]; then
echo $work_dir not exist !!!!!!!!!!!! 1>&2
continue
fi
if [ $(ls -A $pwd/$line | wc -l) -eq 0 ]; then
echo $work_dir empty !!!!!!!!!!!! 1>&2
continue
fi
workdir=$pwd/$line
echo ==== $workdir
cd $workdir
rm -rf .git
git init . 1>&2
git add . -f 1>&2
git commit -m "Initial commit" 1>&2
if [ "$line1" = "device" ]; then
git push --set-upstream git://192.168.1.126/17435/$line.git master
elif [ "$line1" = "vendor" ]; then
git push --set-upstream git://192.168.1.126/17435/$line.git master
else
git push --set-upstream git://192.168.1.126/17435/platform/$line.git master
fi
cd -
done

5.4 使用如下命令上传代码到仓库:

cat src_17435.txt | . src_17435.sh

6. 下载代码

mkdir -p /home/gitadmin/17435/des
cd /home/gitadmin/17435/des
repo_gitadmin init -u git://192.168.1.126/17435/manifest.git
repo_gitadmin sync -f -j4

Ubuntu下搭建repo服务器(三): 搭建Android repo服务器的更多相关文章

  1. ubuntu下的c/c++环境搭建

    原文地址:http://www.cnblogs.com/hitwtx/archive/2011/12/03/2274556.html ubuntu下的c/c++环境搭建是比较简单,因为有apt和新立得 ...

  2. ffmpeg2.2在ubuntu下使用NDK编译——并在android工程下测试使用

    作者:wainiwann 出处:http://www.cnblogs.com/wainiwann/ 本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则 ...

  3. Ubuntu下使用Sublime text 3阅读android源代码

    一.安装Sublime text 3 Sublime Text 是一款流行的文本编辑器软件,有点类似于TextMate,跨平台,可运行在Linux,Windows和Mac OS X.也是许多程序员喜欢 ...

  4. Ubuntu下安装GTK的三种方法

    我利用此方法成功在UBUNTU 10.04下安装GTK 2.20.1. 一.安装 1.安装gcc/g++/gdb/make 等基本编程工具 $sudo apt-get install build-es ...

  5. Ubuntu下使用nginx和nginx-rtmp-module搭建流媒体服务器的正确姿势

    之前在使用nginx和nginx-rtmp-module搭建流媒体服务器的时候遇到一个很尴尬的问题,就是在把nginx-rtmp-module模块添加到nginx中去的时候,我最开始采取的做法是先卸载 ...

  6. ubuntu 下应用 Python 和 SL4A 的 Android 应用程序搭建您自己的android研发环境

    转载自:http://code.qtuba.com/article-50680.html 最近在看<head first python>,书中有讲python在android中进行开发的章 ...

  7. Ubuntu下NFS,TFTP服务搭建

    环境:Ubuntu 一. 搭建NFS服务器 (1)安装: sudo apt-get install nfs-kernel-server   #安装NFS服务器端 sudo apt-get instal ...

  8. 【Linux学习】Ubuntu下嵌入式交叉编译环境arm-linux-gcc搭建

    (1)首先选择一个路径用来存放arm-linux-gcc.我选用的是/home/book,并在以下建立一个目录arm-linux-gcc. (2)利用cp EABI-4.3.3_Emdedsky_20 ...

  9. Ubuntu下kafka集群环境搭建及测试

    kafka介绍: Kafka[1是一种高吞吐量[2]  的分布式发布订阅消息系统,有如下特性: 通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能 ...

  10. Ubuntu 下python开发环境的搭建

    一.安装python3 ubuntu自身是安装python2的,例如在ubuntu 16.04中安装的就是python2.7.但我想在python3的环境下进行开发所以就要安装python3.但由于u ...

随机推荐

  1. 学习MongoDB--(5-2):索引(查看索引的使用,管理索引)

    前一篇简单介绍了索引,并给出了基本的索引使用,这一次,我们进一步说一下MongoDB中的索引,包括如何查看查询是否走索引,如何管理索引和地理空间索引等. [使用explain和hint] 前面讲高级查 ...

  2. fetch api & response header

    how to get fetch response header in js https://stackoverflow.com/questions/43344819/reading-response ...

  3. MyBatis启动:MapperStatement创建

    参考:http://blog.csdn.net/ashan_li/article/details/50351080 MappedStatement说明 一个MappedStatement对象对应Map ...

  4. 使用pymongo.find查询很慢的解决方式

    1.前言: mongodb部署在阿里云服务器, mongodb中collection存储了百万条记录. 需求:优化查询指定时间段内的所有数据的查询时间,结果有百万级别. 最初:313587条记录耗时: ...

  5. [poj2311]Cutting Game_博弈论

    Cutting Game poj-2311 题目大意:题目链接 注释:略. 想法: 我们发现一次操作就是将这个ICG对应游戏图上的一枚棋子变成两枚. 又因为SG定理的存在,记忆化搜索即可. 最后,附上 ...

  6. WINDOW 专家

    http://www.cnblogs.com/shanyou/category/725986.html

  7. HDU 5015 233Matrix (构造矩阵)

    233 Matrix Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Tota ...

  8. 11082 完全二叉树的种类 O(n) 卡特兰数

    11082 完全二叉树的种类 时间限制:800MS  内存限制:1000K提交次数:0 通过次数:0 题型: 编程题   语言: G++;GCC;VC Description 构造n个(2<=n ...

  9. 【iOS开发-32】iOS程序真机调试须要购买调试证书怎么办?

    一.情况 我们在开发iOS程序的时候,一般都是在模拟器上执行查看效果的. 可是,当开完完毕.须要在真机上调试怎么办? 二.官方解决的方法 苹果有为个人和企业开发人员提供调试证书和公布证书.个人版99美 ...

  10. 【bzoj1196】[HNOI2006]公路修建问题

    二分答案 验证有一种贪心的思想,就是如果这条路的c1比二分的值还小,那就要果断选择一级公路. 搜过一遍后,如果可供选择的一级公路小于k,就可以直接返回否了. 接下来继续选择,如果可以选到n-1条路,就 ...