我想通过在我的/var/www directory中创建一个git repo来控制我的web服务器的版本,如Version control for my web server中所述.我的希望是,这样我就能够将web内容从我们的开发服务器推送到github,将其拉到我们的生产服务器,并在池中度过余下的一天.

显然,我计划中的一个怪癖是Git不尊重文件权限(我没有try 过,只是现在才读到)我想这是有道理的,因为不同的盒子可能有不同的用户/组设置.但是,如果我想强制传播权限,知道我的服务器配置相同,我有什么 Select 吗?还是有更简单的方法来实现我的目标?

推荐答案

问题"git - how to recover the file permissions git thinks the file should be?"(和git FAQ)中提到的git-cache-meta个是更直截了当的方法.

其 idea 是将文件和目录的权限存储在.git_cache_meta个文件中

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

$ 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

所以你:

  • bundle your repo并保存相关的文件权限.
  • 在远程服务器上复制这两个文件
  • 恢复那里的回购协议,并申请许可

Linux相关问答推荐

从 ALSA USB 硬件设备获取 USB 设备文件路径

AWK 命令根据另一列中相同的值获取列中的不同值

"‘operator<<’匹配失败(可能是因为我的C++/GCC版本问题)"

重新运行时避免 Linux bash 脚本中的文件重命名重复

如何添加Linux格式的时间输出

ENQCMD 指令的好处和微操作是什么?

在 Linux 中 Select 多个同名的可执行文件

是否可以使用 shell 脚本递归地创建文件夹?

如何使用 gcc 编译为程序集

如何找出哪个进程正在消耗等待 CPU(即 I/O 阻塞)

Bash 变量:是否区分大小写?

在 Linux/POSIX 系统上获取用户全名的最简单方法是什么?

优雅地杀死在 Linux 上运行的 .NET Core 守护进程

如何在没有 IDE 的情况下构建和部署三星 SmartTV 应用程序(例如:在 Linux 上)

如何将路径名中的..转换为 bash 脚本中的绝对名称?

ctrl-x 在终端中使用时会发送哪个信号?

如何从目录复制内容而不是符号链接?

如何在没有 root 用户的情况下在 Linux (CentOS) 中安装软件包并进行自动依赖处理?

linux脚本杀死java进程

如何拖尾除第一行以外的所有行