たとえば、$HOME
は/home/consy/
で、$AOSP_ROOT
は/home/consy/aosp/
です。あなたがrepo sync
を実行したときに
#init a local bare repo as the remote repo of `mydevice`
cd $AOSP_ROOT/device/
git init mydevice
git commit --allow-empty -m 'init repository'
cd $HOME
git clone $AOSP_ROOT/device --bare -- mydevice.git
cd $AOSP_ROOT/device
rm -rf mydevice
#create .repo/local_manifests (this is a feature of repo)
mkdir -p $AOSP_ROOT/.repo/local_manifests
#create a manifest under `local_manifests`.
#You can name it whatever you like except that the manifest's content should be like:
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote fetch="file:///home/consy/" name="this"/>
<default remote="this" revision="master"/>
<project name="mydevice" path="device/mydevice"/>
</manifest>
は今、ローカルマニフェストで定義されたプロジェクト(複数可)$AOSP_ROOT
などの追加プロジェクトに追加されます。これらの余分なプロジェクトを操作するには、repo status
のようなrepoコマンドを使用できます。リポジトリは/home/consy/mydevice.git
からクローンされ、$AOSP_ROOT/device/mydevice
にチェックアウトされます。 $AOSP_ROOT/device/mydevice
の下に新しいコミットを作成した後、git push this <ref>:<ref>
を実行して、コミットを/home/consy/mydevice.git
にアップロードできます。後で、この新しいリポジトリをGithubや自分のGerritのような実際のホストに公開する準備が整ったら、GithubやGerritに新しいリモートポインティングを追加して、それを押し通すことができます。その後、repo init
のときに使用するメインマニフェストにプロジェクト定義<project name="mydevice" path="device/mydevice"/>
を追加し、変更をコミットしてリモートマニフェストリポジトリにプッシュします。その後、プロジェクト重複エラーを避けるために、$AOSP_ROOT/.repo/local_manifests
のローカルマニフェストを削除することができます。
ローカルマニフェスト機能については、 Local Manifests
(https://gerrit.googlesource.com/git-repo/+/master/docs/manifest-format.txt)を参照してください。