git жорсткі посилання - чи знає він, що файл - це жорстке посилання?


16

Я почав використовувати жорсткі посилання замість символічних посилань для організації файлів ...

Я робив це для фотографій, які я беру, щоб класифікувати їх, а також зазначити, які з них я хочу надрукувати тощо.

Я використовую git для резервного копіювання своїх зображень, і, схоже, Git вважав, що це нові файли, оскільки сховище виросло розміром приблизно 1 Гб. Git справді добре виявляє перейменування, якщо я не використовую git для перейменування файлу, але він також обробляє жорсткі посилання?

Вальтер


2
Усі звичайні файли - це жорсткі посилання. Можливо, ви мали на увазі "файли з декількома жорсткими посиланнями"?
Ігнасіо Васкес-Абрамс

Так, це я мав на увазі.
Вальтер

1
Виправте мене, якщо я помиляюся, але не збираю більше доріжок content? Чому це було б важливо, якщо файли мають однаковий вміст, то - зрештою, це технічно той самий файл.
new123456

1
Для людей, які натрапляють на це - можливо, замість цього використаєте символічні посилання? stackoverflow.com/q/954560/492
CAD блокується

Це здається, що вам потрібна файлова система на основі тегів.
Наюкі

Відповіді:


14

Мультизв'язані відслідковані файли не призведуть до того, що зберігання об’єктів Git значно зросте, оскільки кожна посилання буде представлена ​​саме тим самим об'єктом blob. Однак ваше робоче дерево може зростати через зламані зв’язки.

Git не відстежує, чи відслідковуються, працюючі файли деревця є посиланнями на один і той же файл.

Git залишить безліч зв'язаних, відслідкованих, працюючих дерев-файлів в спокої, якщо ви не попросите його зробити щось, що передбачає зміну вмісту в цих іменах шляхів або видалення записів каталогу каталогів. Але якщо ви (наприклад) здійснили оформлення старої комісії або гілки, а потім переключились на свою звичайну, найновішу гілку / фіксацію, Git в кінцевому підсумку "порушить" жорсткі посилання (замінивши порушені імена шляхів новими (але однаковими) ) файли, а не відтворення вашої багатопоточної ситуації).

Щоб відновити свій багатозахисний статус, ви можете написати програму для сканування ідентичних файлів і відновлення їх до будь-якого з файлів. Така операція "перезавантаження" може бути складнішою, якщо всі посилання не знаходяться в самому робочому дереві або, принаймні, не в якомусь легко визначити "зовнішньому" місці (тобто відновити посилання, якщо ви посилаєтесь, можливо буде важко "Випадкові" файли з усього домашнього каталогу в сховище "резервного копіювання" та використання Git для зміни робочого дерева).

Ідея з'явилася у списку розсилки Git:


Для Debian на базі дистрибутивів Linux, є інструмент Жорсткий ( packages.debian.org/search?keywords=hardlink ) , який в змозі зробити це RELINK операції. на жаль, це не дуже швидко
Даніель Алдер

Я біжу hardlinkяк нічна робота на /var/lib/jenkins.
Амедей Ван Гассе
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.