仅在非空时克隆

时间:2016-04-13 19:06:51

标签: git

通常情况下,git clone很乐意克隆空存储库,它只会打印警告

  

警告:您似乎克隆了一个空存储库。

有没有办法告诉git只克隆非空存储库?理想情况下,如果存储库为空,我希望git clone只是失败(没有创建工作副本)。

我目前的解决方案分为三个步骤:(1)克隆,(2)查看克隆是否为空,(3)如果为空则删除。这项工作是否很优雅(并且它会打印出我需要过滤掉的警告)。有更直接的解决方案吗?

1 个答案:

答案 0 :(得分:1)

实际上没有办法做到这一点,但你可以近似它(有点差):设置一个指向你可能克隆的仓库的远程,然后在该远程上运行git ls-remote。 (您可以使用任何git存储库执行此操作,包括临时空存储库。)如果ls-remote找不到引用,则克隆该存储库会创建一个空存储库。

这种方法有两个主要缺点,一个是次要的:

  1. 你需要一个地方来添加测试遥控器并执行ls-remote。
  2. 这实际上是克隆空存储库的工作。与克隆大型 -empty存储库相比,您可以节省时间,但无论如何都要这样做(克隆非空存储库)。
  3. (次要)你得到的答案,至少可能是你得到它时已经过时了。克隆一个repo并发现它是空的(也许是提取现在会找到一个非空的存储库),甚至克隆或获取一些其他存储库也是如此:当你得到并检查结果时,可能是几个整个在您启动进程后,可能会有数十甚至数千个新提交添加到远程仓库(这取决于存储库的活动程度)。
  4. 我认为你可能只是克隆 - 也许 - 删除,真的。 (或者只是克隆并且不要删除:空的回购没什么问题。我从评论中看到你不想要它们;我只是看不出原因为什么你不需要它们。“对于自动化”是一个目的,但不是理由。)