将新 git 添加到 AOSP 存储库
Adding new git into AOSP repo
我在 $AOSP_ROOT/device/
下创建了一个新设备 mydevice/
。我正在尝试将 git 添加到 $AOSP_ROOT/.repo
以用于本地跟踪目的,我发现如果在执行 repo status
或 repo diff
时可以看到更改,这将非常有用。这些是我尝试过的步骤:
- 在
mydevice
文件夹中执行 git init
,不提交更改
- 将项目添加到
$AOSP_ROOT/.repo/manifest.xml
不幸的是,当我执行 repo status
我的项目没有反映在输出中。我做错了什么?
假设 $HOME
是 /home/consy/
,$AOSP_ROOT
是 /home/consy/aosp/
。
#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>
现在,当您 运行 repo sync
时,本地清单中定义的项目将作为额外项目添加到 $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 并推送它。然后将项目定义 <project name="mydevice" path="device/mydevice"/>
添加到您在 repo init
时使用的主清单中,提交更改并推送到远程清单存储库。之后,您可以删除 $AOSP_ROOT/.repo/local_manifests
下的本地清单以避免重复项目错误。
关于本地清单功能,请参阅 https://gerrit.googlesource.com/git-repo/+/master/docs/manifest-format.md 中的
Local Manifests
。如果link无法访问,google repo manifest format
.
我在 $AOSP_ROOT/device/
下创建了一个新设备 mydevice/
。我正在尝试将 git 添加到 $AOSP_ROOT/.repo
以用于本地跟踪目的,我发现如果在执行 repo status
或 repo diff
时可以看到更改,这将非常有用。这些是我尝试过的步骤:
- 在
mydevice
文件夹中执行git init
,不提交更改 - 将项目添加到
$AOSP_ROOT/.repo/manifest.xml
不幸的是,当我执行 repo status
我的项目没有反映在输出中。我做错了什么?
假设 $HOME
是 /home/consy/
,$AOSP_ROOT
是 /home/consy/aosp/
。
#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>
现在,当您 运行 repo sync
时,本地清单中定义的项目将作为额外项目添加到 $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 并推送它。然后将项目定义 <project name="mydevice" path="device/mydevice"/>
添加到您在 repo init
时使用的主清单中,提交更改并推送到远程清单存储库。之后,您可以删除 $AOSP_ROOT/.repo/local_manifests
下的本地清单以避免重复项目错误。
关于本地清单功能,请参阅 https://gerrit.googlesource.com/git-repo/+/master/docs/manifest-format.md 中的
Local Manifests
。如果link无法访问,google repo manifest format
.