Git:跨多个文件夹部署项目拆分

时间:2016-09-07 16:57:04

标签: git codeigniter server

我的网站是通过CodeIgniter设置的。我的应用程序index.php文件,样式表,图像等都位于webroot中,而我的实际应用程序 - 控制器,模型,视图,配置等 - 位于webroot上方。文件夹结构如下。

/var
    /ci_applications
        /my_site
            /views
            /controllers
            /etc...
        /some_other_site
            /views
            /controllers
            /etc...
    /www
        /my_site
            index.php
            /images
            /etc...
        /some_other_site
            index.php
            /images
            /etc...

现在让我们假设我想通过Git直接提交到我的网站(而不是,比如,提交给GitHub并单独部署)。我已经找到了一种方法来做到这一点,但我有一个最后的复杂功能需要克服(可能需要我找到一种新的方法)。

正如您所看到的,单个应用程序 - 例如' my_site'或者' some_other_site' - 由两个不同位置的两个不同文件结构组成。

所以,这就是我的问题(当然,作为Git的新手):有没有办法在我的本地机器上有一个Git项目,可以提交并推送到服务器,将应用程序后端放在ci_applications文件夹中,将前端放在www文件夹中?

很明显,我想到的方法是将/ var视为项目的根,将ci_applications和www视为子文件夹。但是,我担心Git会从要部署的项目中删除/ var的所有内容(不确定这是否是有效的担心)。另外,正如您所看到的,文件夹结构中有两个项目,可能还有更多 - 这也可能导致Git远程存储库出现问题。

我完全过度思考这个吗?我是否正在尝试做一些超出Git单独完成的事情?我只是一个愚蠢的新手吗?任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

如果您坚持使用GIT并且想要包含整个文件结构,则/var必须是项目的根。

为了消除对服务器上当前任何结构的担心,简单的GIT答案是将其GIT推送到另一个存储库以作为备份。就此而言,如果“旧”网站上存在GIT历史记录,您可以在推入“新”结构后将其恢复。

要从新存储库中有选择地进行部署,您始终可以对其进行分支,在将其推送到服务器之前删除不需要的文件夹/文件。然后,您可以返回服务器存储库并切换到主分支。其实你甚至不需要分支机构。您只需恢复到之前的提交(假设您在开始删除之前有一个提交),这将是项目的所有部分和部分。

考虑到所有事情,我认为将“新”存储库克隆到工作站并使用ftp或其他文件工具将其放在服务器上会更容易。