簡體   English   中英

僅在非空時克隆

[英]Clone only if non-empty

通常, git clone很樂意克隆空的存儲庫,它只是打印警告

警告:您似乎已克隆了一個空的存儲庫。

有什么辦法告訴git僅克隆非空存儲庫嗎? 理想情況下,如果存儲庫為空,我希望git clone僅失敗(不創建工作副本)。

我當前的解決方案分為三個步驟:(1)克隆,(2)查看克隆是否為空,(3)刪除是否為空。 做這項工作,但幾乎沒有優雅(它會打印警告,我需要過濾掉它)。 有沒有更直接的解決方案?

確實沒有做到這一點的方法,但是您可以近似(有點差):設置一個指向您可能克隆的倉庫的遠程指向,然后在該遠程上運行git ls-remote remote。 (您可以對任何git存儲庫執行此操作,包括臨時的空存儲庫。)如果ls-remote沒有找到引用,則克隆該存儲庫將創建一個空的存儲庫。

這種方法有兩個主要缺陷,一個是次要缺陷:

  1. 您需要一個地方來添加測試遙控器並執行ls-remote。
  2. 這與實際克隆空存儲庫一樣多。 與克隆大型空存儲庫相比,可以節省時間,但是無論如何,您都可以這樣做(克隆非空存儲庫)。
  3. (次要的)您得到的答案至少有可能在您獲得答案時已經過時。 克隆存儲庫並發現其為空(也許現在獲取將找到一個非空的存儲庫),甚至克隆或獲取其他存儲庫也是如此:在獲取並檢查結果時,可能是幾個在開始該過程的整個中,可能有數十個甚至數千個新的提交添加到遠程存儲庫中(這取決於存儲庫的活躍程度)。

我認為您真的可以克隆並刪除。 (或者只是克隆,並且移除:沒有什么錯用空的回購協議,我從你不想讓他們評論看,我只是不明白為什么你不希望他們的理由“自動化。 “是目的,而不是原因。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM