jjzjj

android - 将 repo 分支推送到本地 AOSP 镜像

coder 2023-11-30 原文

我正在尝试创建 AOSP 的新分支(在我的开发机器上)并将其推送到本地镜像(在同一 LAN 上的服务器上)。我找不到解释如何执行此操作的“repo”工具的文档。

我使用以下方法在我的服务器上创建了 AOSP 源的镜像:

$ mkdir -p ~/aosp/mirror
$ cd ~/aosp/mirror
$ repo init -u https://android.googlesource.com/mirror/manifest --mirror

然后我在另一台电脑上同步:

 $ repo init -u <USERNAME>@<IP_OF_SERVER>:/home/<USERNAME>/aosp/mirror/platform/manifest.git -b android-4.2.2_1
 $ repo sync

到目前为止一切顺利。我正在使用“-b android-4.2.2_1”,因为我需要我的开发使用这个版本的 JellyBean 作为基准。

然后我使用“repo start”创建一个新分支:

$ repo start my-branch-name --all

还是不错的。问题是,我不知道如何将这个分支“推送”到远程服务器。

当我执行 repo info 时,我看到:

Manifest branch: refs/tags/android-4.2.2_r1
Manifest merge branch: android-4.2.2_r1
Manifest groups: all,-notdefault
----------------------------
Project: platform/abi/cpp
Mount path: /home/<username>/<project_name>/android/abi/cpp
Current revision: refs/tags/android-4.2.2_r1
Local Branches: 1 [my-branch-name]
---------------------------
....

当我尝试 repo upload 时,我得到:

no branches ready for upload

然后我尝试了 repo forall -c "git push aosp my-branch-name" 确实将本地分支推送到每个远程存储库,但看起来像这样不是正确的方法。特别是,如果我尝试创建一个新客户端,并尝试同步到它不起作用的分支。

$ repo init -u <USERNAME>@<IP_OF_SERVER>:/home/<USERNAME>/aosp/mirror/platform/manifest.git -b my-branch-name
error: revision my-branch-name in manifests not found

创建“ list 分支”的正确方法是什么?

最佳答案

repo start 命令基于当前上游分支创建一个本地分支。运行 repo upload 会将当前 checkout 分支上的任何本地提交上传到由 list 文件中列出的 Gerrit 服务器托管的上游分支以供审查。如果您要执行的推送类型与此用例不匹配,您将不得不使用底层 Git 命令进行推送。不过,您仍然可以使用 repo start(但不是必须的)。

要创建 list 分支,repo startrepo upload 没有用。与 Repo 管理的其他 git 不同,您应该在 Repo 为您 checkout 的 default 分支上对 list git 进行所有更改。然后,使用简单的 Git 命令来推送您的更改。

以下示例展示了如何创建一个名为 mybranch 的新 list 分支,与当前上游相同。

cd .repo/manifests
git push origin default:refs/heads/mybranch

现在,这本身并不是很有用,因为 list 的内容与上游分支相同——我们刚刚克隆了 list 的那个分支,所以您可以运行 p>

repo init -u ssh://git.example.com/platform/manifest -b mybranch

结果将与您开始时的结果相同:

repo init -u ssh://git.example.com/platform/manifest -b android-4.2.2_1

为了使您的镜像有用,您还必须对 list 中列出的每个 git 进行分支,以便您在服务器上获得一个可以进行更改的分支。

理论上,您可以对从上游下载的相同分支进行更改,但是当您下次尝试从上游同步时,这会造成困惑。不要那样做。

要在服务器上创建分支,您可以遵循与 list 相同的模式:

cd build
git push ssh://git.example.com/platform/build HEAD:refs/heads/mybranch

注意 HEAD 的使用,它是当前 check out 提交的符号名称。对每个 git 都这样做很乏味,所以使用 repo forall 命令:

repo forall -c 'git push aosp HEAD:refs/heads/mybranch'

请注意,远程名称与 list git (IIRC) 不同。

请参阅 repo help forall 以获取可用于 repo forall 运行的命令的环境变量列表(REPO_PROJECT$REPO_LREV$REPO_RREV 可能是最有用的)。

repo forall 很容易搞砸,所以养成一个好习惯,先在命令前加上 echo run 回显到您的终端。如果您对结果满意,请删除 echo 以真正运行命令。

到现在为止,您的所有 git 中都会有一个 mybranch 分支,包括 list 。剩下的就是更改 list ,以便

repo init -u ssh://git.example.com/platform/manifest -b mybranch

实际上会检查所有 git 中的 mybranch

cd .repo/manifests
vi default.xml
[ Change the default revision from refs/tags/android-4.2.2_1
  or whatever it says to 'mybranch'. ]
git commit -a -m 'Changed default revision to mybranch.'
git push origin default:refs/heads/mybranch

