2013-03-25 66 views
1

我們有一個git回購(遠程託管在github - 可以稱之爲客戶端回購)與超過210個目錄在根目錄。我們有210多臺Windows服務器,每臺服務器都需要這些根目錄中的一個,並且不需要其他的。太多目錄在工作副本後Git稀疏簽出

所以我們登錄到一臺服務器,並使用1.8.1.msysgit.1

  1. 克隆的客戶從Git的樞紐回購上稀疏檢出
  2. 打開
  3. 更新稀疏與-checkout文件單*目錄/ *,我們希望在這個服務器的工作拷貝
  4. 執行我們讀樹操作

以及10次中的9次一切正常,出工作副本包含我們期望的單個目錄。

但是,每過一段時間,它都不會像預期的那樣工作,我們還會得到一小部分其他目錄流向工作副本。它從來沒有完整的210+,但會在6-10個其他目錄之間。這些目錄不匹配所需目錄的模式,也沒有匹配所述模式的任何子目錄。

一旦發生這種情況,我們從未能夠解決本地回購問題。我們曾嘗試:

  • 各種復位
  • 各種讀樹
  • 禁用/重新啓用稀疏結帳
  • 檢查日誌,看看是否有任何奇怪的事情

最終,我們通常最終會刪除本地回購,然後再次執行相同的步驟,並且只是第二次運作。

我們還沒有找到一種方法可靠地重現問題,除了克隆,重複設置稀疏結帳等。在這20次左右的時間裏,它只發生過一次非Windows機器(我們有一臺運行git v1.8.1.5的ubuntu服務器,兩週前顯示了相同的問題)。

我的Google-Fu在這方面很薄弱。我希望能夠深入瞭解爲什麼會發生這種情況,以及任何可能的解決方法,這些解決方案不會讓我們刪除回購站並對其進行重新克隆。提前致謝!

回答

2

我曾經遇到過這個問題的朋友。事實證明,他們已經從Unix系統上的子目錄中刪除了文件,然後當他們在Windows系統上執行它們的git reset時,它將從(now)空目錄中刪除所有文件,但是自從Git只跟蹤內容,而不是目錄。

是Windows系統上「較大」的文件夾子集?這些目錄是空的嗎?這可能會導致你的問題。

+0

那麼,目錄確實是空的。但是,我發現了一臺服務器,可以在今天早上可靠地重新創建問題。我會克隆回購,啓用稀疏結帳,編輯稀疏結帳文件,然後讀取樹多... 但是,多次我做了它,我經常得到一套不同的剩餘(現在我意識到**空** - 我認爲僅僅假設目錄中有文件是不明智的。)留下的目錄。 – bubba 2013-03-25 18:14:42

+0

看來,這確實是問題的核心,與移除文件時的Windows權限相結合。我會接受這個答案,謝謝! – bubba 2013-03-26 20:10:20

1

Windows隨機存取權限。這些文件夾可能在稀疏結帳清理後留下,可能需要進入並手動刪除它們。他們可能是空的;)