Ich suche nach etwas, das wie UnionFS in Windows 7 funktioniert. Mein Anwendungsfall: Arbeitsverzeichnis für sauberen Code in einem schreibgeschützten Verzeichnis und Kompilierung in einem Union-Dateisystem, in dem kompilierte Binärdateien logisch an derselben Stelle, aber physisch in gespeichert werden anderes Verzeichnis.
Bibliotheken funktionieren nicht auf diese Weise, obwohl sie unter Windows als Antwort in UnionFS gleichermaßen akzeptiert wurden. Ordner praktisch zusammenführen - sie zeigen nur Verzeichnisse der obersten Ebene an einer Stelle an.
Der Code selbst ist riesig (2 GB Daten) und ich möchte vermeiden, ihn für jeden Build in meinem Build-Server zu kopieren.
windows-7
filesystems
liori
quelle
quelle
Antworten:
Könnten Sie symbolische Links verwenden, um dies zu fälschen? http://en.wikipedia.org/wiki/NTFS_symbolic_link Es beantwortet nicht die genaue Frage, aber ich denke, es wird den von Ihnen angegebenen Anwendungsfall lösen.
quelle
cd SOURCE; find -type d -exec sh -c 'cd BUILDDIR && mkdir "$@"' _ {} +; find -type f -exec sh -c 'mklink "$1" "BUILDDIR/$1"' _ {} \;
oder ein Windows-Äquivalent).Sie können die Unionfs eines armen Mannes mit symbolischen Links erstellen: Reproduzieren Sie die Verzeichnisstruktur der Quelle, aber erstellen Sie Links (symbolisch oder hart) für die Dateien. Dies sollte für Ihren Zweck geeignet sein, solange das Build-System nicht versucht, Quelldateien zu ändern.
Mit GNU cp ist es so einfach wie
cp -al
odercp -as
. Ich weiß jedoch nicht, ob es einen Port von GNU-Tools gibt, der Windows-Links versteht.Wenn Sie den Befehl mklink aufrufen müssen, können Sie dies mit POSIX-Tools tun (Warnung, direkt in den Browser eingegeben):
Ich nehme an, es gibt einen nativen Windows-Weg, an dem Powershell beteiligt ist, aber ich habe keine Ahnung, wie er aussieht. Es könnte sich lohnen zu untersuchen, ob Ihr Verzeichnisbaum groß und Ihre Festplatten schnell sind, da das Gabeln unter Windows in der Regel langsam ist und die oben genannten Befehle viel gespalten werden müssen.
quelle
for /R %BUILDDIR% %F in (*.*) do @junction X:%pnxF %F
Verwenden desjunction
Tools von sysinternals.Ja, es gibt in neueren Versionen von Windows , aber ich weiß nicht, wie ich es verwenden soll.
quelle
Ich habe das gefunden, aber ich weiß nicht wirklich, wie gut es funktioniert:
quelle