分叉 AOSP 清单后如何正确 运行 回购同步?
How to properly run repo sync after forking AOSP manifest?
最近我决定深入 Android 开源项目世界。这就是我对 AOSP 生活的想象:
为了深入了解 AOSP 世界,我需要动手修改项目中的代码。我将在三台不同的计算机上执行此操作,因此我需要将我的工作存储在远程 git 存储库中。所以我需要在我自己的 github 帐户中创建 AOSP 清单并从中开始工作。
稍后说我尝试玩框架项目,然后我需要将这个项目分叉到我自己的 github 帐户中:
<project path="frameworks/base" name="platform/frameworks/base" groups="pdk-cw-fs,pdk-fs" />
理想情况下,当我执行本地回购同步时,frameworks/base 项目将从我自己的 github 帐户获取,所有其他项目将从 google git 回购。
这是我的实际操作:
我想做的是将 AOSP 清单 git 回购分叉到我的 github 并从那里开始工作。然后我做:
repo sync -u git@github.com:my_own_github_account/platform_manifest.git
然后我做:
repo sync
但是我在控制台中收到了很多错误,例如:
fatal: remote error:
my_own_github_account/platform/external/libopus is not a valid repository name
Email support@github.com for help
似乎 repo 将假定项目将来自与清单项目相同的基础。我不确定如何正确地与分叉的清单进行回购同步。
此外,我不确定我尝试开始 AOSP 工作的方式是否愚蠢或不专业。如果是这样,如果您能指出正确的方法,我将不胜感激。提前致谢。
实际上我发现这里 post 几乎完美地回答了我的问题:https://www.primianotucci.com/blog/fork-android-on-github.
我无法进行回购同步的原因是因为回购文件中的这一行:
<remote name="aosp"
fetch=".."
review="https://android-review.googlesource.com/" />
两个点表示获取相对于 repo 清单项目本身的项目。这就是回购试图从 my_own_github_account
同步的原因
然后我改成了
<remote name="aosp"
fetch="https://android.googlesource.com" />
然后回购同步正常工作。
如果我想从我自己的 github 帐户同步特定项目怎么办?
当然,您需要将该项目镜像到您自己的 github 帐户。然后像这样修改清单文件:
将此行添加到清单文件:
<remote name="origin" fetch="https://github.com/my_own_github_account" />
名称是您要用于自己的子项目的远程抓取源。
然后添加:
<project path="frameworks/base" name="platform/base"
remote="origin" revision="your_default_revision" />
请注意,为了覆盖默认的远程抓取源,您需要添加 remote="origin"
。
然后当您执行 repo sync
时,repo 将从您自己的 github 帐户获取 framework/base 并从 google 来源获取其他项目。
最近我决定深入 Android 开源项目世界。这就是我对 AOSP 生活的想象:
为了深入了解 AOSP 世界,我需要动手修改项目中的代码。我将在三台不同的计算机上执行此操作,因此我需要将我的工作存储在远程 git 存储库中。所以我需要在我自己的 github 帐户中创建 AOSP 清单并从中开始工作。
稍后说我尝试玩框架项目,然后我需要将这个项目分叉到我自己的 github 帐户中:
<project path="frameworks/base" name="platform/frameworks/base" groups="pdk-cw-fs,pdk-fs" />
理想情况下,当我执行本地回购同步时,frameworks/base 项目将从我自己的 github 帐户获取,所有其他项目将从 google git 回购。
这是我的实际操作:
我想做的是将 AOSP 清单 git 回购分叉到我的 github 并从那里开始工作。然后我做:
repo sync -u git@github.com:my_own_github_account/platform_manifest.git
然后我做:
repo sync
但是我在控制台中收到了很多错误,例如:
fatal: remote error:
my_own_github_account/platform/external/libopus is not a valid repository name
Email support@github.com for help
似乎 repo 将假定项目将来自与清单项目相同的基础。我不确定如何正确地与分叉的清单进行回购同步。
此外,我不确定我尝试开始 AOSP 工作的方式是否愚蠢或不专业。如果是这样,如果您能指出正确的方法,我将不胜感激。提前致谢。
实际上我发现这里 post 几乎完美地回答了我的问题:https://www.primianotucci.com/blog/fork-android-on-github.
我无法进行回购同步的原因是因为回购文件中的这一行:
<remote name="aosp"
fetch=".."
review="https://android-review.googlesource.com/" />
两个点表示获取相对于 repo 清单项目本身的项目。这就是回购试图从 my_own_github_account
同步的原因然后我改成了
<remote name="aosp"
fetch="https://android.googlesource.com" />
然后回购同步正常工作。
如果我想从我自己的 github 帐户同步特定项目怎么办?
当然,您需要将该项目镜像到您自己的 github 帐户。然后像这样修改清单文件:
将此行添加到清单文件:
<remote name="origin" fetch="https://github.com/my_own_github_account" />
名称是您要用于自己的子项目的远程抓取源。
然后添加:
<project path="frameworks/base" name="platform/base"
remote="origin" revision="your_default_revision" />
请注意,为了覆盖默认的远程抓取源,您需要添加 remote="origin"
。
然后当您执行 repo sync
时,repo 将从您自己的 github 帐户获取 framework/base 并从 google 来源获取其他项目。