搭建支持 Repo 的 Android 源码镜像(Repo 服务器)

图谋制造厂预约了一份正本。 Android 源码,心不在焉 文字,不帮助 Repo。本此行为准则建筑物帮助。 Repo 的镜像服役,我感受了两个星期的产生断层草率地。,总算 hacking 成。

本文运用的首要知:

一、向前 Repo

本 Android 主运用源行为准则的形成。 Git 和 Repo。

Repo 是本 Git 仓库栈经营工具,帮助多种同时经营 Git 仓库栈。因 Android 源行为准则组编很多。 Git 仓库栈,运用 Repo 它可以理想化很多任务。。譬如,运用一 Repo 命令,您可以从多个仓库栈下载文字。,与计算器相同时刻。

修建帮助 Repo 的 Android 源行为准则图像,首要步如次:

  1. 在服役上建造 Git 托管服役
  2. 在客户端勃起的和有效地利用。 Repo
  3. 在客户端使被安排好 manifest/ 并上传的数据唤 Git 服役
  4. 将客户端 Android 源行为准则上传的数据唤 Git 服役
  5. 在其它到达 git 容许客户运用:Repo init; Repo sync

二、搭建 Git 服役

搭建 Git 服役的材料对立孤独。,和 Repo 这种相干几乎不。,因此又写了一篇文字。:

在 ubuntu 本建筑物 Gitolite 的 Git 服役

三、搭建 Repo 服役策略和命令

服役 A:

  • IP 地址:
  • 勃起的了 Gitolite
  • 将用作 Repo 服役更目镜。,但我不变卖我无论预备好了。

客户端 B:

  • IP 地址:
  • 售得 A 的 Gitolite 经营员连箱的(可以修正) gitolite-admin)
  • 买主把它给了敝。 Android 源码 asop/,心不在焉 manifest/ 文字

随球伪造,除非有特别阐明,二者都在客户端。 B 工具。

四、勃起的 Repo

Repo 勃起的可顾及勃起的 Repo。首要步如次:

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-澳门新濠天地官网-downloads/澳门新濠天地官网 > ~/bin/澳门新濠天地官网
chmod a+x ~/bin/澳门新濠天地官网

鉴于特别民情。。。是你这么说的嘛!伪造达到结尾的后 Repo 它依然难以立即运用。。譬如,在 澳门新濠天地官网 init 时,甚至科学认得的互联网网络接入。,它不克不及衔接。

