icc97 Asked: 2012-06-09 17:03:45 +0800 CST2012-06-09 17:03:45 +0800 CST 2012-06-09 17:03:45 +0800 CST plesk 虚拟主机中的多个 git repos 772 每个 plesk vhost 只有一个用户访问该 httpdocs 目录。我想使用 Git 管理一大堆独立的虚拟主机。 这是否意味着为每个虚拟主机安装一个单独的 Git 存储库和一个单独的用户/ssh 公钥组合,或者有没有办法集中它? Gitosis听起来可能有帮助 - 但我不确定它是否可以将文件推送到每个虚拟主机。 git 1 个回答 Voted Best Answer Peter Host 2012-06-16T02:56:01+08:002012-06-16T02:56:01+08:00 通常有两种方法来处理此类问题; httpdocs您有一个裸存储库,将您的应用程序集中在服务器上的某个位置,并且每个文件夹中都有一个该存储库的克隆(带有工作树) post-receive hook然后你在裸仓库上设置一个更新httpdocs这个仓库的所有克隆,通常一个 shell 脚本就足够了(并且可以设置权限并chmod根据你的用户进行全局操作) 你在本地机器上有另一个存储库副本,它推送到bare服务器上的这个存储库,触发接收后挂钩,并更新httpdocs目录中的所有“子”存储库 你从(我会推荐的)中.git取出部分并在(创建它)文件夹中设置存储库httpdocs/private/home/git/myrepoworking treehttpdocs $ git --git-dir=/var/www/vhosts/newdomain.tld/private/home/git/newdomain.tld \ --work-tree=/var/www/vhosts/newdomain.tld/httpdocs init && \ echo "gitdir: /var/www/vhosts/newdomain.tld/private/home/git/newdomain.tld" \ > /var/www/vhosts/newdomain.tld/httpdocs/.git 这样,您httpdocs的版本控制信息仍然相对干净(除了在 中创建的.gitFILE(不是目录) ,这只是将与 的位置进行/var/www/vhosts/newdomain.tld/httpdocs/符号链接的 GIT 方式)working treeGITDIR 其余过程相同:裸存储库、接收后挂钩 我个人放弃了 Gitosis、gitolite 和 palls,因为它对于几个存储库来说开销太大了。只需正确设置远程分支和 shell 脚本即可(由接收后挂钩启动) 更多关于hookgithooks (5)联机帮助页
通常有两种方法来处理此类问题;
httpdocs
您有一个裸存储库,将您的应用程序集中在服务器上的某个位置,并且每个文件夹中都有一个该存储库的克隆(带有工作树)post-receive hook
然后你在裸仓库上设置一个更新httpdocs
这个仓库的所有克隆,通常一个 shell 脚本就足够了(并且可以设置权限并chmod
根据你的用户进行全局操作)你在本地机器上有另一个存储库副本,它推送到
bare
服务器上的这个存储库,触发接收后挂钩,并更新httpdocs
目录中的所有“子”存储库你从(我会推荐的)中
.git
取出部分并在(创建它)文件夹中设置存储库httpdocs
/private/home/git/myrepo
working tree
httpdocs
这样,您
httpdocs
的版本控制信息仍然相对干净(除了在 中创建的.git
FILE(不是目录) ,这只是将与 的位置进行/var/www/vhosts/newdomain.tld/httpdocs/
符号链接的 GIT 方式)working tree
GITDIR
其余过程相同:裸存储库、接收后挂钩
我个人放弃了 Gitosis、gitolite 和 palls,因为它对于几个存储库来说开销太大了。只需正确设置远程分支和 shell 脚本即可(由接收后挂钩启动)
更多关于
hook
githooks (5)联机帮助页