只用git命令也能正常拉仓库,上传代码,repo集成了一些功能?
小型项目(例如3个算法(dsp+FPGA),3个bsp,2个上层)需要用git管理代码吗,或者有其他合适的工具吗
kernel级项目属于大型项目
repo是Google开发的用于管理Android版本库的一个工具,repo是使用Python对git进行了一定的封装,并不是用于取代git,它简化了对多个Git版本库的管理。用repo管理的版本库都需要使用git命令来进行操作。
repo下载安装
下载地址:https://mirrors.tuna.tsinghua.edu.cn/git/git-repo ,将下载下来的文件命名为repo,放在PATH环境变量所包含的目录下面,例如可以放在/usr/local/bin目录下(后面介绍均以放在/usr/local/bin目录下为例)。
其实下载下来的repo文件只是一个使用Python编写的引导脚本(Google 称之为 Repo launcher,本质上是一个python脚本,可以使用vim打开的),完整的repo(即,repo的主体部分)还没有下载。repo还未安装,需要执行repo init
安装。(需要注意repo init
需要跟参数的,后面会单独介绍repo init
的使用)这里就会涉及到一个问题,repo的主体部分是从哪里下载的?其实查看repo的引导脚本(/usr/local/bin/repo)可以发现,repo主体部分默认从https://gerrit.googlesource.com/git-repo获取(即,执行repo init命令时,不设置--repo-url选项),这个网站需要科学上网才可以访问。
1,实际使用中我们会遇到一些具体repo指令不能用
导致你提交不了代码,合并不了分支啥的
1.1repo init
repo init [options] [manifest url]
repo init -u manifest_git_path -m manifest_file_name -b branch_name --repo-url=repo_url --no-repo-verify
repo init -u ssh://xxx@git.mioffice.cn:29418/platform/manifest.git -b master-u -m default.xml --repo-url=ssh://xxx@git.mioffice.cn:29418/tools/repo.git --depth=1 --no-repo-verify
命令效果:
首先当前目录产生一个.repo目录
然后克隆一份repo的源代码到.repo/repo下,里面存放了其他repo子命令,即repo的主体部分。
接着从manifest_git_path仓库地址clone清单库到.repo/manifests和.repo/manifests.git目录。
同时.repo目录下还包括manifest仓库(清单库)内容
常用选项:
-u:指定Manifest库的Git访问路径。唯一必不可少的选项
-m:指定要使用的Manifest文件。不指定的话,默认为default.xml文件
-b:指定要使用Manifest仓库中的某个特定分支(例如手机仓库很大,你可以单独拉kernel下某个文件夹的代码)。
--repo-url:指定repo的远端repoGit库的访问路径。
--no-repo-verify:指定不要验证repo源码。
--mirror:创建远程存储库的副本,而不是客户端工作目录。该选项用于创建版本库镜像。使用该选项则在下一步repo sync同步时,本地按照源的版本库组织方式进行组织,否则会按照 manifest.xml 指定的方式重新组织并检出到本地
执行repo init
命令之后,会在当前目录创建一个.repo
文件夹。manifests manifest仓库(清单库)内容,即repo init
的-u
选项对应的仓库。manifest文件是用XML文件的格式记录了本项目依赖的各个Git仓库的名称、地址,以及分支等信息。
1.2repo sync
repo init后就可以拉代码了,repo sync -j6 -d -c --no-tag会将整个项目下载下来,也可以单独下载某个文件夹的
命令为下载的整个manifest的所有仓库都创建分支,例如 ”repo start k8 --all“,会每一个仓库都会创建k8这个分支
1.3 repo upload失败怎么办
出问题先用git push救急
执行命令: git remote -v,查看这个patch对应的仓名:
使用git push提交到gerrit,将patch对应的仓名中的git改成gerrit.pt。
而"HEAD:refs/for/"后面对应的"bsp-qcom-s"是分支名,需要根据具体的项目来定
例子:git push ssh://cuibinbin@gerrit.pt.mioffice.cn:29418/platform/vendor/qcom-proprietary/mm-camerasdk HEAD:refs/for/bsp-qcom-s
repo init出问题 可以添加 --no-repo-verify
使用repo upload
需要搭建gerrit环境,并且在manifest文件remote
元素中添加review
属性,使用 git rebase -i
,然后再运行 repo upload
。
repo就这几个命令常用
2,git
git常用命令 等再搜索几篇文章的
2.1 git pull出错
git branch -a 或者 git branch -a 找到 远程主分支
git reset --hard miui/master-u-qcom 和远程主分支同步
git pull
参考链接:
1,【精选】git repo工具详细使用教程——彻底学会Android repo的使用_repo教程-CSDN博客
(很详细)
2,【精选】repo入门和基本用法_repo start_Jason_Lee155的博客-CSDN博客
3,