El git-cache-meta
mencionado en la pregunta SO "git:¿cómo recuperar los permisos de archivo que git cree que debería tener el archivo?" (y las preguntas frecuentes de git) es el enfoque más directo.
La idea es almacenar en un .git_cache_meta
file los permisos de los archivos y directorios.
Es un archivo separado que no se versiona directamente en el repositorio de Git.
Es por eso que su uso es:
$ 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
Así que tú:
- agrupe su repositorio y guarde los permisos de archivo asociados.
- copie esos dos archivos en el servidor remoto
- restaurar el repositorio allí y aplicar el permiso
Git es un sistema de control de versiones, creado para el desarrollo de software, por lo que de todo el conjunto de modos y permisos almacena solo el bit ejecutable (para archivos ordinarios) y el bit de enlace simbólico. Si desea almacenar permisos completos, necesita una herramienta de terceros, como git-cache-meta
(mencionado por VonC), o Metastore (usado por etckeeper). O puede usar IsiSetup, que IIRC usa git como backend.
Consulte la página Interfaces, frontends y herramientas en Git Wiki.