如何解决如何在不下载完整历史记录的情况下设置 git 子模块以从特定分支获取最新提交?
我们的产品有一个存储库,用于控制我们的设置和安装过程,以及其他一些包含不同组件的存储库。设置过程需要访问某些配置文件,其主副本保存在组件存储库中;目前,这些文件在安装存储库中是重复的,但这意味着它们必须保持同步,这使更新变得复杂,所以我想将其他存储库作为子模块包含在内。问题是,我只想下载我们需要的特定提交——即特定分支的最新提交——而不下载每个 repo 的完整历史记录,而且我找不到任何可以在不提供的情况下执行此操作的命令集我有 Unable to find current origin/Some_branch revision in submodule path 'REDACTED'
个错误。
我需要支持的具体操作是:
- 克隆安装程序的新实例后,我需要初始化、获取和检查所有子模块
- 有时会向安装程序添加新的子模块;通过拉动添加它们的提交更新安装程序的现有实例后,我需要能够初始化新的而不影响任何现有的子模块
- 特别是我不想将现有的存储库更新到给定分支的最新提交 - 只初始化新的存储库
- 每当一个子模块被初始化时,它应该检查与超级项目当前分支同名的分支中的最新提交
- 理想情况下,所需的提交应该是唯一下载的提交,但必须下载 O(1) 次额外提交也是可以接受的
- 我需要能够同时为所有子模块执行此操作,而无需列出有哪些子模块(
.gitmodules
除外)或哪些是新子模块。理想情况下,这应该只是超级项目中的一组全局命令(例如pull
、submodule init
、submodule update
、submodule foreach
),但是需要解析输出的解决方案submodule status
的使用 Bash 是可以接受的。 - 如果可能的话,一个与 Git 版本至少兼容 2.16.6 的解决方案会很好
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。