我正在为GoDaddy共享主机帐户上的网站设置git存储库。通常,人们会设置仅包含实时网络数据的git bare repo on the server,然后在push to the remote上使用git post-receive hook结帐到实际目录(感谢@VonC获取链接)。
没关系,但我已经设置了存储库以包含工作文件。在我的服务器上,
/home/username/repo.git/work_folders,和/ home / username / repo / web_files_and_folders
表示存储库,
的/ home /用户名/的public_html / web_files_and_folders
用于直播文件和文件夹。
work_folders通常包含用于生成网站的png和jpg文件的svg,png和jpg文件。这些是主文件,是网站开发的一部分。
事情是我无法找到一个简单的方法来获取git来检查web_files_and_folders只能从任何给定的分支中生存。我可以使用shell to wildcard select web_files_and_folders,但这并不能解决分支名称(当然每个分支都可以改变)。
我是否需要合并到master(例如),然后在post-receive hook中执行shell通配符?如果是这样,对于我试图使用回购的其他技术含量较低的人来说,这可能是一个问题。
编辑-------------------
所以,要更新。从我输入的终端shell,
GIT_WORK_TREE=/home/user/public_html/dev git checkout -f dev devpath/web/*
从Web文件夹中提取了正确的文件,而不是获取,
/home/user/public_html/dev/*
我知道了,
/home/user/public_html/dev/devpath/web/*
显然,我错过了一些关于如何更改提取路径的信息。
编辑2 -------------------
好的,更详细......
我目前在共享服务器上有一个裸仓库设置,
/home/user/repo.git
本地存储库有2个分支,dev和master,文件格式如
/devpath/logos/
/devpath/photos/
...
/devpath/web/ (website root files and folders)
想法是在dev分支中开发,推送到服务器并测试网站的dev.url,当事情好的时候将dev分支合并到master中,推送到服务器并上线。目前我们有2人正在开发该网站。
收件后挂钩尚未完成,但与this one类似。我的用法与此链接几乎相同,只是我希望远程存储库存储其他开发文件。这些文件是网站开发的一部分,需要共享。
您在我的第一次编辑中看到的是尝试将dev分支签出到开发测试站点。在服务器上,此测试站点是一个子域,可以作为文件系统中公共html根目录下的文件夹进行访问。
在我看来,比如使用通配符选择器
GIT_WORK_TREE=/home/user/public_html/dev git checkout -f dev devpath/web/*
还将文件放在通配符之前的相同路径下。我需要能够定义一个新的默认路径。
我在服务器上安装了Git 1.7.1。
答案 0 :(得分:0)
无法解决知道分支名称
对此,更新后挂钩可以检测被推送的分支 见:
类似的东西:
#!/bin/bash
while read oldrev newrev ref
do
branch=`echo $ref | cut -d/ -f3`
if [ "master" == "$branch" ]; then
....
答案 1 :(得分:0)
用管道解决这个问题:
GIT_WORK_TREE=deploy/path GIT_INDEX_FILE=manifest/path \ git read-tree -um commit:web_files_and_folders