Saya mulai menggunakan tautan keras alih-alih tautan simbolis untuk mengatur file ...
Saya telah melakukan ini untuk gambar yang saya ambil untuk mengkategorikannya serta menunjukkan yang mana yang ingin saya cetak, dll.
Saya menggunakan git untuk mem-backup gambar saya dan tampaknya git berpikir itu adalah file baru karena repositori bertambah sekitar 1GB. Git melakukan deteksi nama dengan sangat baik jika saya tidak menggunakan git untuk mengganti nama file, tetapi apakah ia juga menangani tautan keras?
Walter
content
? Mengapa penting jika file memiliki konten yang sama, kemudian - setelah semua, mereka secara teknis file yang sama.Jawaban:
File yang dilacak berlipat ganda tidak akan menyebabkan penyimpanan objek Git bertambah karena setiap tautan akan diwakili oleh objek gumpalan yang sama persis. Namun, pohon kerja Anda mungkin akan tumbuh karena tautan yang terputus.
Git tidak melacak apakah file pohon yang dilacak dan berfungsi adalah tautan keras ke file yang sama.
Git akan meninggalkan file pohon yang ditautkan secara berlipat ganda, dilacak, bekerja sendiri jika Anda tidak memintanya melakukan apa pun yang melibatkan modifikasi konten pada nama path tersebut atau menghapus entri direktori pathnames. Tetapi, jika Anda harus (misalnya) checkout komit atau cabang lama dan kemudian kembali ke cabang / komit Anda yang normal, maka Git akan berakhir dengan “memutus” tautan keras (mengganti nama path yang terpengaruh dengan yang baru (tetapi identik) ) file alih-alih menciptakan kembali situasi multiply linked Anda).
Untuk memulihkan status multiply linked Anda, Anda dapat menulis sebuah program untuk memindai file yang identik dan menghubungkannya kembali ke salah satu file. Operasi “relink” seperti itu mungkin lebih rumit jika semua tautan tidak ada di pohon kerja itu sendiri atau, setidaknya, tidak di beberapa lokasi “eksternal” yang mudah diidentifikasi (yaitu mungkin akan sulit untuk memulihkan tautan jika Anda menautkan File "acak" dari seluruh direktori home Anda menjadi repositori "cadangan" dan menggunakan Git untuk memodifikasi pohon yang berfungsi).
Idenya telah muncul di milis Git:
cp -a
independencore.keepHardLinks
(tidak pernah diintegrasikan ke dalam Git yang dirilis?)sumber
hardlink
sebagai pekerjaan malam/var/lib/jenkins
.