提问人:vale 提问时间:11/9/2023 更新时间:11/10/2023 访问量:51
我应该在 git 上发布我的 PHP Web 应用程序的哪个目录?
Which directory of my PHP webapp should I publish on git?
问:
我正在开发一个PHP网络应用程序。我必须在分布式版本控制系统 (git) 上发布它,但我不确定是发布项目的根目录还是public_html文件夹。
根文件夹包含与 composer 相关的文件和配置文件。
另外,包含配置文件的最佳实践是什么,这些配置文件必须从版本控制中省略/隐藏?
该项目的结构如下:
+ root
|_ (...)
|_ config.php
|_ composer.json
|_ composer.lock
|_ public_html
|_ index.php
|_ (...) // The rest of the project
答:
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 无关。有一千种方法可以做到这一点,这里不是讨论它们的地方。
评论
composer.*
.env
config.ini
config.php
.gitignore
.env