Git:如何检测存储库是否正在克隆?

时间:2018-10-04 08:41:53

标签: git

我们必须以编程方式检测Git存储库是否(仍)处于克隆状态,或者克隆是否已经完成并且该存储库是否可用。在理想情况下,仅通过查看存储库的当前文件系统状态就可以进行此检测,而没有任何其他信息(例如,克隆是否已真正启动)对于之前的版本库)。换句话说,我正在Git的管理区域中查找一些文件/标志,该文件/标志是在克隆存储库时精确设置的。

1 个答案:

答案 0 :(得分:2)

在客户端,这有点简单。首先,在克隆期间,工作树中没有文件-只有.git/子目录; git在克隆过程结束时填充工作树。 .git/目录具有许多空子目录。在目录.git/objects/pack/中有一个文件tmp_pack_XXX,其中XXX是一个随机后缀。

但是我认为您不需要任何这些。您可以只跟踪git clone的开始和停止。您可以运行一些before-install; git clone; after-install脚本,也可以将git-clone二进制文件(确切地说是符号链接)替换为将运行before-cloneafter-clone脚本的脚本,您可以执行任何操作需要这些脚本。

另一种可能性:使用git clone --template,您可以设置一个post-checkout挂钩,该挂钩将在克隆后运行。