Der git-cache-meta
Erwähnt in der SO-Frage "git - wie stellt man die Dateiberechtigungen wieder her, von denen git glaubt, dass die Datei sein sollte?" (und die Git-FAQ) ist der geradlinigere Ansatz.
Die Idee ist, in einem .git_cache_meta
zu speichern Datei die Berechtigungen der Dateien und Verzeichnisse.
Es ist eine separate Datei, die nicht direkt im Git-Repository versioniert ist.
Deshalb lautet die Verwendung dafür:
$ 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
Sie also:
- bündeln Sie Ihr Repo und speichern Sie die zugehörigen Dateiberechtigungen.
- Kopieren Sie diese beiden Dateien auf den Remote-Server
- Stellen Sie das Repo dort wieder her und wenden Sie die Berechtigung an
Git ist ein Versionskontrollsystem, das für die Softwareentwicklung erstellt wurde. Daher speichert es aus dem gesamten Satz von Modi und Berechtigungen nur ausführbare Bits (für gewöhnliche Dateien) und Symlink-Bits. Wenn Sie vollständige Berechtigungen speichern möchten, benötigen Sie ein Drittanbieter-Tool wie git-cache-meta
(erwähnt von VonC) oder Metastore (verwendet von etckeeper). Oder Sie können IsiSetup verwenden, das IIRC git als Backend verwendet.
Siehe die Seite Schnittstellen, Frontends und Tools im Git-Wiki.