Git 在不公开凭据的情况下开发开源的好方法?
我开发了一个web应用程序,并将其源代码推送到公共Github存储库。问题是PHP代码包含其他人不应该看到的数据库凭据 现在我正在寻找一个好办法来处理这个问题。我可以使用Git 在不公开凭据的情况下开发开源的好方法?,git,github,open-source,publish,credentials,Git,Github,Open Source,Publish,Credentials,我开发了一个web应用程序,并将其源代码推送到公共Github存储库。问题是PHP代码包含其他人不应该看到的数据库凭据 现在我正在寻找一个好办法来处理这个问题。我可以使用.gitignore从Git存储库中排除配置文件,但是其他人看不到创建自己配置的结构。另一方面,我不想手动替换每次提交的真实凭据 在开源软件的源代码中处理这些敏感信息的好方法是什么?在这些情况下,我通常做的是允许使用两层配置,其中默认的属性集是版本化的,并与源代码一起提交,但是开发人员可以提供一个外部文件,如果发现该文件,将使用
.gitignore
从Git存储库中排除配置文件,但是其他人看不到创建自己配置的结构。另一方面,我不想手动替换每次提交的真实凭据
在开源软件的源代码中处理这些敏感信息的好方法是什么?在这些情况下,我通常做的是允许使用两层配置,其中默认的属性集是版本化的,并与源代码一起提交,但是开发人员可以提供一个外部文件,如果发现该文件,将使用该文件,并将根据每个设置替换默认值。这不仅对外部化凭证很有用,而且还允许您使用默认值,如线程数、连接池大小等。。如果需要,可以将其覆盖。重要的是,他们总能看到完整的结构。您将拥有自己的外部覆盖文件,其中包含您使用的真实凭据。但默认值是您签入的假值 我知道您使用的是PHP,以java为例,大致如下:
Properties defaultProps = loadDefaults();
Properties overrideProps = loadOverridesIfFound();
for(String name : overrideProps.keySet()) {
defaultProperties.put(name,overrideProps.get(name));
}
我发现这种技术对许多项目都非常有效。在这些情况下,我通常会做的是允许两层配置,其中默认的属性集是版本化的,并与源代码一起提交,但是开发人员可以提供一个外部文件,如果发现了,将使用该文件,并将根据每个设置替换默认值。这不仅对外部化凭证很有用,而且还允许您使用默认值,如线程数、连接池大小等。。如果需要,可以将其覆盖。重要的是,他们总能看到完整的结构。您将拥有自己的外部覆盖文件,其中包含您使用的真实凭据。但默认值是您签入的假值 我知道您使用的是PHP,以java为例,大致如下:
Properties defaultProps = loadDefaults();
Properties overrideProps = loadOverridesIfFound();
for(String name : overrideProps.keySet()) {
defaultProperties.put(name,overrideProps.get(name));
}
我发现这种技术对许多项目都非常有效。您可以简单地
.git忽略实际的配置文件,并添加一个带有后缀(configDefault.php)
的空副本。这也为您提供了一种方法,确保用户在运行应用程序之前确实检查了配置。您可以简单地.gitignore
实际的配置文件,并添加一个带有后缀(configDefault.php)
的空副本。这也为您提供了一种方法,确保用户在运行应用程序之前确实检查了配置。config.php实际上被忽略了,所以它被跟踪的唯一未被推送的东西是configDefault.php,它甚至没有被实际的代码读取。config.php实际上被忽略了,所以它被跟踪的唯一从未被推送的东西是configDefault.php跟踪的是configDefault.php,它甚至不被实际代码读取。