wifi adb 不能连接
setprop service.adb.tcp.port 5555
setprop persist.service.adb.enable 1
git config --global user.email “you@example.com”
git config --global user.name “Your Name”
Repo使用命令
新建常用命令
- 下载代码
repo init -u “ssh://用户名@172.30.3.6:29418/manifest”
Fix: 目前gerrit 在init 末尾加 -b {branch} 指定下载指定分支有权限问题,本周解决;
代码下载后务必明确切换所有仓库分支,避免后续分支不明确,导致一系列问题- 分支切换
repo forall -c git checkout {branch}- 同步代码
repo sync
repo sync framework/base //子库路径
repo sync之前要确认{代码根目录}/…/.repo/manifest/default.xml 所处的分支,要与代码所在分支一致,否则要手动切换至一致;
repo forall -c git pull
使用此方式不需要考虑分支与manifest是否一致- 提交代码
为避免出错最好各仓库单独提交
git add {file}
git comm -m “MGOS-XXX: xxxxxxxxxxxxxxxxxxxxxx”
git push orgin HEAD:refs/for/{branch}- 查看各仓库改动
repo forall -c “pwd; git status -uno”
返回当前仓库路径;查看除未追踪文件外所有改动- 删除分支
repo forall -c “git branch -D 分支”- 脱离分支
repo sync -d- 回退版本信息
git reset --hard HEAD^ //上一个版本就是HEAD^ ,上上一个版本就是HEAD^^
git reset --hard < commitId>- 创建分之
repo start jni . 或者 git checkout -b jni- git checkout
git checkout . //撤销 工作区的所有改动, 返回 当前分支 的 上一个提
git checkout < commitId> //返回到 某一个 提交
git chekcout < branchName> //切换分之- 提交
git commit --amend -s 如果git commit --amend --no-edit不编辑
[XXX][XX] content
jra版本
repo upload . --no-verify
错误处理:Unpack error, check server log
git push ssh://xxx/platform/frameworks/base HEAD:refs/for/XXX --no-thin
使用repo forall -c + git 即与单独操作git没有什么区别,灵活使用repo forall -c “”,引号内可以使用组合命令以 ; 分开,即可在各仓库执行组合命令。
本地没有分之:新建分之 git checkout -b master origin/master
repo start --all F80XBrepo 切换分支
repo forall -c git checkout F80XB
代码提交:
git commit -m “jira任务号:”
git push origin HEAD:refs/for/master
git push originHEAD:refs/for/F80XB
删除本地分支:
repo forall -c git checkout master
repo forall -c git branch -D F80XB
repo forall -c git checkout F80XB
repo 回退当前所有的修改,和服务器上代码拉下来一样
repo forall -c “git clean -df” && repo forall -c “git checkout .” && repo sync -j8git 回退到某一条的提交 git reset --hard commitID
repo init –u <URL> [<OPTIONS>]
初始化命令
-u: 指定连接到的manifest仓库地址
-m: 选择仓库中某个manifest文件,如果没有设置,就使用default.xml
-b: 选择一个maniest仓库中的一个特殊的分支或修正版本
repo init -u “ssh://zhangzhihao@172.30.3.6:29418/manifest”
repo sync
同步代码
repo sync -c -j4
-j : 多任务,一般8核心可以开到16任务,过多会起反作用
-c: 只下载当前分支代码
-d: 让工程回退到manifest指定的版本
-f: 如果某个工程同步失败,继续同步
repo start [–all | …]
创建并切换分支
刚克隆下来的代码是没有分支的,repo start实际是对git checkout –b命令的封装
repo start --all master
git 命令为:git checkout -b master origin/master
repo checkout
切换分支
实际上是对git checkout命令的封装,但不能带-b参数,所以不能用此命令来创建特性分支
repo checkout […]
repo checkout crane-dev
repo checkout crane-devplatform/buildplatform/bionic
repo branches
查看分支
repo branches
repo branches platform/build platform/bionic
repo diff
查看工作区文件差异
实际是对git diff命令的封装,用于分别显示各个项目工作区下的文件差异
repo diff—查看所有项目
repo diff platform/build platform/bionic—只查看其中两个项目
repo stage
把文件添加到index表中
实际是对git add --interactive命令的封装、用于挑选各个项目工作区中的改动以加入暂存区。
repo prune
删除已经合并分支
实际上是对git branch –d命令的封装,该命令用于扫面项目的各个分支,并删除已经合并的分支
repo prune [<project>…]
repo abandon
删除指定分支
实际上是对git branch –D命令的封装
用法: repo abandon 分支名 [<project>…]
repo status
查看文件状态
实际上是对git diff-index、git diff-filse命令的封装,同时显示暂存区的状态和本地文件修改的状态
$repo/repo status platform/bionic
repo push
repo push org
这是新添加的指令,用于向服务器提交代码,使用方法:
repo push <remotename> [–all |<project>…]
repo update[ project-list ]
上传修改的代码 ,如果你本地的代码有所修改,那么在运行 repo sync 的时候,会提示你上传修改的代码,所有修改的代码分支会上传到
Gerrit
repo upload
上传本地提交至服务器
repo upload相当于git push,但是又有很大的不同。它不是将版本库改动推送到克隆时的远程服务器,而是推送到代码审核服务器(Gerrit软件架设)的特殊引用上,使用SSH协议。代码审核服务器会对推送的提交进行特殊处理,将新的提交显示为一个待审核的修改集,并进入代码审查流程,只有当审核通过后,才会合并到官方正式的版本库中
repo download
下载特定的修改版本到本地,主要用于代码审核者下载和评估贡献者提交的修订
repo download {project change [patchset]}…
merge(合并多个分支)
repo forall –p –c git merge topic
repo selfupdate
用于repo自身的更新
repo list
查看本地repo管理的所有projects
repo版本回退
$ repo forall -c ‘commitID=`git log --before “2017-03-17 07:00” -1 --pretty=format:"%H"`; git reset --hard $commitID’
参数说明:
forall 操作分支中的所有仓库
-c 只操作当前分支
–before 早于指定时间点的提交记录
-1 只显示最近的1条记录(注意这是数字 1 ,如果要显示 2 条就写 2,以此类推)
“2017-03-17 07:00” 希望回退到的日期(时间点)
–pretty 以指定格式显示提交记录%H 提交记录的hash值,即commit id(其它格式及更详细的信息可以使用命令git log --help打印帮助信息并查看“PRETTY FORMATS”小节)命令含义: 这条repo命令的实质就是在当前分支的每个仓库下执行[Git] log命令,找出该仓库下符合时间条件的第一个提交记录,然后对该仓库执行[git]+ reset --hard操作
使用repo+gitlab管理AOSP源代码
1,配置repo
在工作目录下创建bin文件夹
mkdir ./bin
将bin目录添加到系统环境变量
PATH=./bin:$PATH
下载repo脚本(清华源)
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
chmod +x repo
更新
repo的运行过程中会尝试访问官方的git源更新自己,可以使用tuna的镜像源进行更新
修改REPO_URL=‘https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/’
2,创建mainfest文件
为方便管理在Gitlab上创建PLATFORM文件夹(group),在PLATFORM下创建manifest空仓库
git clone manifest 到本地,添加default.xml,如下:
3,创建AOSP 仓库
在Gitlab/PLATFRORM 下创建aosp源码目录
创建abi,art空仓库,在源码目录init,上传源码到远程仓库。
务必先初始化仓库,再去做repo sync下载测试。
4,修改manifest
修改default.xml 将abi、art仓库地址添加进来
5,下载测试
初始化repo环境
repo init -u ${manifest对应git仓下载的url地址}
repo init -u “ssh://zhangzhihao@172.30.3.6:29418/manifest”
同步代码
repo sync
6,测试无误重复第三步将所有仓库添加到远程
使用脚本自动提交代码
all=`ls .`
for i in $all
do
if [ -d $i ]
then
echo "[$i]"
cd $i
git init
git remote add origin git@gitlab.zhidaoauto.com:ecos/os/F80X/$i.git
git add -f .
git commit -m "Initial $i"
git push -u origin master
echo $i
cd ..
fi
done