请注意,所有 git 不一定都使用默认修订版(您刚刚将其更改为 mybranch)。 android-4.2.2_1 list 分支可能就是这种情况,但在其他情况下,某些 git 不会使用默认修订版,而是使用自己的修订版属性覆盖它。这很好,但它需要您进行额外的 list 更改。

关于android - 将 repo 分支推送到本地 AOSP 镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19530585/

有关android - 将 repo 分支推送到本地 AOSP 镜像的更多相关文章

  1. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  2. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  3. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

    我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

  4. 安卓apk修改(Android反编译apk) - 2

    最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路

  5. ruby - 未定义的方法 auto_upgrade!将 Sinatra/DataMapper 应用程序推送到 Heroku 时 - 2

    有谁知道在Heroku的Bamboo堆栈上启动并运行使用DataMapper的Sinatra应用程序所需的魔法咒语?Bamboo堆栈不包含任何预安装的系统gem,无论我尝试使用何种gem组合,我都会不断收到此错误:undefinedmethod`auto_upgrade!'forDataMapper:Module(NoMethodError)这是我的.gems文件中的内容:sinatrapgdatamapperdo_postgresdm-postgres-adapter这些是我将应用程序推送到Heroku时安装的依赖项:----->Herokureceivingpush----->Si

  6. ruby - 在 Rails 项目中测试本地版本的 gem - 2

    我的Rails站点使用了一个确实不是很好的gem。每次我需要做一些新的事情时,我最终不得不花费与向实际Rails项目添加代码一样多的时间来为gem添加功能。但我不介意,我将我的Gemfile设置为指向我的gem的GitHub分支(我尝试提交PR,但维护者似乎已经下台)。问题是我真的没有找到一种合理的方法来测试我添加到gem的新东西。在railsc中测试它会特别好,但我能想到的唯一方法是a)更改~/.rvm/gems/.../foo。rb,这看起来不对或者b)升级版本,推送到Github,然后运行​​bundleup,这除了耗时之外显然是一场灾难,因为我不确定我所做的promise是否正

  7. ruby - 如何捕获所有 HTTP 流量(本地代理) - 2

    我希望访问我机器上的所有HTTP流量(我的Windows机器-不是服务器)。据我了解,拥有一个本地代理是所有流量路线的必经之路。我一直在谷歌搜索但未能找到任何资源(关于Ruby)来帮助我。非常感谢任何提示或链接。 最佳答案 WEBrick中有一个HTTP代理(Rubystdlib的一部分)和here's一个实现示例。如果你喜欢生活在边缘,还有em-proxy伊利亚·格里戈里克。这postIlya暗示它似乎确实需要一些调整来解决您的问题。 关于ruby-如何捕获所有HTTP流量(本地代理)

  8. ruby-on-rails - Ruby on Rails - 需要在每周的特定时间将消息发送到电子邮件 - 2

    我想知道我应该如何着手这个项目。我需要每周向人们发送一次电子邮件。但是,这必须在每周的特定时间自动生成并发送。编码有多难?我需要知道是否有任何书籍可以提供帮助,或者你们中的任何人是否可以指导我。它必须使用ruby​​onrails进行编程。因此有一个网络服务和数据库集成。干杯 最佳答案 为什么这么复杂?您只需安排工作。您可以使用Delayed::Job例如。Delayed::Job让您可以使用run_at符号在特定时间安排作业,如下所示:Delayed::Job.enqueue(SendEmailJob.new(...),:run_

  9. ruby-on-rails - Rails 3,在RAILS_ROOT上方显示来自本地文件系统的jpg图片 - 2

    我正在尝试找出一种方法来显示来自不在RAILS_ROOT下(在RedHat或Ubuntu环境中)的已安装文件系统的图像。我不想使用符号链接(symboliclink),因为这个应用程序实际上是通过Tomcat部署的,而当我关闭Tomcat时,Tomcat会尝试跟随符号链接(symboliclink)并删除挂载中的所有图像。由于这些文件的数量和大小,将图像放在public/images下也不是一种选择。我查看了send_file,但它只会显示一张图片。我需要在一个格式良好的页面中显示6个请求的图像。由于膨胀,我宁愿不使用Base64编码,但我不知道如何将图像数据与呈现的页面一起传递下去。

  10. Ruby 服务器在本地主机(teambox)之外非常慢 - 2

    我刚刚在我的Ubuntu9.10服务器上安装了TeamBox。我使用提供的服务器脚本在端口3000上启动并运行它。它的运行速度非常慢,从另一台计算机连接时每个HTTP请求最多需要30秒。我使用链接从shell加载TeamBox,一点也不花时间。然后我设置了一个SSH隧道,它再次运行得非常快。我通过此服务器上的apache以及SAMBA等运行了大约30个虚拟主机,没有任何问题。我该如何解决这个问题? 最佳答案 我的redmine(ruby,webrick)太慢了。现在我解决了这个问题:apt-getinstallmongrelruby

随机推荐