我已经下载了几个排列在不同源树中的 git 存储库:
- repoDirs1(包含子目录,包括供应商)
- repoDirs2(包含子目录,包括供应商)
- 特别回购1
- 特别回购2
为了获得可行的源代码树,我必须执行以下操作:
1. cp -rp repoDirs2/* repoDirs1/
2. cp -rp specialRepos1/vendor/* repoDirs1/vendor/
3. cp -rp specialRepos2/vendor/* repoDirs1/vendor/
这可行,但它改变了原始的 repoDirs1 源树,并给我使用 repo 命令管理它们带来了困难。
我搜索了一下,发现 mount 有一个选项可以进行叠加。然而,在阅读了多个示例之后,我仍然无法弄清楚如何编写正确的安装命令序列来解决我的问题。我要么得到overlayfsknown或其他错误的选项错误。
有人可以帮忙举一个清楚的例子吗?多谢。我使用的是ubuntu 20.04
答案1
未来的读者要小心: 这个问题要求合并两个包含很多子目录的目录。这不应该用于正常的 git 操作。为此,您通常应该尝试使用该.gitignore
文件或git 子模块。
如果您想将两个目录合并到一个位置,即使存在重叠文件,您也可以使用简单的 overridefs 挂载。在您要求的上下文中,最好将其作为只读overlayfs完成。如果要读/写,它将把所有更改的文件放在一个单独的目录中。您正在寻找的可能性极小。
要创建只读覆盖,您不指定upper
or workdir
:
mount -t overlay overlay -o lowerdir=specialRepos1/vendor/:specialRepos2/vendor/ repoDirs1/vendor/
Archlinux 对此功能有很好的描述: