ฉันมีที่เก็บข้อมูลเก่ามากที่ฉันใช้ และในบางจุดไฟล์ LFS บางไฟล์ก็หายไป ค่อนข้างน้อยของพวกเขา เมื่อฉันพยายามพุชไปยังพื้นที่เก็บข้อมูลใหม่ใน Gitlab ฉันได้รับข้อผิดพลาดต่อไปนี้
GitLab: LFS objects are missing. Ensure LFS is properly set up or try a manual
QA อื่นๆ สำหรับ git-lfs (ที่นี่ ที่นี่) ระบุว่าโดยปกติแล้วตัวแปรบางตัวของ git lfs push --all
แต่ฉันไม่มี repo ที่ใช้งานได้ ไฟล์เหล่านี้อีกต่อไปและไฟล์เหล่านั้นก็หายไปตลอดกาล Gitlab ละเว้นการกดด้วย --no-verify และยังคงให้ข้อผิดพลาด
การรัน git lfs fetch --all
จะให้รายการ OID ที่หายไปจำนวนมาก
[43cb9e6d1d15bb8d31af911aa69a15a67174c5df73dabc85294ce08198cac468] Object does not exist on the server or you don't have permissions to access it: [404] Object does not exist on the server or you don't have permissions to access it
[454907d530534af9cc95903820c0a632a851b45de98ba18e1de117b8a649f8ac] Object does not exist on the server or you don't have permissions to access it: [404] Object does not exist on the server or you don't have permissions to access it
[ce1314f0c4cb05f349540fa144d33faeb2281ae552cf75dc866a8350d90fd2ac] Object does not exist on the server or you don't have permissions to access it: [404] Object does not exist on the server or you don't have permissions to access it
[d5e8925d273cb00341f00d0f40b39f97cced1e833ef687de2d4663836e7f4e45] Object does not exist on the server or you don't have permissions to access it: [404] Object does not exist on the server or you don't have permissions to access it
...
โพสต์อื่น ที่นี่ มีสคริปต์สำหรับลบ LFS ทั้งหมดโดยตรวจสอบทุก ๆ กระทำและลบไฟล์ LFS แต่ดูเหมือนว่าจะส่งผลเสียอย่างมากต่อพื้นที่เก็บข้อมูลในอนาคต อีกประการหนึ่งระบุเส้นทางในการลบไฟล์ LFS ทั้งหมด (ที่นี่)
ปัญหาทั้งหมดเหล่านี้ดูเหมือนจะไม่ค่อยดีนัก:
- การลบ LFS จะทำให้ repo ขยายใหญ่ขึ้น และรอยเปื้อนมีแนวโน้มที่จะล้มเหลวสำหรับไฟล์ที่เสียหายอยู่แล้ว
- Git pull/push -all ไม่ใช่ตัวเลือกเนื่องจากไฟล์หายไปตลอดกาล
- การลบ LFS ไม่ถูกต้อง เนื่องจากเวอร์ชันของไฟล์มีอยู่ในปัจจุบัน มีเพียงออบเจ็กต์ในบางสาขาในอดีตที่หายไป ดังนั้นคำแนะนำทั้งหมดเกี่ยวกับวิธีลบ LFS จะทำให้ Repo เสียหาย
มีวิธีที่จะไม่ให้ GitLab เพิกเฉยไม่ยืนยันหรือกรอง OID เฉพาะเจาะจงออกจากประวัติอย่างมีประสิทธิภาพหรือไม่ ฉันไม่รังเกียจหากไฟล์จะหายไปตลอดกาล แต่ฉันหวังว่าจะรักษาประวัติศาสตร์เอาไว้
ฉันรู้ว่าฉันสามารถเรียกใช้ git log --all -p -S 43cb9e6d1d15bb8d31af911aa69a15a67174c5df73dabc85294ce08198cac468
เพื่อรับคอมมิตและไฟล์ได้ (แม้ว่าจะใช้เวลา 5-10 นาทีในการรัน PER OID ดังนั้นการดำเนินการนี้อาจใช้เวลานานหลายชั่วโมง) แต่ฉันไม่รู้ว่าต้องทำอย่างไร