Je cherche quelque chose qui fonctionne comme UnionFS dans Windows 7. Mon cas d'utilisation: avoir un répertoire de travail de code propre dans un répertoire en lecture seule, et le compiler dans un système de fichiers union qui stockerait logiquement les binaires compilés au même endroit, mais physiquement dans répertoire différent.
Les bibliothèques ne fonctionnent pas de cette façon, même si elles ont été acceptées comme réponse dans UnionFS sur les fenêtres, fusionnent virtuellement les dossiers - elles affichent uniquement les répertoires de niveau supérieur en un seul endroit.
Le code lui-même est énorme (2 Go de données), et j'aimerais éviter de le copier pour chaque build de mon serveur de build.
windows-7
filesystems
liori
la source
la source
Réponses:
Pourriez-vous utiliser des liens symboliques pour simuler cela? http://en.wikipedia.org/wiki/NTFS_symbolic_link Cela ne répond pas à la question exacte mais je pense que cela résoudra le cas d'utilisation que vous avez donné.
la source
cd SOURCE; find -type d -exec sh -c 'cd BUILDDIR && mkdir "$@"' _ {} +; find -type f -exec sh -c 'mklink "$1" "BUILDDIR/$1"' _ {} \;
ou un équivalent Windows).Vous pouvez faire des unionfs de pauvre avec des liens symboliques: reproduisez la structure du répertoire de la source, mais faites des liens (symboliques ou durs) pour les fichiers. Cela devrait convenir à votre objectif tant que le système de génération n'essaie pas de modifier les fichiers source.
Avec GNU cp, c'est aussi simple que
cp -al
oucp -as
. Mais je ne sais pas s'il existe un port d'outils GNU qui comprend les liens Windows.Si vous devez appeler la commande mklink, cela peut être fait avec les outils POSIX (avertissement, saisis directement dans le navigateur):
Je suppose qu'il existe une méthode Windows native impliquant Powershell, mais je n'ai aucune idée de son apparence. Il peut être utile de vérifier si votre arborescence de répertoires est grande et que vos disques sont rapides car le forking sous Windows a tendance à être lent et les commandes ci-dessus ont besoin de beaucoup bifurquer.
la source
for /R %BUILDDIR% %F in (*.*) do @junction X:%pnxF %F
, en utilisant l'junction
outil de sysinternals.Oui, il existe dans les versions récentes de Windows , mais je ne sais pas comment l'utiliser.
la source
J'ai trouvé cela, mais je ne sais pas vraiment comment cela fonctionne:
la source