Szukam czegoś, co działa jak UnionFS w Windows 7. Mój przypadek użycia: posiadanie czystego kodu roboczego katalogu w katalogu tylko do odczytu i kompilowanie go w unijnym systemie plików, który przechowywałby skompilowane pliki binarne logicznie w tym samym miejscu, ale fizycznie w inny katalog.
Biblioteki nie działają w ten sposób, mimo że zostały zaakceptowane jako odpowiedź w UnionFS, podobnie jak w systemie Windows, Wirtualnie scalają foldery - pokazują katalogi najwyższego poziomu tylko w jednym miejscu.
Sam kod jest ogromny (2 GB danych) i chciałbym uniknąć kopiowania go dla każdej kompilacji na moim serwerze kompilacji.
windows-7
filesystems
liori
źródło
źródło
Odpowiedzi:
Czy możesz użyć dowiązań symbolicznych, aby to sfałszować? http://en.wikipedia.org/wiki/NTFS_symbolic_link Nie odpowiada dokładnie na pytanie, ale myślę, że rozwiąże podany przypadek użycia.
źródło
cd SOURCE; find -type d -exec sh -c 'cd BUILDDIR && mkdir "$@"' _ {} +; find -type f -exec sh -c 'mklink "$1" "BUILDDIR/$1"' _ {} \;
lub odpowiednika systemu Windows).Możesz stworzyć związek biedaka z symbolicznymi linkami: odtworzyć strukturę katalogów źródła, ale utworzyć linki (symboliczne lub twarde) dla plików. Powinno to być odpowiednie dla twojego celu, o ile system kompilacji nie próbuje modyfikować plików źródłowych.
Z GNU cp jest to tak proste jak
cp -al
lubcp -as
. Ale nie wiem, czy istnieje port narzędzi GNU, który rozumie łącza Windows.Jeśli potrzebujesz wywołać polecenie mklink, możesz to zrobić za pomocą narzędzi POSIX (ostrzeżenie wpisane bezpośrednio w przeglądarce):
Podejrzewam, że istnieje natywny sposób Windows związany z Powershellem, ale nie mam pojęcia, jak to wygląda. Warto sprawdzić, czy Twoje drzewo katalogów jest duże, a dyski są szybkie, ponieważ rozwidlanie w systemie Windows jest zwykle powolne, a powyższe polecenia wymagają częstego rozwidlenia.
źródło
for /R %BUILDDIR% %F in (*.*) do @junction X:%pnxF %F
, używającjunction
narzędzia z sysinternals.Tak, jest w najnowszych wersjach systemu Windows , ale nie wiem, jak go używać.
źródło
Znalazłem to, ale tak naprawdę nie wiem, jak dobrze to działa:
źródło