repo 的妙用

这个想法已经在我心底很久了,然而一直没着手去验证是否可行,终于,在今天。。。

弄过 Android 源码编译的小伙伴都知道,repo 是管理 Android 项目的工具。

我们通过 repo init [url] 来初始化项目仓库。

这时,我们的当前目录下会生成一个 .repo 目录,我们可以在 .repo 下新建一个 local_manifests,并在其目录下新建一个任意名字的 XML 文件,当我们 repo sync 后,local_manifests 里 XML 文件中的内容也会一起被同步。

通过 .repo/docs/manifest-format.txt 我得知 repo 可以通过以下代码来创建软链接。

1
2

<linkfile src="real_file_or_dir_path" dest="source_path"/>

由于我硬盘内存放大量不同的 Android 源码( Lineage 、 Mokee 等等)。但是,有些是可以通用的,比如 kernel 亦或者从厂商 ROM 里拉取的 vendor。

由此我不经在想,我能否通过上述 repo 的语法从本地弄一个软链接,让多套源码共用,以达到节省本地硬盘空间的目的呢?

通过实验证明,我的想法是可以实现的。

方法

首先我们在 GitHub 或者码云创建一个项目仓库。

PS:如果不想让别人看到的话推荐用码云,可以免费创建私有仓库。

创建仓库的目的有两点:

第一,这是 linkfile 执行的基础。

文字解释过于麻烦,我们结合下面一段代码。

1
2
3
4
5
6
7
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<project path="omico/linker" name="Omico/linker" remote="github" revision="master">
<linkfile src="/home/yuwen/1" dest="test1"/>
</project>
<linkfile src="/home/yuwen/2" dest="test2"/>
</manifest>

以上是一段示例,结果是 test1 被创建成功,而 test2 并没有。

第二,我们可以通过此仓库来实现备份

至此,结束。

还有疑问的可以参考我这个公开的仓库。

https://github.com/Omico/linker