【问题标题】:How to separate application from data in a good manner?如何以良好的方式将应用程序与数据分离?
【发布时间】:2014-11-18 11:25:57
【问题描述】:

在开发我的 php-app 期间,我已将应用程序生成的所有数据存储在应用程序文件夹中,因此这些数据是我的 git-repo 的一部分。存储库的根也是 webroot。这在开发初期对我来说效果很好,当时将应用程序与数据一起提交是有道理的。

但我觉得现在需要重做,原因有几个。一个是数据大小变得太大,我无法将其存储在 git-repo 中。 另一个是我根本不需要给定提交的数据快照。 我想主要原因是我已经将我的应用程序部署到我的 NAS(synology)以供实际使用,并且我通过 webdav 将提交推送到它。而且据我对 git 的了解,在远程存储库中保留某些数据不变的情况下进行推送是不可能的,或者至少是不切实际的。

另外,如果 nas 上的应用程序和我的计算机上的应用程序在测试时都可以访问相同的数据目录,那将是很好的,但不是必需的。这让我想到将数据从应用程序目录中移出并通过 ftp 访问它。但我不确定这是否是个好主意,尤其是因为对文件的所有“真实”访问都来自同一个设备,即 nas。

什么是好的结构和文件访问方法等?

【问题讨论】:

  • 现在我想起来我猜 ftp 部分真的没有意义。我会更好地检测应用程序的运行位置并相应地设置数据目录的路径,并且从我的计算机上它将通过 nfs 等无缝访问该文件夹,而无需对应用程序进行任何进一步的更改。

标签: php git


【解决方案1】:

我总是将我的数据保存在一个单独的目录中,我使用 .gitignore 文件从 git 中取出该目录。这意味着当我推送更改时,我不会覆盖实时数据。

如果我需要新数据进行测试,我会使用 ftp 将新版本的数据目录从实时服务器下载到我的开发服务器。

这对我有用,因为大部分数据都是由用户上传的,所以它很快就会与我的开发副本不同步,我不想覆盖它。这也意味着我不会因为开发错误而意外损坏他们的数据。

【讨论】:

  • 啊,听起来不错,很简单。不过有个小小的抱怨,我已经将 .gitkeep-files 放在了数据文件夹的子目录中,这样如果我要克隆存储库并在没有数据的情况下重新开始,数据文件夹的结构仍然正确。有什么方法可以在忽略文件夹的同时轻松做到这一点?
  • 你可能会找到你想要的in this answer 这个答案看起来可能符合你的需求; If you want an empty dir and make sure it stays 'clean' for git, create a .gitignore containing the following lines within: # .gitignore sample #ignore all files in this dir... * #... except for this one. !.gitignore 抱歉,这看起来很糟糕,我是 mini-Markdown 的新手
  • 谢谢。我现在已经全部设置好了。编辑你的答案并在那里添加代码可能是一个更好的主意,而不是将代码放在 cmets 中,它们非常有限。此外,您可以通过单击“共享”按钮获得答案的直接 URL。我将您的答案标记为已接受。干杯!这个答案有一些更相关的信息:stackoverflow.com/a/19005115/147949
猜你喜欢
  • 2017-06-30
  • 2014-11-14
  • 1970-01-01
  • 2016-02-28
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 1970-01-01
  • 2015-08-05
相关资源
最近更新 更多