<?xml version="1.0" encoding="UTF-8"?> <manifest> <remote name="bare" fetch="file:///home/fangqiang/maketest/git/bare3/" /> <default revision="branch_name" remote="bare" /> // revision 为每个项目指定分支 <project name="test" path="test" groups="g1" revision="master"/> // revision 可以指定master, SHA,但是不能用tag(很奇怪) <project name="test2" path="test2" groups="g2" revision="17beafc4f040b1801e56e33e0ff2cba7c52f0d8d"/> </manifest>
repo init -u 指定从哪个仓库下载, -b 指定分支, -m 指定manifest文件名称(默认master) -g 指定项目组。
每次执行repo sync之后,执行一遍repo sync -r -o my_manifest.xml会成一个记录当前版本所有SHA值得manifest.xml文件(我猜测这个操作的底层是将repo sync之后每隔仓库中的 .git/HEAD文件中的值取出来而已)
<?xml version="1.0" encoding="UTF-8"?> <manifest> <remote fetch="url" name="re"/> <default remote="re" revision="master"/> <project name="fang/test" path="test"/> </manifest>
<?xml version="1.0" encoding="UTF-8"?> <manifest> <remote fetch="url" name="re"/> <default remote="re" revision="master"/> <project name="fang/test" path="test" revision="d9b86b0ef8a373e3be6705f9f6ef4bb91e892d38" upstream="master"/> </manifest>
Android使用repo来管理多个git项目。它需要一个manifest XML文件来指示这些git项目的属性。
repo manifest XML可以包含下面的元素:
本地的manifest文件存放在$(TOP_DIR)/.repo/local_manifest/*.xml。$TOP_DIR/.repo/local_manifests/local_manifest.xml 如果存在,会被最先装入。然后是以字母顺序的$TOP_DIR/.repo/local_manifests/*.xml文件。这些manifest会在repo sync 之前被处理。以便repo下载和管理额外的project。 Example: $ ls .repo/local_manifests local_manifest.xml another_local_manifest.xml $ cat.repo/local_manifests/local_manifest.xml <?xml version="1.0"encoding="UTF-8"?> <manifest> <project path="manifest" name="tools/manifest"/> <projectpath="platform-manifest" name="platform/manifest"/> </manifest>