我想要实现的是
我在主机系统上有一个Git存储库,它与docker容器共享。在docker容器中,我想要获取已更改/暂存的文件。我还希望能够添加要在主机系统中暂存的文件。
本质上,主机上的预提交钩子将调用docker镜像中的程序,然后该程序将检查/更改将要提交的文件。
我尝试过的
来自这个问题:git forces refresh index after switching between windows and linux
我尝试过添加GIT_INDEX_FILE参数,但在最好的情况下,它会导致不同的登台区域,因此docker映像最终不会与主机的登台区域一起工作。
如果没有这个参数,我每次都需要在容器中运行git status,然后每次都刷新索引。
备注
这可能只在Mac OS X主机系统和Linux docker容器上运行。
发布于 2020-06-03 06:51:44
正如您链接的问题中所提到的,不建议这样做。Git在索引中存储了大量关于文件的元数据,包括设备和索引节点编号等内容。这些项目在macOS和运行容器的Linux内核之间必然会有所不同。
Git不是围绕在系统之间共享工作树而设计的,因为它的安全模型将任何不是从不受信任的存储库获取或克隆的内容都视为不安全。因此,它不打算共享非裸存储库,即使在同一台计算机上跨操作系统也是如此。
您可以尝试将core.checkStat设置为minimal,如果这还不够,可以在钩子中将core.trustctime设置为false. If those don't work, then you'll probably need to do agit update-index --refresh`,这是用于更新索引的管道(脚本)命令。如果这些配置选项对您不起作用,这将是不可避免的。
请注意,设置这些选项意味着您冒着Git检测不到更改的风险,因此它们不是神奇的解决方案,而是一种变通方法。
https://stackoverflow.com/questions/62157406
复制相似问题