5

另一位开发人员说我们应该将 .htaccess 文件放在 git repo 中,但是因为实时服务器使用密码而我们的本地盒子不使用,我说我们应该将它们放在 .gitignore 中。但是,他说,如果您必须跨实例拥有不同的 .htaccess 文件,那么您做错了。我认为并非所有服务器实例都相同,有时(如果不是经常)它们需要自己的配置。他同意我们可以简单地在 repo 中创建一个“htaccess”文件,该文件在实时复制到 .htaccess,但仍然更喜欢按照他的方式进行操作。对我来说,服务器配置之类的东西应该被排除在回购之外。此外,我不确定我是否需要更改我的开发操作系统以完全匹配实时服务器或运行 VM 软件。我在这里错过了什么吗?哪个是最好的方法,或者什么是更好的选择?

4

2 回答 2

3

我认为 git 主要是软件组件(例如代码行)而不是软件配置的跟踪器。

服务器密码是配置,因此被排除在更改控制之外。.htaccess 文件是正确操作应用程序所必需的配置工件(据我所知,在您的情况下),因此可以通过 git 进行更改控制。

在我看来,你有两个选择。将配置移出 repo 让我觉得更优雅,但如果你必须将它保存在 .htaccess 文件中,你可以在 .gitattributes 中使用 smudge/clean 脚本。涂抹/清除过滤器在结帐时将定义的更改注入到跟踪的内容中(即注入密码),并在登台时再次从跟踪的内容中清除密码(即用通用 foobar 替换密码)。

请记住,由于这些涂抹/清洁过滤器是在 git 配置中定义的,它们不会像其他被跟踪的文件那样被传递,因此您需要自己跟踪正确的过滤器是否在它们应该在的位置。

在任何一种情况下,无论您是将配置保留在 repo 之外,还是在 repo 的实例之间进行手动涂抹/过滤管理,您都会受益于 git 的使用协议,该协议将(除其他外)说明您如何处理配置和规定哪些涂抹/清洁脚本位于服务器配置所在的位置和/或位置的规则。

于 2013-02-16T09:08:47.580 回答
0

由于 .htaccess 似乎是特定于环境的,而不是使应用程序运行的重要部分,因此我不会将其添加到存储库中。

也许最好的解决方案是不要在需要身份验证的这些服务器上使用 .htaccess,而只需在 serverconfig 中启用身份验证。

于 2013-02-16T04:40:40.510 回答