Le git-cache-meta
mentionné dans la question SO "git - comment récupérer les autorisations de fichier que git pense que le fichier devrait être?" (et la FAQ de git) est l'approche la plus simple.
L'idée est de stocker dans un .git_cache_meta
fichier les permissions des fichiers et des répertoires.
Il s'agit d'un fichier séparé non versionné directement dans le dépôt Git.
C'est pourquoi son utilisation est :
$ git bundle create mybundle.bdl master; git-cache-meta --store
$ scp mybundle.bdl .git_cache_meta machine2:
#then on machine2:
$ git init; git pull mybundle.bdl master; git-cache-meta --apply
Alors vous :
- regroupez votre référentiel et enregistrez les autorisations de fichier associées.
- copiez ces deux fichiers sur le serveur distant
- restaurez le référentiel ici et appliquez l'autorisation
Git est un système de contrôle de version, créé pour le développement de logiciels, donc à partir de l'ensemble des modes et des autorisations, il ne stocke que le bit exécutable (pour les fichiers ordinaires) et le bit de lien symbolique. Si vous souhaitez stocker des autorisations complètes, vous avez besoin d'un outil tiers, comme git-cache-meta
(mentionné par VonC), ou Metastore (utilisé par etckeeper). Ou vous pouvez utiliser IsiSetup, que l'IIRC utilise git comme backend.
Voir la page Interfaces, frontends et outils sur Git Wiki.