簡體   English   中英

塗抹錯誤:在 Git 拉動期間塗抹過濾器 LFS 失敗

[英]Smudge Error: Smudge Filter LFS Failed during Git Pull

我是游戲開發團隊的一員。 我們正在為 PC 開發Unreal Engine 4游戲。 我們有一個私有的GitLab服務器處理項目的版本控制。

現在,當任何人嘗試從我們的 Git 項目的特定分支中提取 Git 時,他們會收到塗抹錯誤

Downloading UE4Proj/Content/Game/Art/Architecture/MedievalVillage/Textures/Bucket_A.uasset (1.3 MB)
Error downloading object: UE4Proj/Content/Game/Art/Architecture/MedievalVillage/Textures/Bucket_A.uasset (c366451): Smudge error: Error downloading Ue4Proj/Content/Game/Art/Architecture/MedievalVillage/Textures/Bucket_A.uasset (c366451e360519497bf1719bacdc40c938c833adf9b8060d90d0829fec15d6c8): expected OID c366451e360519497bf1719bacdc40c938c833adf9b8060d90d0829fec15d6c8, got e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 after 0 bytes written

error: external filter 'git-lfs filter-process' failed
fatal: UE4Proj/Content/Game/Art/Architecture/MedievalVillage/Textures/Bucket_A.uasset: smudge filter lfs failed

我們讓創建此分支的開發人員刪除Bucket_A.uasset並重新推送更改。 當任何人現在嘗試 Git Pull 時,他們會收到帶有不同文件的塗抹錯誤

Downloading UE4Proj/Content/Game/Art/Architecture/MedievalVillage/Textures/Bucket_C.uasset (1.4 MB)
Error downloading object: UE4Proj/Content/Game/Art/Architecture/MedievalVillage/Textures/Bucket_C.uasset (4023793): Smudge error: Error downloading UE4Proj/Content/Game/Art/Architecture/MedievalVillage/Textures/Bucket_C.uasset (40237933795d4ca4b4c58e2884e219c3e4cd8168af176f01b33d71e3353376d7): expected OID 40237933795d4ca4b4c58e2884e219c3e4cd8168af176f01b33d71e3353376d7, got e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 after 0 bytes written

error: external filter 'git-lfs filter-process' failed
fatal: UE4Proj/Content/Game/Art/Architecture/MedievalVillage/Textures/Bucket_C.uasset: smudge filter lfs failed

所以這不是一個孤立的事件:看起來多個文件可能存在塗抹錯誤 真正令人惱火的部分是塗抹錯誤出現在 Git 拉動的 99% 左右,因此在嘗試 Git 拉動一兩個小時后手動檢查並刪除帶有塗抹錯誤(無論是什么)的文件,然后拒絕更改被證明是一項巨大的苦差事,並且肯定會導致虛幻引擎項目本身出現問題(因為現在將丟失紋理)。

虛幻引擎報告這些 UASSET 文件中的任何一個都沒有問題,這告訴我這些文件的內容沒有任何問題。

到 Git 拉項目,我們有使用SourceTree和 Windows 命令行的團隊成員。 他們都收到同樣的錯誤。

什么是Smudge Error ,是否有任何處理這些問題的建議,以便我們可以讓這個 Git 分支成功拉取? 這是一個需要單獨的 Pullers、Pusher 和/或 Git 服務器主機解決的問題嗎?

So I resolved the issue: we ended up rolling back our GitLab VM to a time prior to a Git Push that had caused the GitLab VM to lock up (it took several attempts before the Git Branch was pushed at that time). 回滾 GitLab VM 后,我向 VM 添加了更多 RAM 和 CPU:再次推送 Git 分支,這次沒有鎖定 GitLab VM。 一旦成功推送,分支可以毫無錯誤地被拉出! 因此,在拉動分支(或 Git 項目中的任何其他分支,我將進一步解釋)時,我們不再收到Smudge Error

我們相信,自從 GitLab VM 在 Git 推送期間鎖定事件以來,項目 Git 存儲庫已損壞。 事實上,任何從我們的任何項目分支(由於某種原因減去master )拉出的人都收到了Smudge Error ,包括從以前可以無錯誤地拉出的以前的分支! 非常感謝在我們的 Git 服務器上執行定期快照和備份。

警告任何托管 Git 服務器的人:如果即將嘗試大推,請先快照並備份 Git 服務器。 相信我,您真的不想要損壞的 Git 存儲庫!

Git LFS 使用塗抹和清潔過濾器將存儲庫中的指針文件變成您簽入的大文件。塗抹過程就是這個過程。

您看到的消息是因為 Git LFS 正在嘗試從服務器下載 object 並且其 hash 不正確。 Git LFS 使用 SHA-256 來識別文件,它接收的文件是空文件(其中e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855是哈希),而不是你想要的文件。 這是您服務器的問題; Git 或 Git LFS 沒有問題。

如果您再次嘗試上傳 object,GitLab 可能會認為它已經有 object 而不會請求上傳。 您需要告訴 GitLab 刪除現有的 object,但是已經完成,然后從擁有它的客戶端再次推送 object。

如果您看到大量文件存在此問題,則您的 GitLab 實例可能存在嚴重問題。 當機器崩潰時,截斷的零長度文件是一個常見問題,您應該檢查您的 GitLab 實例是否有任何問題。 如果您不確定如何操作,您應該聯系 GitLab 以獲得支持。

暫無
暫無

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

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