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

2023-11-22

我正在尝试创建 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 I see:

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 I get:

no branches ready for upload

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

$ 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

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


The repo start命令基于当前上游分支创建本地分支。跑步repo upload将上传当前签出分支上的所有本地提交,以供审核到清单文件中列出的 Gerrit 服务器托管的上游分支。如果您想要执行的推送类型与此用例不匹配,您将必须使用底层 Git 命令进行推送。您仍然可以使用repo start虽然(但你不必)。

要创建清单分支,repo start and repo upload没有用。与 Repo 管理的其他 git 不同,您应该对清单 git 进行所有更改defaultRepo 为您检查的分支。然后,使用普通的 Git 命令来推送更改。

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

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

现在,这本身并不是很有用,因为您的清单的内容与上游分支相同 - 我们刚刚克隆了清单的该分支,所以当您can run

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

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

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

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

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

请注意 HEAD 的使用,它是当前签出的提交的符号名称。对每个 git 执行此操作非常乏味,因此请使用repo forall命令:

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

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

See repo help forall用于运行命令的可用环境变量列表repo forall (REPO_PROJECT, $REPO_LREV, and $REPO_RREV可能是最有用的)。

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

现在你将拥有一个mybranch分支在你所有的git中,包括清单。剩下的就是改变清单,以便

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

实际上会检查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 清单分支可能就是这种情况,但在其他情况下,某些 git 不会使用默认修订版,而是用自己的修订版属性覆盖它。这完全没问题,但它需要您进行额外的清单更改。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将repo分支推送到本地AOSP镜像 的相关文章

  • 应用程序在加载 xml 布局文件的主线程中做了太多工作

    我正在制作一个 9x9 数独网格 其中 81 个单元格本身就是一个 3x3 网格 单个细胞看起来像这样 1 2 3 4 5 6 7 8 9 每个数字代表该单元格的铅笔注释 我有一个名为 cell layout xml 的文件 表示这种 3x
  • 如何使用 gradle 从 3 个子模块构建 1 个 jar

    I have 安卓工作室3 gradle 4 1 梯度工具3 classpath com android tools build gradle 3 0 1 当我有一个模块并使用 gradle 工具 2 时 我使用了 task makeJar
  • 如何从Firebase Firestore实时更新文档中获取修改后的字段或数据? [复制]

    这个问题在这里已经有答案了 我有多个文档 我的问题是我无法获取修改的特定数据 我正在获取完整的文档 db collection employees whereEqualTo OID OID addSnapshotListener new E
  • 使用 Fragment 在工具栏中实现 SearchView

    当前情况 我的应用程序主页由导航抽屉组成 因此我将视图作为片段加载 我的工具栏中也有搜索图标 我在中实现了它menu xml 下一步我实施了SearchView通过以下问题的答案来获取搜索图标在工具栏中实现搜索 https stackove
  • 拖动时跳转 ImageView。 getX() 和 getY() 值正在跳跃

    我创建了一个用于拖动视图的 onTouchListener 如果我使用的话 图像可以顺利拖动getRawX and getRawY 问题是 当您向下放置第二个指针然后抬起第一个指针时 图像将跳转到第二个指针 此 onTouchListene
  • 为什么反射会减慢Android手机的速度

    我多次读到反射会降低手机性能 这有多真实 例如 在我的例子中 我从 Web 服务获取一些参数 这些参数与我在 Android 应用程序中的类的参数同名 所以我只是使用java字段和反射设置这些参数的值 它似乎并没有降低性能 有人可以向我解释
  • 覆盖 Android 中的电源按钮

    我正在开发一个应用程序 其中我需要在按下电源按钮时执行一个操作 但不幸的是我无法处理按下电源按钮时的操作 我尝试使用 onKeyDown 和dispatchKeyEvent 方法 但似乎没有任何效果 任何人都可以建议我解决这个问题的任何其他
  • 错误类型 3 - 活动类不存在

    我正在尝试运行 webRTC 应用程序 但返回以下错误 启动应用程序 com onlinevoicecallapp com onlinevoicecallapp MainActivity 设备外壳命令 am start n com onli
  • ExpandableListview OnGroupClickListener 未触发

    我正在关注这个 以编程方式折叠 ExpandableListView 中的组 https stackoverflow com questions 4314777 programmatically collapse a group in ex
  • 如何使用 SharedPreferences 保存多个值?

    我正在开发一个字典应用程序 在我的应用程序中 我假设用户想要保存最喜欢的单词 我决定使用共享首选项保存这些值 我知道 SQLite 和文件更好 但我坚持使用 SharedPreferences 所以继续使用它 下面是我的代码 Overrid
  • 无法使用 findViewById() 找到视图

    我找不到TextView通过致电findViewById 即使 ID 确实存在 OtherActivity public class OtherActivity extends Activity Override protected voi
  • 哪个视图最亮?

    在Android中 哪个是轻量级视图 例如 View Textview Edittext 等 在某些情况下 我们需要使用视图来填充区域而不向用户显示视图 同时屏幕加载速度应该很快 您可以使用空间 android widget Space S
  • Android SearchView 在启动时隐藏键盘

    我有一个小问题正在尝试解决 当我打开应用程序时 键盘会显示输入搜索视图的查询 不过 我只想在单击搜索视图时显示键盘 我该如何解决 Thanks 这对我有用 用于隐藏焦点的代码 searchView SearchView view findV
  • 如何将样式应用于我拥有的所有 TextView? [复制]

    这个问题在这里已经有答案了 可能的重复 设计所有 TextView 或自定义视图 的样式 而不向每个 TextView 添加样式属性 https stackoverflow com questions 6801890 styling all
  • fs-extra:源和目标不能相同。 (科尔多瓦)

    我在使用 cordova 构建时遇到错误 Error Source and destination must not be the same 构建系统 Ionic ionic cli 4 10 1 ionic framework ionic
  • Android-dispatchTouchEvent 给了我一个 StackOverflowError

    这里我有一个带有 setOnTouchListener 的 ViewFlipper 它工作得很好 然后我膨胀 ReLayNewsItem 然后将其添加到 ViewFlipper 现在我希望 WebView web 监听触摸事件并将它们传递给
  • 丢失应用程序的密钥库文件(但已启用 Google Play 应用程序签名)

    我已经失去了原来的keystore用于签署我的应用程序的文件 我的应用启用了 Google Play 应用签名 如果我联系 Google 支持人员 是否可以重置密钥 以便我可以继续上传到此包 我希望我可以做到这一点 因为应用程序签名已启用
  • 从文件路径显示图像视图?

    我需要仅使用文件名而不是资源 ID 来显示图像 ImageView imgView new ImageView this imgView setBackgroundResource R drawable img1 我在可绘制文件夹中有图像
  • 如何访问我的 Android 程序中的联系人

    我正在制作一个短信应用程序 并且想要访问我的 Android 应用程序中的联系人 我想访问联系人 就像他们在实际联系人列表中一样 选择后 我需要返回到我的活动 在其中我可以向该人发送短信 或者是否可以访问存储联系人的数据库 我的代码如下所示
  • Android GetPTLAFormat 上的 Phonegap 错误

    我们正在开发一个使用 jQuery 移动和电话间隙的应用程序 一切似乎都工作正常 但是当在连接的 Android 手机上运行应用程序时 我们在 Eclipse logcat 中看到大量类似这样的错误 0 GetPTLAFormat inva

随机推荐