我们必须以编程方式检测Git存储库是否(仍)处于克隆状态,或者克隆是否已经完成并且该存储库是否可用。在理想情况下,仅通过查看存储库的当前文件系统状态就可以进行此检测,而没有任何其他信息(例如,克隆是否已真正启动)对于之前的版本库)。换句话说,我正在Git的管理区域中查找一些文件/标志,该文件/标志是在克隆存储库时精确设置的。
答案 0 :(得分:2)
在客户端,这有点简单。首先,在克隆期间,工作树中没有文件-只有.git/
子目录; git在克隆过程结束时填充工作树。 .git/
目录具有许多空子目录。在目录.git/objects/pack/
中有一个文件tmp_pack_XXX
,其中XXX
是一个随机后缀。
但是我认为您不需要任何这些。您可以只跟踪git clone
的开始和停止。您可以运行一些before-install; git clone; after-install
脚本,也可以将git-clone
二进制文件(确切地说是符号链接)替换为将运行before-clone
和after-clone
脚本的脚本,您可以执行任何操作需要这些脚本。
另一种可能性:使用git clone --template
,您可以设置一个post-checkout
挂钩,该挂钩将在克隆后运行。