Harte Links brechen in Windows 7 Pro

432
GAgbo

Ich möchte Hardlinks verwenden, um zu vermeiden, dass einige Quelldateien zwischen ihren Basisordnern und einem kleinen Git-Repo für die persönliche Entwicklung synchronisiert / kopiert werden müssen.

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 

Alles sieht dort gut aus, aber wenn ich die Datei mit dem Zugriffspfad "Ziel" modifiziere und speichere (ich füge einfach fgheine Zeile in Visual Studio an), sehe ich, dass der Link "verloren" ist:

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 

Danach kann ich die beiden Dateien ( testund file) separat laden, filespiegelt die Änderung wider und testist die nicht gespeicherte Datei.

Weiß jemand, warum das passiert? Gibt es eine Möglichkeit, dies zu vermeiden?

Ich vermute, ich könnte mein Repo im PathTarget-Ordner initialisieren und dann ein angepasstes erstellen .gitignore. Es gibt bereits viele Dateien im Zielordner, und ich möchte nur einige davon ändern. Darüber hinaus möchte ich auch neue Quelldateien hinzufügen und finde es weniger unordentlich, wenn ich einen eigenen Ordner habe, der vom Zielordner getrennt ist. Harte Links sahen für mich am besten aus und ich verstehe nicht, warum es hier versagt.

1

1 Antwort auf die Frage

0
Ben N

Offensichtlich löscht das Programm, mit dem Sie die Datei geändert haben, die Datei tatsächlich (bricht den Hardlink) und erstellt sie dann neu, wobei die ursprünglichen Daten in der Datei verbleiben, die Sie mit der Datei verknüpft hatten.

Wenn Sie möchten, dass eine Datei weiterhin auf einen anderen Pfad / Dateinamen zeigt, auch wenn das Ziel gelöscht wird, können Sie einen symbolischen Link verwenden. Verwenden Sie sie einfach mklinkin einer administrativen Eingabeaufforderung ohne den /hSchalter.

Ich dachte, dass Symlinks nicht auf Dateien verweisen würden, sondern auf Pfad, so dass das Synchronisieren von Symlinks in einem git Local Repo nicht tatsächlich Dateien synchronisieren würde. GAgbo vor 8 Jahren 0
Interessanterweise sind Administratorrechte erforderlich, um Symlinks zu erstellen. Am Ende werde ich die hässliche Fusion mit einer hässlichen ".gitignore" -Methode durchführen GAgbo vor 8 Jahren 0