git hard links - มันรู้หรือไม่ว่าไฟล์เป็นฮาร์ดลิงก์?


16

ฉันเริ่มใช้ฮาร์ดลิงก์แทนลิงก์สัญลักษณ์เพื่อจัดระเบียบไฟล์ ...

ฉันทำสิ่งนี้เพื่อถ่ายรูปฉันจัดหมวดหมู่และระบุว่าฉันต้องการพิมพ์อะไร

ฉันใช้ git เพื่อสำรองรูปภาพของฉันและปรากฏว่า git คิดว่าเป็นไฟล์ใหม่เนื่องจากที่เก็บมีขนาดใหญ่ขึ้นประมาณ 1GB Git ตรวจจับการเปลี่ยนชื่อได้ดีมากถ้าฉันไม่ใช้ git เพื่อเปลี่ยนชื่อไฟล์ แต่มันจัดการกับฮาร์ดลิงก์ด้วยหรือไม่?

วอลเตอร์


2
ไฟล์ปกติทั้งหมดเป็นลิงค์ที่ยาก บางทีคุณอาจหมายถึง "ไฟล์ที่มีลิงก์เชื่อมโยงหนัก"
Ignacio Vazquez-Abrams

ใช่นั่นคือสิ่งที่ฉันหมายถึง
วอลเตอร์

1
ถูกต้องฉันถ้าฉันผิด แต่ไม่ git ติดตามเพิ่มเติมcontentหรือไม่ ทำไมมันถึงสำคัญถ้าไฟล์นั้นมีเนื้อหาเหมือนกันหลังจากนั้นไฟล์เหล่านั้นจะเป็นไฟล์เดียวกันทางเทคนิค
new123456

1
สำหรับคนที่สะดุดในเรื่องนี้ - อาจลองใช้ลิงก์สัญลักษณ์แทน stackoverflow.com/q/954560/492
เจ้าหมอ CAD

ดูเหมือนว่าคุณต้องการระบบไฟล์แบบแท็ก
Nayuki

คำตอบ:


14

ไฟล์ที่ถูกติดตามแบบทวีคูณที่เชื่อมโยงกันจะไม่ทำให้ที่เก็บวัตถุของ Git เติบโตขึ้นมากเนื่องจากแต่ละลิงก์จะถูกแสดงด้วยวัตถุหยดเดียวกัน อย่างไรก็ตามต้นไม้ทำงานของคุณอาจเติบโตขึ้นเนื่องจากลิงก์ขาด

Git ไม่ได้ติดตามว่ามีการติดตามไฟล์ต้นไม้ทำงานหรือไม่นั้นเป็นลิงก์ที่เชื่อมโยงไปยังไฟล์เดียวกัน

Git จะปล่อยให้ไฟล์ต้นไม้ที่เชื่อมโยงติดตามคูณทำงานอยู่คนเดียวหากคุณไม่ขอให้ทำสิ่งใดที่จะเกี่ยวข้องกับการแก้ไขเนื้อหาที่ชื่อพา ธ เหล่านั้นหรือลบรายการไดเรกทอรีของชื่อพา ธ แต่ถ้าคุณต้อง (เช่น) ชำระเงินค่าคอมมิชชันเก่าหรือสาขาแล้วเปลี่ยนกลับมาเป็นปกติสาขา / คอมมิชชันล่าสุด Git จะจบลงด้วยการ "ทำลาย" ลิงก์ฮาร์ด (แทนที่ชื่อพา ธ ที่ได้รับผลกระทบด้วยชื่อใหม่ ) ไฟล์แทนที่จะสร้างสถานการณ์การเชื่อมโยงทวีคูณของคุณใหม่)

ในการกู้คืนสถานะการเชื่อมโยงทวีคูณของคุณคุณสามารถเขียนโปรแกรมเพื่อสแกนหาไฟล์ที่เหมือนกันและเชื่อมโยงไฟล์เหล่านั้นกับไฟล์ใดไฟล์หนึ่ง การดำเนินการ "relink" ดังกล่าวอาจมีความซับซ้อนมากขึ้นหากลิงก์ทั้งหมดไม่ได้อยู่ในแผนผังการทำงานหรืออย่างน้อยก็ไม่ได้อยู่ในตำแหน่ง "ภายนอก" ที่สามารถระบุตัวตนได้ง่าย (เช่นอาจเป็นการยากที่จะกู้คืนลิงก์หากคุณเชื่อมโยง ไฟล์ "สุ่ม" จากทั่วไดเรกทอรีหลักของคุณลงในพื้นที่เก็บข้อมูล "สำรองข้อมูล" และใช้ Git เพื่อปรับเปลี่ยนแผนผังการทำงาน)

ความคิดเกิดขึ้นในรายชื่อผู้รับจดหมายของ Git:


สำหรับ linux ที่ยึดตามเดเบียนมีเครื่องมือ hardlink ( packages.debian.org/search?keywords=hardlink ) ซึ่งสามารถทำการดำเนินการเชื่อมโยงใหม่ได้ น่าเสียดายที่มันไม่เร็วมาก
Daniel Alder

ผมทำงานเป็นงานคืนบนhardlink /var/lib/jenkins
Amedee Van Gasse
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.