另一位开发人员说我们应该把.htaccess文件放在git repo中,但由于实时服务器使用密码而我们的本地方框没有,我说我们应该将它们放在.gitignore中。但是,他说,如果你必须跨实例使用不同的.htaccess文件,那你就错了。我认为并非所有服务器实例都是相同的,有时(如果不经常)它们需要自己的配置。他同意我们可以简单地在repo中创建一个“htaccess”文件,该文件在现场复制到.htaccess,但仍然喜欢按照他的方式进行操作。对我来说,服务器配置之类的东西应该不受回购。此外,我不确定是否需要更改我的开发操作系统,以便与实时服务器完全匹配或运行VM软件。我在这里错过了什么吗?哪种方式最好,或者哪种方式更好?
答案 0 :(得分:3)
我认为git主要是软件组件的跟踪器(例如代码行),而不是软件配置。
服务器密码是配置,因此要从更改控制中排除。 .htaccess文件是一个必要的配置工具(正如我在你的例子中所理解的),用于正确操作你的应用程序,因此需要通过git进行更改控制。
我认为你有两种选择。将配置移出repo更加优雅,让我感到更优雅,但如果你必须将它保存在.htaccess文件中,你可以使用smudge/clean scripts in .gitattributes。涂抹/清洁过滤器在结账时将定义的更改注入跟踪的内容(即注入密码),并在分段时再次从被跟踪的内容中清除密码(即用通用的foobar替换密码)。
请记住,因为这些涂抹/清洁过滤器是在git配置中定义的,所以它们不会被跟踪文件传递,所以你需要自己跟踪正确的过滤器应该放在哪里。
在任何一种情况下,无论您是将配置保留在repo之外,还是在repo的实例之间进行手动涂抹/过滤管理,您都可以从git使用 use protocol 中受益(除其他事项外)说明如何处理涂抹/清除脚本到达服务器配置所在位置和/或位置的配置和状态规则。
答案 1 :(得分:0)
由于.htaccess似乎特定于环境,而不是使应用程序运行的必要部分,我不会将其添加到repo。
也许最好的解决方案是在您需要身份验证的服务器上不使用.htaccess,而只是在serverconfig中启用身份验证。