我正在寻找一种方法,如何使用只读存储库中的庞大代码库,而不将其克隆/分叉到我的远程存储库中。
这是一个想象的场景:
git 是否以某种方式支持这种方法?
另一个开发人员如何获取 Original 存储库并自动应用 Patched 存储库中的更改?
我知道我可以克隆原始存储库并将其完全推送到我自己的存储库中,但即使没有历史记录,它也太大了,而且我的服务器上没有足够的资源。
我正在考虑子模块,但仍然不确定如何设置它(覆盖子模块?),因为我打算修改子模块。
我想,通过混合 VCS(例如克隆 git-repo,并将更改提交到 svn-repo),可能可以进行所需的设置。
还有其他想法吗?
相关主题:
git 是否以某种方式支持这种方法?
部分是的,从某种意义上说,你永远不会提交到原始存储库无论如何 - 你只能提交到你的克隆,并且只有显式同步命令(推送或获取)才能将这些提交返回到原始存储库(或其他一些存储库)远程)。
您不能做的就是将更改后的文件推送到您自己的遥控器中。可能有被截断的历史记录(即推送到“浅克隆”远程),并且在克隆(过滤器对象)时可能有部分历史记录,但据我所知,不可能推送到已过滤的历史记录远程存储库;您将始终推送至少一个包含每个文件的所有“当前版本”的完整提交。 话虽这么说,因为 Git 中的提交始终是本地的,所以听起来您可以完全在本地计算机中工作(可能使用分支,或使用 git-worktree,甚至两个通过硬链接共享磁盘空间的单独克隆)。
其他开发人员如何获取原始存储库并自动应用修补存储库中的更改?
他们必须 a) 从 Patched 克隆它;或 b) 从 Original 克隆,然后从 Patched 中提取新的提交;或 c) 从原始版本克隆,然后从您使用
git bundle
创建的捆绑文件中提取新提交。我
认为您可能能够托管捆绑包,因为它们较小(仅包括更改的对象或增量)。