Я ищу что-то, что работает как UnionFS в Windows 7. Мой сценарий использования: наличие рабочего каталога с чистым кодом в каталоге, доступном только для чтения, и компиляция его в файловой системе объединения, которая будет логически хранить скомпилированные двоичные файлы в одном месте, но физически другой каталог.
Библиотеки не работают таким образом, даже если они были приняты в качестве ответа в UnionFS, как на окнах, практически объединить папки - они показывают только каталоги верхнего уровня в одном месте.
Сам по себе код огромен (2 ГБ данных), и я бы хотел не копировать его для каждой сборки на моем сервере сборки.
windows-7
filesystems
liori
источник
источник
Ответы:
Не могли бы вы использовать символические ссылки, чтобы подделать это? http://en.wikipedia.org/wiki/NTFS_symbolic_link Это не ответ на точный вопрос, но я думаю, что это решит вариант использования, который вы дали.
источник
cd SOURCE; find -type d -exec sh -c 'cd BUILDDIR && mkdir "$@"' _ {} +; find -type f -exec sh -c 'mklink "$1" "BUILDDIR/$1"' _ {} \;
или какой-то аналог Windows).Вы можете создать unionfs для бедняков с символическими ссылками: воспроизводить структуру каталогов источника, но создавать ссылки (символические или жесткие) для файлов. Это должно подходить для ваших целей, если система сборки не пытается изменять исходные файлы.
С GNU cp это так же просто, как
cp -al
или жеcp -as
, Но я не знаю, есть ли порт инструментов GNU, который понимает ссылки Windows.Если вам нужно вызвать команду mklink, это можно сделать с помощью инструментов POSIX (предупреждение, введенное непосредственно в браузере):
Я предполагаю, что есть собственный способ Windows, включающий Powershell, но я понятия не имею, как он выглядит. Возможно, стоит исследовать, является ли ваше дерево каталогов большим и ваши диски быстрыми, потому что разветвление в Windows имеет тенденцию быть медленным, и приведенные выше команды должны много разветвляться.
источник
for /R %BUILDDIR% %F in (*.*) do @junction X:%pnxF %F
, с использованиемjunction
инструмент от sysinternals.Да есть в последних версиях винды , но я не знаю, как его использовать.
источник
Я нашел это, но я не знаю, насколько хорошо это работает:
источник