我正在尝试创建 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 start 和 repo 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/
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
有谁知道在Heroku的Bamboo堆栈上启动并运行使用DataMapper的Sinatra应用程序所需的魔法咒语?Bamboo堆栈不包含任何预安装的系统gem,无论我尝试使用何种gem组合,我都会不断收到此错误:undefinedmethod`auto_upgrade!'forDataMapper:Module(NoMethodError)这是我的.gems文件中的内容:sinatrapgdatamapperdo_postgresdm-postgres-adapter这些是我将应用程序推送到Heroku时安装的依赖项:----->Herokureceivingpush----->Si
我的Rails站点使用了一个确实不是很好的gem。每次我需要做一些新的事情时,我最终不得不花费与向实际Rails项目添加代码一样多的时间来为gem添加功能。但我不介意,我将我的Gemfile设置为指向我的gem的GitHub分支(我尝试提交PR,但维护者似乎已经下台)。问题是我真的没有找到一种合理的方法来测试我添加到gem的新东西。在railsc中测试它会特别好,但我能想到的唯一方法是a)更改~/.rvm/gems/.../foo。rb,这看起来不对或者b)升级版本,推送到Github,然后运行bundleup,这除了耗时之外显然是一场灾难,因为我不确定我所做的promise是否正
我希望访问我机器上的所有HTTP流量(我的Windows机器-不是服务器)。据我了解,拥有一个本地代理是所有流量路线的必经之路。我一直在谷歌搜索但未能找到任何资源(关于Ruby)来帮助我。非常感谢任何提示或链接。 最佳答案 WEBrick中有一个HTTP代理(Rubystdlib的一部分)和here's一个实现示例。如果你喜欢生活在边缘,还有em-proxy伊利亚·格里戈里克。这postIlya暗示它似乎确实需要一些调整来解决您的问题。 关于ruby-如何捕获所有HTTP流量(本地代理)
我想知道我应该如何着手这个项目。我需要每周向人们发送一次电子邮件。但是,这必须在每周的特定时间自动生成并发送。编码有多难?我需要知道是否有任何书籍可以提供帮助,或者你们中的任何人是否可以指导我。它必须使用rubyonrails进行编程。因此有一个网络服务和数据库集成。干杯 最佳答案 为什么这么复杂?您只需安排工作。您可以使用Delayed::Job例如。Delayed::Job让您可以使用run_at符号在特定时间安排作业,如下所示:Delayed::Job.enqueue(SendEmailJob.new(...),:run_
我正在尝试找出一种方法来显示来自不在RAILS_ROOT下(在RedHat或Ubuntu环境中)的已安装文件系统的图像。我不想使用符号链接(symboliclink),因为这个应用程序实际上是通过Tomcat部署的,而当我关闭Tomcat时,Tomcat会尝试跟随符号链接(symboliclink)并删除挂载中的所有图像。由于这些文件的数量和大小,将图像放在public/images下也不是一种选择。我查看了send_file,但它只会显示一张图片。我需要在一个格式良好的页面中显示6个请求的图像。由于膨胀,我宁愿不使用Base64编码,但我不知道如何将图像数据与呈现的页面一起传递下去。
我刚刚在我的Ubuntu9.10服务器上安装了TeamBox。我使用提供的服务器脚本在端口3000上启动并运行它。它的运行速度非常慢,从另一台计算机连接时每个HTTP请求最多需要30秒。我使用链接从shell加载TeamBox,一点也不花时间。然后我设置了一个SSH隧道,它再次运行得非常快。我通过此服务器上的apache以及SAMBA等运行了大约30个虚拟主机,没有任何问题。我该如何解决这个问题? 最佳答案 我的redmine(ruby,webrick)太慢了。现在我解决了这个问题:apt-getinstallmongrelruby