我正在寻找一种实用的方法来处理私有和公共存储库,其中特定文件夹中私有存储库的内容可能与公共分支中的内容不同。此文件夹必须存在于两个分支中,并且其内容在两个存储库中都可以跟踪,但绝不能合并。
这是存储库的简化设置:
/folderA <-- public content
/folderB <-- mixed public & private content
/folderB/private.files <-- this file is different in public & private repos
/folderB/newPrivateFolder <-- private repo may add more private-only folders here
这些是我看似简单的要求,但我还没有找到一个好的工作解决方案:
private.files
必须以默认内容存在于公共repo 中,项目才能正常工作- 公共
private.files
回购中的更改不应与私人回购合并 private.files
必须在私人仓库中跟踪更改,因为团队成员需要它- 不得将私人
private.files
回购中的更改与公共回购合并 folderB
在私人仓库中添加的其他文件/文件夹绝不能添加到公共仓库中- 私人回购提交应该被隔离,私人回购的历史不应该与公共回购合并
私人回购是公共回购的副本。
我试过的:
- 包括公共回购作为子模块或子树
- 不能“覆盖”私有文件夹的内容,因为当将其作为子模块或子树包含时,更改会直接转到公共仓库
- 加:将整个项目包含为子树有点毫无意义,因为我想要同一个存储库的两个不同版本
- 稀疏结帐
- 合并仍然合并所有文件/文件夹,即使是那些未在本地分支中签出的文件/文件夹
- 属性合并过滤器
- 仅在合并内容时适用,但仍允许添加/删除文件
我还没有尝试过的:
- 两个完全断开的存储库(不是重复的),并以某种方式合并它们,同时确保文件夹 B 的内容是“干净的”
- 本地合并仓库,在与公共仓库分支合并之前,特定文件夹中的所有私有仓库分支更改都被撤消(如何?)直接去公共回购)
还有什么我可以尝试的吗?
也许这个问题已经有了解决方案——但我一直在网上查看几十篇 SO 和几十篇文章,但似乎没有解决这个不同的文件夹内容问题的方法。