必威体育Betway必威体育官网
当前位置:首页 > IT技术

初体验新建repo管理Android源代码

时间:2019-06-28 06:44:12来源:IT技术作者:seo实验室小编阅读:64次「手机版」
 

repo

本文链接:https://www.jianshu.com/p/0f3816096266

公司有一个Gitblit服务器管理代码,现在想把正在开发Android源代码项目也放到上面管理。听说,用一个Git仓库管理整个源代码库,在git status时会很慢,于是想到用官方的repo管理办法。

环境

本地系统win7上的ubuntu 16.04 虚拟机

windows服务器:windows server 2008 r2 Enterprise

安装repo

下载 repo 工具

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.Googleapis.com/git-repo-downloads/repo > ~/bin/repo
## 如果上述 URL 不可访问,可以用下面的:
## curl https://storage-googleapis.proxy.ustclug.org/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

测试repo

建立一个工作目录

~$ mkdir -p code/TestRepo
~$ cd code/TestRepo/

在Gitblit新建manifest.git

新建Git仓库manifest.jpg

clone到本地

~/code/TestRepo$ git clone ssh://[email protected]:29418/~rong/manifest.git

新建default.xml

~/code/TestRepo$ cd manifest/
rong@ubuntu:~/code/TestRepo/manifest$ gedit default.xml

default.xml的内容如下

<?xml version="1.0" encoding="UTF-8" ?>

<manifest>
    <remote name="origin" fetch="ssh://[email protected]:29418/~rong/" />
    <default remote="origin" revision="master"/>
    <project path="hello" name="helo"/>
</manifest>

保存、提交、推送到服务器

~/code/TestRepo/manifest$ git add .
~/code/TestRepo/manifest$ git commit -m "init commit"
~/code/TestRepo/manifest$ git push --all

查看服务器,提交成功。

push manifest成功.jpg

初始化仓库:

~/code/TestRepo/manifest$ cd ..
~/code/TestRepo$ repo init -u ssh://[email protected]:29418/~rong/manifest.git

## 如果提示无法连接到 gerrit.googlesource.com,可以编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的:
## REPO_URL = 'https://gerrit-googlesource.proxy.ustclug.org/git-repo'

创建helo.git

创建helo.jpg

同步仓库

~/code/TestRepo$ repo sync

repo sync.jpg

同步后的目录结构

目录结构.jpg

实战repo

修改default.xml,添加MySight

<?xml version="1.0" encoding="UTF-8" ?>

<manifest>
    <remote name="origin" fetch="ssh://[email protected]:29418/Android/" />
    <default remote="origin" revision="master"/>
    <project path="packages/APPs/MySight" name="MySight"/>
</manifest>

初始化分支上的版本

$ repo init -u ssh://[email protected]:29418/Android/manifest.git -b new

把原来的MySight目录备份后删除,再用repo同步仓库

$ repo sync

repo sync MySight.jpg

注意:此工具有一个已知错误,可能会导致 repo sync 重置本地主题分支。如果在您运行 repo sync 之后,git branch 显示 *(无分支),请再次运行 git checkout。

发现用这个方式同步的仓库默认没有分支,需要手动切换分支

$ cd packages/apps/MySight
$ git checkout master

如果需要添加新的项目,可以修改default.xml,然后repo initrepo sync。为了方便我新建了一个文件myrepoinit.sh。

#!/bin/sh
repo init -u ssh://[email protected]:29418/Android/manifest.git -b new

修改manifest后,初始化只要执行./myrepoinit.sh

总结

repo适合用于下载和更新源代码,或者是管理一个包含很多Git仓库的项目,平时提交代码还是要用Git。

Q&A

修改服务器的仓库位置后怎么在本地修改地址?

解:

例如修改manifest.git的位置后,执行

$ git remote set-url origin ssh://[email protected]:29418/Android/manifest.git

用修改后的地址初始化repo

$ repo init -u ssh://[email protected]:29418/Android/manifest.git -b new

报错

~/code/TestRepo$ repo init
gpg: keyring `/home/rong/.repoconfig/gnupg/secring.gpg' created
gpg: keyring `/home/rong/.repoconfig/gnupg/pubring.gpg' created
gpg: /home/rong/.repoconfig/gnupg/trustdb.gpg: trustdb created
gpg: key 920F5C65: public key "Repo Maintainer <[email protected]>" imported
gpg: key 692B382C: public key "Conley Owens <[email protected]>" imported
gpg: Total number processed: 2
gpg:               imported: 2  (RSA: 1)

fatal: cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
fatal: ERROR [Errno 101] Network is unreachable

解:

编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的:

REPO_URL = 'https://gerrit-googlesource.proxy.ustclug.org/git-repo'

连接失败

$ repo init -u ssh://[email protected]:29418/~rong/manifest.git -b new
fatal: Cannot get https://gerrit-googlesource.proxy.ustclug.org/git-repo/clone.bundle
fatal: error [Errno 101] Network is unreachable

解:等一会就好了

参考

从零搭建 repo 服务器 - CSDN博客

http://blog.csdn.net/lb5761311/article/details/47723455

Repo全解之自己搭建repo仓库 - csdn博客

http://blog.csdn.net/jinguol999/article/details/47192635

如何不翻墙下载Android代码 - CSDN博客

http://blog.csdn.net/sunao2002002/article/details/47869281

AOSP(Android) 镜像使用帮助 [LUG@USTC]

https://lug.ustc.edu.cn/wiki/mirrors/help/aosp

下载源代码 | android open Source Project

https://source.android.com/setup/downloading

概览 | Android Open Source Project

https://source.android.com/setup/developing

相关阅读

无废话SharePoint入门教程一[SharePoint概述]

一、前言 听说SharePoint也有一段时间了,可一直处在门外。最近被调到SharePoint实施项目小组,就随着工作一起学习了一下实施与开发

如何用sosreport在Linux上创建诊断报告

Sosreport是RHEL / CentOS上的一个命令,它会收集系统配置和你linux机器上的诊断信息,如正在运行的内核版本、加载的模块和系统和服

repo的manifest.xml文件全解

manifest.xml 文件结构:<?xml version="1.0" encoding="UTF-8"?>  <manifest>  <remote name="origin" fetch=".." review="r

Jasperreport基本介绍(Jasperreport与Ireport介绍)

Jasperreport基本介绍Jasperreport与Ireport介绍Jasperreport是报表打印工具,支持pdf、csv多种格式的报表打印。JasperReport是一

电脑出现bugreport_xf.exe系统错误该怎么办?

为什么电脑会提示 bugreport_xf.exe 系统错误?事出有因,查看具体的出错提示所指出错的程序。1、遇到出错提示,先不要关闭,可以尝试循

分享到:

栏目导航

推荐阅读

热门阅读