如何使用“repo init -m”切换清单文件

5
我是使用repo来构建Android的。我想从先前的版本构建(例如,上个月的构建#1234)。我会按照以下方式进行:

我从专门的清单副本开始,为每个软件包明确设置修订版:

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  ...
  <project name="packages/apps/Browser" revision="f42301ffb36a68fadffdb87fa1bdc09aceac53cb"/>
  <project name="packages/apps/Calculator" revision="481a23ed78397e35201de3638ec0d76797b77d25"/>
  <project name="packages/apps/Calendar" revision="19a0737be4d51aa71a0d122f5f24ab7e53869398"/>
  <project name="packages/apps/Camera" revision="67e6c190f82f0f7b8704fe5663eb92082c4cc943"/>
  ...
</manifest>

这基本上是default.xml的副本,但每个软件包的修订版本都是明确指定的,以便在创建构建#1234时使用。现在我会给出命令。
cp ~/manifest-build-1234.xml .repo/manifests
repo init -m manifest-build-1234.xml
repo sync

结果: 一些软件包被设置为清单中指定的版本,但其他一些软件包仍停留在之前的版本。
如果我完全删除那些软件包,并再次执行repo sync,则这些软件包将以正确版本检出。
所以我的问题是:除了在执行repo sync之前删除所有内容之外,如何确保所有软件包都以正确版本检出?

3
啊,重要提示:任何处于“分离头指针”状态的项目都已正确同步。我实际上在命名分支上的任何项目都会保持在该分支上。 - Edward Falk
2
好的,那么在开始“repo sync”之前,只需运行“repo abandon <branch_name>”即可。这只是一个解决方法。我不确定你的情况发生了什么。 - mrutyunjay
1
谢谢!我会尝试一下。"repo abandon"是"repo start"的相反操作吗? - Edward Falk
是的,它会删除名为<branch_name>的分支。 - mrutyunjay
谢谢,知道了这点很好。这一切都让人感到沮丧。昨天我在做一些工作时,我的所有“repo上传”一开始都失败了,因为我忘记了我上周做了“repo弃用”的操作。虽然很容易解决,但这些工作流程中的小故障非常令人恼火。 - Edward Falk
显示剩余2条评论
1个回答

2

使用repo命令时,可以添加--trace参数来查看执行repo命令时的步骤。例如:"repo --trace sync -j4"。


实际上,正是“repo abandon”注释解决了我的问题。 - Edward Falk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接