LINUX.ORG.RU

Как отследить хардлинк?

 


0

4

Есть один маленький репозиторий, в нём есть хардлинк на файл из другого большого репозитория, так вот если сделать

ln большой_репо/файл маленький_репо/
то всё будет вроде бы окей, величина в байтах, хеш-сумма будет меняться у второго синхронно с первым. Но после N-ного количества push-ей из маленького репозитория на гитхаб, хардлинк перестаёт реагировать на изменения в оригинальном файле. Что это может быть? Связь у маленького репозитория с гитхабом односторонняя, с другими репозиториями коммитами он не обменивается.

Deleted

хардлинк перестаёт реагировать на изменения в оригинальном файле.

Файл перезаписали и нету хардлинка. Например, юзалось mv для перезаписи.

Pavval ★★★★★
()
Ответ на: комментарий от Pavval

Шо ви говорите такое!? Когда это при mv менялся inode у файла.

TC: файл удалили и создали заново — теперь это два разных файла.

anonymous
()
Ответ на: комментарий от anonymous

Шо ви говорите такое!? Когда это при mv менялся inode у файла.

$touch a

$touch b
$mv b a

Это вероятный способ перезаписи файла в git. Угадай inode файла a.

Pavval ★★★★★
()
Ответ на: комментарий от Pavval

a — имя (поинтер), сам файл (inode) не изменится, т.е. будет как у b

mv не меняет inode. А ты говоришь о другом.

anonymous
()
Ответ на: комментарий от anonymous

Ты не понял. Если a - это был hardlink, то после изменения через mv (а именно записи новой версии в b и почти атомарного mv), a перестанет быть хардлинком.

Pavval ★★★★★
()
Ответ на: комментарий от Pavval

Файл перезаписали и нету хардлинка.

Да, это похоже на правду, но как отследить сам факт? По крону иноды проверять? Журнал копать? Если с инодами ещё более-менее понятно, то где почитать про расковыривание журнала в ext3/4?

Deleted
()
Ответ на: комментарий от Pavval

Да я понимаю, что это грязный хак, просто фигачить субрепозитории мне кажется ещё более накладным (маленький – фактически неполная подпапка большого + в маленьком доки). Можно, конечно, сделать дерево каталогов везде одинаковым, и из большого пушить отдельно в origin и отдельно – на гитхаб, но тогда в репе на гитхабе будет ненужное дерево каталогов, сквозь которое надо продраться, чтобы дойти до файлов.

Deleted
()
Ответ на: комментарий от sin_a

Тем, что после пуша на другой стороне файл будет выглядеть как текстовый с содержанием пути к файлу, на который указывала символическая ссылка.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.