博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】repo 的一些用法和理解-不错
阅读量:5148 次
发布时间:2019-06-13

本文共 3673 字,大约阅读时间需要 12 分钟。

原文网址:http://blog.csdn.net/yasin_lee/article/details/5975068

repo的用法(zz)

 

 

注:repo只是google用Python脚本写的调用git的一个脚本,主要是用来下载、管理Android项目的软件仓库。(也就是说,他是用来管理给git管理的一个个仓库的)

下载 repo 的地址: http://android.git.kernel.org/repo ,可以用以下二者之一来下载 repo

wget http://android.git.kernel.org/repo 

或者 

curl http://android.git.kernel.org/repo > ~/bin/repo  

下载完成后须修改repo的权限: chmod a+x ~/bin/repo 

 

用repo sync 在抓去 android source code 的时候,会经常出现一些错误导致 repo sync 中断,每次都要手动开始。 可以用如下的命令,来自动重复

$?=1; 

while [ $? -ne 0 ] ; 

do  repo sync ; 

done

 

获取帮助:

repo help [ command ]   //显示command 的详细的帮助信息内容

示例: repo help init 来获取 repo init 的其他用法

 

repo init -u URL 用以在当前目录安装 repository ,会在当前目录创建一个目录 ".repo"  -u 参数指定一个URL, 从这个URL 中取得repository 的 manifest 文件。   

示例:repo init -u git://android.git.kernel.org/platform/manifest.git

获取的manifest文件放在.repo目录中。命名为manifest.xml。这个文件的内容其实就是所有被git管理的仓库的列表!

 

可以用 -m 参数来选择获取 repository 中的某一个特定的 manifest 文件,如果不具体指定,那么表示为默认的 namifest 文件 (default.xml)

repo init -u git://android.git.kernel.org/platform/manifest.git -m dalvik-plus.xml

(有诸多供我们选择的manifest文件,所有的manifest文件都放在目录.repo/manifests中,该目录本身亦被git所管理,你可以cd进去看看)

 

可以用 -b 参数来指定某个manifest 分支。

repo init -u git://android.git.kernel.org/platform/manifest.git -b release-1.0

你会发现.repo/manifests是个被git管理的仓库,这里放的是所有的manifest文件(*.xml),因为被git管理,固然有分支,-b可以切换到你想要的分支然后再下载相关的xml文件,当然具体下载那个xml还要看-m参数了,所以如果你仅仅指定-b而没有-m的话,就是下载-b指定分支下的default.xml文件

如果不指定-b参数,那么会默认使用master分支

 

4. repo sync [project-list]

下载最新本地工作文件,更新成功,这本地文件和repository 中的代码是一样的。 可以指定需要更新的project , 如果不指定任何参数,会同步整个所有的项目。

如果是第一次运行 repo sync , 则这个命令相当于 git clone ,会把 repository 中的所有内容都拷贝到本地。 如果不是第一次运行 repo sync , 则相当于 git remote update ;  git rebase origin/branch .  repo sync 会更新 .repo 下面的文件。 如果在merge 的过程中出现冲突, 这需要手动运行  git  rebase --continue

 

5. repo update[ project-list ]

上传修改的代码 ,如果你本地的代码有所修改,那么在运行 repo sync 的时候,会提示你上传修改的代码,所有修改的代码分支会上传到 Gerrit (基于web 的代码review 系统), Gerrit 受到上传的代码,会转换为一个个变更,从而可以让人们来review 修改的代码。

 

6. repo diff [ project-list ]

        显示提交的代码和当前工作目录代码之间的差异。

 

7. repo download  target revision

        下载特定的修改版本到本地, 例如:  repo download pltform/frameworks/base 1241 下载修改版本为 1241 的代码

 

8. repo start newbranchname .

        创建新的branch分支。 "." 代表当前工作的branch 分支。

 

9.  repo prune [project list]

        删除已经merge 的 project

 

10. repo foreach [ project-lists] -c command

       对每一个 project 运行 command 命令

 

12. repo forall -c 

