2017-08-29 145 views
0

我正在开发Android源代码,并使用镜像来让同步时间更快。不同分支的Git镜像

$ mkdir mirror 
$ cd mirror 
$ repo init branchA --mirror 
$ repo sync 

然后,我可以使用这个镜像,当我需要每次同步branchA时。

$ repo init branchA --reference=/.../mirror 
$ repo sync 

但是现在,我有一个问题,我有其他分支是与branchA相关的。例如,branchB基于branchA,而banchC基于branchB。在这种情况下,我应该需要三个不同的镜子吗?

如果我只同步branchC的镜像,我可以用这个镜像来同步branchA和branchB吗?

如果我只同步branchA的镜像,我可以用这个镜像来同步branchB和branchC吗?

回答

1

您只需要一面镜子。

Repo的镜像存储库已完全克隆。它们包含从所有分支,标签和其他引用可到达的每个git对象。 repo sync的选项-c仅下载当前的ref及其对象,在镜像存储库中不起作用。

即使镜像只有一个分支的数据,您仍然可以使用它作为参考下载其他裁判。将从远程服务器下载在镜像中找不到的缺失参考和对象。你不会错过工作仓库中的任何东西。

+0

谢谢,但我有关于镜子的大小的另一个问题。如果镜像只有一个分支的数据,它也可以用来同步其他分支的权利?它的大小呢?镜子的大小将取决于分支的数量? –

+1

@KuanlinChen镜像提供了尽可能多的数据。镜像的大小取决于它拥有多少个git对象(提交,树,斑点和注释标记)。像分支或轻量级标签本身需要一些空间,但非常小。主要部分是从这些文献可到达的物体。如果100个分支指向相同的提交,那么镜像的大小几乎与只有一个分支指向同一提交的镜像大小相同。如果这100家分行非常分散,那么规模就要大得多。 – ElpieKay

+0

清楚的解释。 –