REPO_URL = ''''

对立的事物的解决图谋是,清华大学镜像。翻开 ~/bin/澳门新濠天地官网,放内侧 REPO_URL 地址更反而:

REPO_URL = 

这可以运转。 澳门新濠天地官网 指示了。

五、认得 manifest/ 文字

Android 在源行为准则中无数百个。 git 规划,形形色色的版本的源规划是形形色色的的。,Repo 指示到何种地步变卖关系代词规划是考虑到的?,答案是 manifest/ 这些被记载下了。 git 规划的称呼、条理等人,经过它, Repo 有拥护者的印痕。。

确信 manifest/ 最好的方式,那执意万丈高楼平地起修建东西。 Repo 服役。

找一张书桌 Linux 伪造系统计算器,使被安排好目录册模仿 Repo 服役:

mkdir /tmp/澳门新濠天地官网-server
cd /tmp/澳门新濠天地官网-server

/tmp/澳门新濠天地官网-server 使被安排好一些目录册 git 仓库栈:

#使被安排好 git 仓库栈 project_1
mkdir project_1 &&cd project_1
git init;
touch p1.txt;
git add .;
git commit –m "initial commit"

cd..

使被安排好东西 git 仓库栈 project_2
mkdir project_2 &&cd project_2
git init;
touch p2.txt;
git add .;
git commit –m "initial commit"

/tmp/澳门新濠天地官网-server 使被安排好 manifest 仓库栈:

#使被安排好 manifest 仓库栈
mkdir manifest && cd manifest
git init;
touch ;

添加以下材料:

name="test"fetch="."/>revision="master"remote="test"sync-j="4"/>path="project_1"name="project_1"/>path="project_2"name="project_2"/>

以后 commit 行为准则

git add .;
git commit –m "initial manifest"

这么,模仿 Repo 服役被建造。。

以后新建东西目录册。/tmp/澳门新濠天地官网-client/,模仿 Repo 客户端。在客户端目录册中:

澳门新濠天地官网 init –u /tmp/澳门新濠天地官网-server/manifest

即使一切正常,成激励将被接纳。。此刻,请反省目录册。 .澳门新濠天地官网,你会找到东西。 ,材料是复制服役。 文字。

最末,运用 Repo 指示将是多个。 git 规划的行为准则一次与客户机相同时刻。:

注意到的琢磨 文字的材料,你必然要能了解这点。 xml 著作功能。

注意到:是你这么说的嘛!实验,我在 centOS 受试验成,在 macOS 受试验时,工具 澳门新濠天地官网 init -u $LOCAL_ADDRESS 会报错,最末东西限制因素将被自找麻烦。 url

六、从源行为准则 aosp/ 找出全部 git 仓库栈

从制造厂到达 Android 源码 aosp/ 材料大致上如次,

aosp
|- art
|- /abi
  |- cpp
|- /developers
  |- build
  |- demos
  |- samples
    |- /android
...

因制造厂用不着。 Repo 经营,因而心不在焉源行为准则。 manifest/ 文字。

偶然,注意到的检查 aosp/ 以后撞见,上面有些人目录册。 .git/ 目录册,这刻薄的它是东西。 git 规划。因而你可以找到全部的用带绑扎。 .git/ 目录册的目录册,来决定 aosp/ 有关系代词 git 规划。行为准则如次:

find aosp/ -type d -name'Git’> `

最末在这 aosp/ 协同撞见 531 个 git 规划。

七、使被安排好 文字

说服 后,它可以响应地使被安排好。 文字。

每参加社交聚会的材料都是这么的。:

aosp/prebuilts/devtools/.git

运用 bash 指示用力打最末东西开端。 aosp/ 最末 /.git

cat  | cut -c 6- | sed ''s/.....$//'' > 

每行的体式如次。:

形成 xml 文字本子 :

#!/bin/bashecho-e"
\"\" encoding=\"UTF-8\"?>

  \"aosp\"
           fetch=\".\"/>
  \"master\"
           remote=\"aosp\"
           sync-j=\"4\" />">>$1while read line;do
	echo"\"$line\" name=\"$line\" />">>$1done
echo-e"\n">>$1

bash 训练大发牢骚

cat  | ./ 

说服的 里, 举例如次:


八、在 Gitolite 设定初值全部 asop/ 的 git 仓库栈

预先处理:客户端 B 可以修正服役。 A 的 gitolite-admin 规划,换句话说,经营 Gitolite 的规划

它需求在嗨运用。 文字。在这场合敝需求挣脱每参加社交聚会的末了。 /.git

cat  | sed ''s/.....$//''  > 澳门新濠天地官网_

所到达的每参加社交聚会的体式如次。:

使安定 gen_server_澳门新濠天地官网.sh

#!/bin/bash# 宣布组 @aosp_dev , 盟员: jack, tom
@aosp_dev    =    jack tom

# 补充分配 manifest 仓库栈echo-e"
澳门新濠天地官网 aosp/manifest\n
     RW+    =    @aosp_dev\n">>$1while read line;do
	echo-e"澳门新濠天地官网 $line\n     RW+    =    @aosp_dev\n">>$1done

bash 指示形成 文字:

cat 澳门新濠天地官网_path | ./gen_server_澳门新濠天地官网.sh  

gitolite-admin/conf/ 前面使隶属于:

把恢复的材料 push 到服役 A ,gitolite 它将在响应的目录册中。 /home/git/澳门新濠天地官网sitories 设定初值全部 aosp 的全部 git 仓库栈。

例如,aosp 全部的回忆库都先前在服役上了。 A 形成了,下一步执意把 aosp 的源行为准则上传的数据唤服役。

九、上传的数据 manifest/ 到服役

先前累积量。 上传的数据唤服役的文字 aosp/manifest 仓库栈:

git clone git@:aosp/manifest
cd manifest
## 把 文字放入 manifest/ 目录册#
git add .
git commit -m夸大 ''
git push

十、上传的数据 aosp/ 源到服役

上传的数据源行为准则 shell 本子 :

#!/bin/bashwork_dir=$1pwd=${PWD}count=0

while read line;do
    echo$linecount=$((count+1))线1=${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/$linecd$workdir
        rm -rf .git
        git init .  1>&2
        git add .-f 1>&2
        { git commit -m"Initial commit"&&
            git push -f--set-upstream git@:$line.git master
        }||{
            touch empty_file
            git add .
            git commit -m添加东西空文字。,处理空置仓库栈
            git push -f--set-upstream git@:$line.git master
            echo number:$count should be empty $line>>$HOME/log_$(date +%Y_%m_%d)}echo-e"number:$count\n"cd -
done

注意到 左右本子在:

{ git commit -m"Initial commit"&&
    git push -f--set-upstream git@:$line.git master
}||{
    touch empty_file
    git add .
    git commit -m添加东西空文字。,处理空置仓库栈
    git push -f--set-upstream git@:$line.git master
    echo number:$count should be empty $line>>$HOME/log_$(date +%Y_%m_%d)}

这究竟是东西思路敏捷的的解决图谋。。因我先前试过疏忽空仓库栈。,不做 push 。虽然在将行为准则上传的数据唤服役后来的,,客户运用 澳门新濠天地官网 sync 下载时,会呈现 error: Exited sync due to fetch errors 差错,引起相同时刻终成泡影。

因而敝不得不摧残全部的空仓库栈。。

嗨还记载了全部审核过的空仓库栈。 $HOME/log_$(date +%Y_%m_%d) 在文字中,作为便笺。

最末,把 澳门新濠天地官网_ 入伙与寻求来源 aosp/ 在相同目录册中,以后工具:

cat 澳门新濠天地官网_ | ./

在我的举例里,源码大小人有 22g ,上传的数据开花 2 个多小时。

十一、其它客户运用 Repo 服役

源行为准则成上传的数据唤服役 A 后来的,可以下载对立的事物客户端。。如果客户端计算器 C 运用,快跑如次:

  1. C 率先到达服役 A 上的相关性 澳门新濠天地官网 的强国,详细顾及在 ubuntu 本建筑物 Gitolite 的 Git 服役
  2. 勃起的 Repo ,请参阅是你这么说的嘛!次货分配勃起的。 Repo”
  3. 澳门新濠天地官网 init -u git@:aosp/manifest
  4. 澳门新濠天地官网 sync

顾及资料

This entry was posted in 澳门新濠天地官网. Bookmark the <a href="https://www.dtrlzy.com/amxztdgw/2969.html" title="Permalink to 搭建支持 Repo 的 Android 源码镜像(Repo 服务器)" rel="bookmark">permalink</a>.

发表评论

电子邮件地址不会被公开。 必填项已用*标注