repo总结

3 篇文章 3 订阅
1 篇文章 1 订阅

repo start  ##创建并切换分支
repo start  newbranchname [--all | projectName]
repo start是对git checkout -b 命令的封装。git checkout -b 是在当前所在的分支的基础上创建特性分支,而repo start是在清单文件中设定的分支的基础上创建特性分支。例如:(假设清单文件中设定的分支是stable2)
repo start  stable  --all(所有项目)
(对所有项目,在stable2的基础上创建特性分支stable。)
repo start  stable  platform/build platform/bionic
(只对platform/build、platform/bionic两个项目,在stable2的基础上创建特性分支stable)
repo checkout 分支名称  ##默认是切换所有仓库中的分支
repo checkout 分支名称 本地仓库相对路径 ##切换指定仓库的分支
repo merge
--branch-name 源分支名称 --merge-message 提交说明  ##分支合并命令,此命令会跳过那些公共仓库(即单独配置了reversion的仓库)
repo branch  ##查看分支
repo manifest  ##查看清单文件
repo manifest -ro aaaaa.xml  ##生成tag文件
repo status(查看文件状态)
是对git diff-index、git diff-filse命令的封装,同时显示暂存区的状态和本地文件修改的状态
repo abandon branchName ##删除分支
repo version  ##查看repo版本号
repo grep  ##在项目中进行内容查找
repo sync  ##默认同步所有仓,可以指定project 。
如果是第一次运行 repo sync ,则相当于 git clone,会把server所有内容都拷贝到本地。根据manifests中的xml文件中git的commit进行同步,这个xml文件在repo init的时候指定;
如果不是第一次运行 repo sync ,则相当于 git remote update ;  git rebase origin/branch 将server上的code与本地合并;如果在rebase 的过程中出现冲突,这需要手动解决冲突,然后运行:git  rebase --continue
注意:repo sync 是不会更新 .repo/repo这个仓的!会更新manifest仓库。
repo sync 的参数:
-j:开启多线程同步操作,会加快sync命令的执行速度。默认情况下,使用4个线程并发进行sync。 
-c, –current-branch:只同步指定的远程分支。默认情况下,sync会同步所有的远程分支,当远程分支比较多的时候,下载的代码量就大。使用该参数,可以缩减下载时间,节省本地磁盘空间。 
-d, –detach:脱离当前的本地分支,将HEAD强制切换到manifest.xml中设定的分支,忽略本地的改动且不会覆盖掉本地修改。在实际操作中这个参数很有用,当我们第一次sync完代码后,往往会切换到dev分支进行开发。如果不带该参数使用sync, 则会触发本地的dev分支与manifest设定的远程分支进行合并,这会很可能会导致sync失败。 
--force-sync
overwrite an existing git directory if it needs to point to a different object directory. WARNING: this may cause loss of data
从说明来看,像是可以强制同步,且可能丢失本地改动。但是实际测试发现,这个选项并不能强制覆盖本地的改动。如果本地文件发生改动,加上这个选项sync依然报错。
目前没有找到 repo sync 命令可以强制覆盖本地修改的选项。
-f, –force-broken:当有git库sync失败了,不中断整个同步操作,继续同步其他的git库。 
–no-clone-bundle:在向服务器发起请求时,为了做到尽快的响应速度,会用到内容分发网络(CDN, Content Delivery Network)。同步操作也会通过CDN与就近的服务器建立连接, 使用HTTP/HTTPS的$URL/clone.bundle来初始化本地的git库,clone.bundle实际上是远程git库的镜像,通过HTTP直接下载,这会更好的利用网络带宽,加快下载速度。

repo init -u xxx/manifest.git -b xxx -m xxx --repo-url=git://codeaurora.org/tools/repo.git --repo-branch=caf-stable
repo相当于一个批处理文件,使用repo脚本可以一次下载多个Git 仓库的内容,避免多次git clone,并能进行更好的管理和使用。
用 repo 拿的时候其实 .git 统统会放在 .repo 里,然后外面的.git都只是link。

repo脚本有如下可用参数:
--repo-url=URL
repo 工具本身的 git 库地址。缺省为:git://android.git.kernel.org/tools/repo.git
--repo-branch=REVISION    使用repo的版本库,即repo git库的分支或者里程碑名称。缺省为caf-stable
--no-repo-verify                 设定不要对repo的里程碑签名进行严格的验证。
-u(--manifest-url)               设定清单库的Git服务器地址。
-b(--manifest-branch)        检出清单库的特定分支。
--mirror                              只在repo第一次初始化的时候使用,建立本地镜像
-m(--manifest-name)         指定清单库中的某个清单为有效的清单文件。默认为default.xml。
--no-tags                           don't fetch tags                                      
repo 命令参数的含义,可以执行repo help command(sync)来看。

