11

Я ищу что-то, что работает как UnionFS в Windows 7. Мой сценарий использования: наличие рабочего каталога с чистым кодом в каталоге, доступном только для чтения, и его компиляция в объединенной файловой системе, которая будет логически хранить скомпилированные двоичные файлы в одном месте, но физически в другом каталоге.

Библиотеки не работают таким образом, даже несмотря на то, что они были приняты в качестве ответа в UnionFS на Windows, фактически объединяют папки - они показывают каталоги верхнего уровня только в одном месте.

Сам по себе код огромен (2 ГБ данных), и я бы хотел не копировать его для каждой сборки на моем сервере сборки.

4 ответа4

2

Не могли бы вы использовать символические ссылки, чтобы подделать это? http://en.wikipedia.org/wiki/NTFS_symbolic_link Это не ответ на точный вопрос, но я думаю, что это решит вариант использования, который вы дали.

2

Да, есть в последних версиях Windows, но я не знаю, как его использовать.

2

Вы можете создать unionfs для бедняков с символическими ссылками: воспроизводить структуру каталогов источника, но создавать ссылки (символические или жесткие) для файлов. Это должно подходить для ваших целей, если система сборки не пытается изменить исходные файлы.

С GNU cp это так же просто, как cp -al или cp -as . Но я не знаю, есть ли порт инструментов GNU, который понимает ссылки Windows.

Если вам нужно вызвать команду mklink, это можно сделать с помощью инструментов POSIX (предупреждение, введенное непосредственно в браузере):

cd SOURCE
find -type d -exec sh -c 'cd BUILDDIR && mkdir "$@"' _ {} +
find -type f -exec sh -c 'mklink "$1" "BUILDDIR/$1"' _ {} \;

Я предполагаю, что есть собственный способ Windows, включающий Powershell, но я понятия не имею, как он выглядит. Возможно, стоит выяснить, является ли ваше дерево каталогов большим и ваши диски быстрыми, потому что разветвление под Windows имеет тенденцию быть медленным, и приведенные выше команды должны много разветвляться.

1

Я нашел это, но я не знаю, насколько хорошо это работает:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .