在工作中的经常使用repo命令,但是有时会忘记一些命令和遇到的一些问题,记录下来方便已经查询。
常见问题:
问题1:找不到命令:repo
方法:
在下载android源码的时候用repo时提示找不到命令,可以用如下方法解决,在命令行中输入如下两行:
echo ‘export PATH=$PATH:$Home/bin‘ >>~/.bashrc
export PATH=$PATH:$HOME/bin
问题2:
/home/xxxxxx/bin/repo: line 1: 在未预料的“newline”附近出现语法错误
/home/xxxxxx/bin/repo: line 1: `<!DOCTYPE HTMLPUBLIC "-//IETF//DTD HTML 2.0//EN
方法【转】:
1.安装git
sudo apt-get install git-core
2.安装curl
sudo apt-get install git-core curl
3.安装repo, 通过curl下载repo
网上或者很多书籍上都是这样写的:
curl http://android.git.kernel.org/repo >~/bin/repo
结果得到的repo不能用,什么301重定向的,唉!悲催啊!后来在csdn上发了个贴子,大牛给解决啦!
http://code.google.com/p/git-repo/downloads/detail?name=repo-1.12这个链接提供下载repo!
也可以通过下面命令得到:
curl http://git-repo.googlecode.com/files/repo-1.12> ~/bin/repo
4.修改执行权限
chmod a+x ~/bin/repo
5.修改~/bin/repo文件将第五行
这一步又是容易出错啊,哥就死在这里很久啊!很多书籍或网站上都是这样命令:
~/bin/repo init -ugit://android.git.kernel.org/platform/manifest.git
执行以后,等n久,结果出现让你喜出望外的结果啊
error:Failed connect to code.google.com:443; Operation now inprogress while accessinghttps://code.google.com/p/git-repo//info/refs
网上大牛解决:修改~/bin/repo文件将第五行
REPO_URL=‘https://code.google.com/p/git-repo/‘
改为
REPO_URL=‘http://code.google.com/p/git-repo/‘
6.然后向PATH中添加bin路径:
export PATH=$PATH:~/bin
7.新建一个目录,然后进入该目录。
mkdir source
cd source
8.执行repo init -ugit://Androidgit.linaro.org/platform/manifest.git -bandroid-2.3.4_r1
这一步大概有一分多钟就完成了。
9.修改.repo文件
找到source目录中的.repo下面的manifest.xml文件,这是个隐藏文件 ls -a才能看到
cd .repo
gedit manifest.xml
将fetch="git://Android.git.kernel.org/"
改为
fetch="git://Android.git.linaro.org/"
10.执行repo sync -j5
repo的常用命令:
- 下载 repo 的地址: http://android.git.kernel.org/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 init -u URL , 在当前目录安装 repository ,会在当前目录创建一个目录 ".repo" -u 参数指定一个URL, 从这个URL 中取得repository 的 manifest 文件。 repo init -u git://android.git.kernel.org/platform/manifest.git
可以用 -m 参数来选择 repository 中的某一个特定的 manifest 文件,如果不具体指定,那么表示为默认的 namifest 文件 (default.xml) repo init -u git://android.git.kernel.org/platform/manifest.git -m dalvik-plus.xml
可以用 -b 参数来指定某个manifest 分支。
repo init -u git://android.git.kernel.org/platform/manifest.git -b release-1.0
可以用命令: repo help init 来获取 repo init 的其他用法
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 命令
11. repo status
显示 project 的状态
Geeks - AVL Tree Deletion 平衡二叉树 删除操作