我应该在 git 上发布我的 PHP Web 应用程序的哪个目录?

Which directory of my PHP webapp should I publish on git?

提问人:vale 提问时间:11/9/2023 更新时间:11/10/2023 访问量:51

问:

我正在开发一个PHP网络应用程序。我必须在分布式版本控制系统 (git) 上发布它,但我不确定是发布项目的根目录还是public_html文件夹。

根文件夹包含与 composer 相关的文件和配置文件。

另外,包含配置文件的最佳实践是什么,这些配置文件必须从版本控制中省略/隐藏?

该项目的结构如下:

+ root
|_ (...)
|_ config.php
|_ composer.json
|_ composer.lock
|_ public_html
    |_ index.php
    |_ (...) // The rest of the project

php git 版本控制

评论

2赞 brombeer 11/9/2023
你也想提交你的文件,对吧?所以根。至于配置文件:use github.com/vlucas/phpdotenvcomposer.*
1赞 IMSoP 11/10/2023
@brombeer 我将给出一个不合时宜的观点:环境变量是全局状态,这感觉就像是从范围到启动脚本的倒退;如果你有一个文件,你不妨只有一个 OR,如果你不想提交它,就把它放进去。事实上,我认为文件违反了最初的 12 因素宣言的精神,错过了它最初试图表达的观点。.envconfig.iniconfig.php.gitignore.env

答:

2赞 IMSoP 11/10/2023 #1

Git 主要不是关于“发布”任何东西,而是关于跟踪对某些东西的更改,并在某个地方检索特定版本。

考虑将什么放入版本控制中可能更容易:

  • 数据和应用程序状态。您不希望每次有人在您的博客上发表新评论或更改您商店中的产品价格时都更新您的 git 存储库。
  • 大型物体。Git 针对小型文本文件进行了优化;你可以把一些图像放进去,比如徽标和按钮,但可能不想下载全分辨率的桌面背景,或者下载某些软件的安装程序。如果需要,也有像 git-lfs 这样的解决方案,但大多数时候,这些“资产”属于其他地方,比如 AWS S3(它有自己的版本控制)。
  • 敏感数据。任何有权访问存储库的人不仅可以访问文件的当前版本,还可以访问每个以前的版本;因此,您要小心,永远不要在那里存储任何密码或密钥。
  • 按部署配置。这个变得更加模糊 - 一些配置对版本控制很有用,这样您就可以重新部署应用程序,而无需大量手动设置;但其他内容应该由安装脚本生成。很难在不知道其中的内容的情况下回答是否应该提交 - 可能它应该是,但其中的一些东西应该转移到其他地方。config.php

提交某些内容,只需将其列在 .gitignore即可。(请注意,这不是一项安全措施,只是为了方便起见:它不会删除已经提交的文件,甚至不会从将来的修订中删除它们,也不会阻止您将来意外添加它们;它只是使大多数命令不默认添加它们。你仍然需要注意你正在做的事情。

其他所有内容都可能属于 git,包括 composer.lock

评论

0赞 Jim Redmond 11/10/2023
很好的答案!不过,有一点需要注意的是,它不会取消跟踪您已经添加到存储库中的文件。(关于这个问题有很多。.gitignore
0赞 vale 11/10/2023
包含私钥的配置文件应该提交(空)作为示例吗?另外,您有关于安装脚本的任何示例/资源吗?
1赞 IMSoP 11/10/2023
@JimRedmond 真;我扩展了它做什么的警告。
1赞 IMSoP 11/10/2023
@vale 有一千种不同的方法可以管理配置。如何分离配置的不同部分,以及将不想在版本控制中的部分放在哪里,都是关于如何构建应用程序,而不是与 git 无关。有一千种方法可以做到这一点,这里不是讨论它们的地方。