这个命令会遍历所有的git仓库,并在每个仓库执行-c所指定的命令(这个被执行的命令就不限于仅仅是git命令了,而是任何被系统支持的命令,比如:ls 、 pwd 、cp 等等的 )

当我想通过这个命令遍历所有的仓库并在每个仓库执行"git checkout . "用以将每个仓库的改动都清除的时候,我这么输入命令:

repo forall -c git checkout . 

我发现这样根本不行。看来repo不能遍历执行checkout这个命令。今天我终于想到了另外一个命令"git reset --hard HEAD" 哈哈

repo forall -c git reset --hard HEAD

 

再说一个新发现:以前用repo forall 执行一些命令的时候,可能再遍历到某个仓库的时候出了问题,但是我却苦于不知道这个仓库到底是哪个!一直也没有解决。今天终于找到了。。。。  关键时候还是要看命令自己带的帮助手册呀。。。

repo help forall  用这个命令查看下针对forall的帮助吧。说的很清楚,repo执行的时候加上-p参数就可以在遍历到每个仓库的时候先打印出当前的pwd,然后再继续执行-c所指定的命令。举例如下:

 

repo forall -p -c git branch    

 

//该命令会遍历所有仓库并打印每个仓库的分支情况,由于有了-p参数,这样便会打印出每个仓库的路径!!!

 

11. repo status

       显示 project 中每个仓库的状态,并打印仓库名称。

 

201111071237 更新

yasin.lee.x 

———————————————————————————————————————————————————————

cpp@cpp:~$ repo
Traceback (most recent call last):
  File "/home/cpp/bin/repo", line 91, in ?
    import readline
ImportError: No module named readline
cpp@cpp:~$ 
———————————————————————————————————————————————————————
系统里明明有readline,可是repo脚本却无法导入,后来查到应该是python安装导致的错误,应该在python编译时加上关于readline的编译选项,应该按照如下操作安装python
首先安装readline软件包:
sudo apt-get install libreadline5-dev
sudo apt-get install zlib1g-dev
然后下载python源码进入python源码目录,编译并安装python:
1. make distclean
2. ./configure  --enable-readline  BASECFLAGS=-U_FORTIFY_SOURCE
3. make -j4
4. sudo make install
注意,我同时发现在python-2.4.3版本是支持该编译选项的,而在3.1.3版本中是不能识别这个--enable-readline编译参数的。所以我目前使用2.4.3版本。

转载于:https://www.cnblogs.com/wi100sh/p/4535364.html

你可能感兴趣的文章
CentOS下mysql安装和配置
查看>>
5分钟安装 关于win10安装composer PHP 用来管理依赖(dependency)关系的工具
查看>>
webstorm 文件历史找回~ 恢复正确状态~
查看>>
jsp模板
查看>>
openflow1.5
查看>>
斐波纳契数列
查看>>
JAXB 实现java对象与xml之间互相转换
查看>>
AngularJS
查看>>
html数字变换插件,轻量级jquery数字动画插件
查看>>
计算机基础18春在线作业1,东师-计算机应用基础18春在线作业1-1.docx
查看>>
easyui onselect多选_select 多选 (EasyUI)
查看>>
openlayers3线段添加闪烁_在OpenLayers 3中动态地添加和删除轨道段
查看>>
w10系统老是自动息屏_windows10电脑系统定期自动熄灭屏幕,如何关闭该功能
查看>>
np 取最小值的坐标_numpy
查看>>
一元享移动怎么样_中国移动终于认怂?29元享100G流量还不限速,网友:后悔携号转网了...
查看>>
redis将散裂中某个值自增_java面试题30道
查看>>
c 通过成员变量地址 获取类对象地址_【C++学习笔记(十二)】之类中成员变量与成员函数的存储...
查看>>
a标签onclick不执行_你不知道的DOM操作
查看>>
object标签与embad掉钱_海口本地钯盐回收厂家-回收多少钱-源祥-金银饰品回收
查看>>
vue 属性是变量_Vue实战060:require与import的区别和使用
查看>>