Жесткие ссылки ломаются в Windows 7 Pro

Я хочу использовать жесткие ссылки, чтобы избежать необходимости синхронизировать / копировать несколько исходных файлов между их базовыми папками и небольшим git-репо для личной разработки.

C:\PathLink>mklink /h test  C:\PathTarget\file.f90
Permanent link created for test <<===>> C:\PathTarget\file.f90

C:\PathLink>..\FindLinks\FindLinks.exe test

FindLinks v1.0 - Locate file hard links
Copyright (C) 2011 Mark Russinovich
Sysinternals - www.sysinternals.com

C:\PathLink\test
        Index:  0x0003F29B
        Links:  1

Linking file:
C:\PathTarget\file.f90

Там все выглядит хорошо, но когда я изменяю и сохраняю файл, используя путь доступа "Target" (я просто добавляю fgh на строку в Visual Studio) я вижу, что ссылка "потеряна":

C:\PathLink>..\FindLinks\FindLinks.exe test

FindLinks v1.0 - Locate file hard links
Copyright (C) 2011 Mark Russinovich
Sysinternals - www.sysinternals.com

C:\PathLink\test
        Index:  0x0003F29B
        Links:  0

После этого я могу загрузить два файла (test а также file) по отдельности, file отражает модификацию, и test это несохраненный файл

кто-нибудь знает, почему это произошло? Есть ли способ избежать этого?

Я думаю, я мог бы инициализировать репо в папке PathTarget, а затем создать адаптированный .gitignore, В папке Target уже много файлов, и я просто хочу изменить пару из них. Кроме того, я также хочу добавить новые исходные файлы, и я нахожу это менее грязным, если у меня есть собственная папка, отделенная от целевой папки. Жесткие ссылки выглядели так, как будто это лучше для меня, и я не понимаю, почему это терпит неудачу здесь.

1 ответ

Решение

Очевидно, что программа, которую вы использовали для изменения файла, на самом деле удаляет его (ломая жесткую ссылку) и затем воссоздает его, оставляя исходные данные в файле, который вы с ним связали.

Если вы хотите, чтобы файл продолжал указывать на другой путь / имя файла, даже если цель удалена, вы можете использовать символическую ссылку. Просто используйте mklink в административной командной строке без /h переключатель.

Другие вопросы по тегам