一尘不染

使用Git保留文件权限

linux

我想按照我的Web服务器的版本控制中所述,通过在Web服务器上创建gitrepo来对[Web服务器进行版本控制/var/wwwdirectory。我希望我能够将Web内容从我们的开发服务器推送到github,再将其拉到我们的生产服务器,并在剩下的一天中度过。

显然,我的计划中的一个缺点是Git不尊重文件权限(我还没有尝试过,仅现在就阅读它。)我想这很有意义,因为不同的盒子可能具有不同的用户/组设置。但是,如果我想强制传播权限,知道我的服务器配置相同,我是否有其他选择?还是有一种更简单的方法来实现我的目标?


阅读 539

收藏
2020-06-02

共1个答案

一尘不染

git-cache-meta在SO问题中提到“混帐-如何恢复混帐认为该文件是文件权限”(和git的FAQ)是更staightforward方法。

这个想法是在.git_cache_meta文件中存储文件和目录的权限。
它是一个单独的文件,未在Git存储库中直接进行版本控制。

这就是为什么它的用法是:

$ 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

那么你:

  • 捆绑您的仓库,并保存相关的文件权限。
  • 将这两个文件复制到远程服务器上
  • 在此处恢复仓库,并申请许可
2020-06-02