对于我的第一个phalcon项目,我决定选择fortrabbit-hosting,尽管我没有对git有任何强大的经验。我在一个主树上工作,这个主树是连续提交和推送的。我有一些文件夹,里面装满了用户生成的内容(图片上传)。要在执行新提交后不删除此文件,我将此文件夹放入我的.gitignore文件。但是,如何使用此用户生成的内容更新本地存储库? git pull 或 git fetch 对此方案无效。并且有什么方法可以使用git来部署到live-stage?
答案 0 :(得分:0)
您的代码库是Git的一部分,您可以使用Git将其部署到网站空间。网站空间本身不在Git中。远程Git repo将其内容同步或复制到网站空间。
这不是设置正确.gitignore
规则的问题。网站空间上的文件可以更改:例如,当软件权限为temp-,log-,cache-文件或用户上传时。另一个例子是,当使用“web-installer”时(想想WordPress更新)。所有这些更改都不会反映在Git中 - 因为在Git中存储这样的运行时数据并不是一个好的做法,因为没有办法将这些更改同步回Git仓库(所以你可以将这些更改拉回来) 。这是不可能的,也不是你想要的。
有多种方法可以解决这种情况,最常见的两种模式是:
最专业的是遵循12因素设计模式:严格区分代码和内容。用户生成的内容将存储在异地。通过每次Git推送,代码库将被重新打包并重新部署。应用程序的存储是短暂的,在每个(原子)部署中,完整的代码库将被新内容替换。具有fortrabbit的专业堆栈就是这样设计的。
更方便 - 特别是对于传统思维/设计 - 是一个类似于Fortrabbit Universal Stack的解决方案,在部署期间,来自Git仓库的新文件将在网站空间中“同步”,用“覆盖但不删除”。网站空间是持久的,可以通过SSH / SFTP登录,以便在必要时抓取并下载所有文件。
请仔细询问。这个问题可能不够普遍,不适合Stack Overflow。