命令rep init完成如下操作:
1.完成repo工具的完整下载,执行的repo脚本只是一个引导工具,并不是下载代码的脚本。
2.克隆清单库manifest.git到目录.repo/manifests/下。(地址来自于-u参数)
3.清单文件.repo/manifest.xml只是符号链接,它指向.repo/manifests/default.xml。
4.如果.repo/manifests/目录中有多个xml文件,repo init -m 参数可以任意选择其中一个,默认是default.xml。

清单文件解析:
一个清单库文件可以包含多个清单文件(标签include)。
manifest的3个属性revision、upstream、dest-branch:
revision:是修订的版本,通常指向一个具体的commit-id,repo sync之后会checkout到该commit-id;如果是分支名称,则repo sync之后,checkout到当前分支最新commit-id;
upstream:是一个分支名称,和revision匹配,如果revision是分支名称,则upstream不起作用,如果revision是commit-id,则upstream则是该commit对象所在的分支;
dest-branch:项目所属的目标分支,当使用repo upload(gerrit)命令的时候,代码会上传到该分支,如果不使用gerrit,可以不指定该值;
使用repo manifest -r查看当前的manifest信息;
remote元素:<remote  fetch="../"  name="origin"  review="http://IP:8080"/>
属性fetch:下载的相对路径
属性name:远程版本库命
属性review:基址
default元素:<default remote="origin" revision="branchName" sync-j="4"/>
设置默认版本库和分支。各个项目(project元素)可以定义自己的remote和revision覆盖默认的配置。
project元素:
<project name="device/mediatek/common" path="device/mediatek/common">
        <copyfile dest="mk" src="mk"/>
</project>

子元素copyfile:定义了克隆后的一个附加动作,从src拷贝到dest

以下命令非常有用!-p参数可以打印出project,注意顺序。
repo forall -p -c "git push origin HEAD:refs/heads/mtk_8.1_6763 2>&1 | tee" >> push.log

repo list    ##列出本地下载的所有project的path和name,冒号分隔。
Options:
-h, --help      查看帮助信息
-f, —fullpath    查看工程的完整路径
-n, --name-only  查看工程的名字
-p, --path-only  查看工程路径名字

repo forall [project-list] -c command
对指定的project列表或所有Project执行命令command,加上-p参数可打印出Project的路径。-c参数表示当前分支。
在每个项目中运行指定的 shell 命令。通过 repo forall 可使用下列额外的环境变量:
REPO_PROJECT 设为了项目的唯一名称。
REPO_PATH 是相对于客户端根目录的路径。
REPO_REMOTE 是清单中远程系统的名称。
REPO_LREV 是清单中修订版本的名称,已转换为本地跟踪分支。如果您需要将清单修订版本传递到某个本地运行的 Git 命令,则可使用此变量。
REPO_RREV 是清单中修订版本的名称,与清单中显示的名称完全一致。
工作运用:repo forall -c 'echo $REPO_PROJECT' > 102.list
repo forall -c 'echo =======$REPO_PROJECT======;git push --no-thin  ssh://xxx@xxx.com:29418/PHR/$REPO_PROJECT HEAD:refs/heads/xxx' (往另一个服务器push分支)
repo forall -c 'echo =======$REPO_PROJECT======;git remote add origin ssh://xxx.com:29418/$REPO_PROJECT' (添加remote)
repo forall -c 'echo =======$REPO_PROJECT ======;ssh gerritxx gerrit create-project xxx/$REPO_PROJECT --parent xxx/platform/art --branch master --empty-commit'(建仓库)

  • 25
    点赞
  • 168
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要在本地安装 Maven 仓库,可以按照以下步骤进行操作: 1. 首先,从 Maven 官方网站(https://maven.apache.org)下载最新版本的 Maven 安装文件。 2. 下载完成后,解压缩该文件并将其放置在您选择的目录中。确保您已经在系统的环境变量中设置了 Maven 的路径。 3. 安装完成后,打开终端或命令提示符窗口,并运行命令 "mvn -v" 来验证 Maven 是否正确安装。如果您看到了 Maven 的版本号等信息,则说明安装成功。 4. 下一步是配置 Maven 的本地仓库。在 Maven 安装目录下的 "conf" 文件夹中,找到 "settings.xml" 文件,并使用文本编辑器打开。 5. 在打开的 "settings.xml" 文件中,找到 "localRepository" 元素。该元素位于注释中,并且通常位于 "<localRepository>" 标签下方。您可以使用绝对路径或相对路径指定本地仓库的位置。 6. 设置 "localRepository" 元素的值为您希望本地仓库所在的路径。例如,您可以将其设置为 "C:\Users\YourUserName\.m2\repository" 或 "/home/YourUserName/.m2/repository"。 7. 保存 "settings.xml" 文件并关闭编辑器。 8. 至此,您已经成功完成了 Maven 的本地仓库的安装。您可以使用 Maven 命令进行项目构建、依赖管理等操作,Maven 将自动将相关的依赖下载到本地仓库中。 总结一下,要在本地安装 Maven 仓库,首先需要下载并解压 Maven 安装文件,然后配置本地仓库的位置,并验证安装是否成功。这样,您就可以开始使用 Maven 进行项目管理和构建了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值