Жесткие ссылки ломаются в 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
переключатель.