¿Una buena forma de desarrollar código abierto sin exponer cnetworkingenciales?

Desarrollo una aplicación web y envío su código fuente a un repository público de Github. El problema es que el código PHP contiene cnetworkingenciales de database que no deberían ser visibles para otras personas.

Ahora estoy buscando una buena manera de manejar esto. Podría excluir el file de configuration del repository de Git usando .gitignore , pero otros no verían la estructura para crear su propia configuration. Por otro lado, no quiero replace manualmente las cnetworkingenciales reales para cada confirmación.

¿Cuál es una buena manera de manejar esta información sensible dentro del código fuente del software de código abierto?

Lo que suelo hacer en estos casos es permitir una configuration de dos capas donde el set pnetworkingeterminado de properties es versionado y confirmado con el origen, pero luego los desarrolladores pueden suministrar un file externo que se usará si se descubre y replaceá los valores pnetworkingeterminados en un por configuration. Esto no solo es útil para la externalización de cnetworkingenciales, sino que también le permite configurar cosas pnetworkingeterminadas como el recuento de subprocesss, el tamaño del grupo de conexiones, etc., que pueden anularse si así lo desea. Es importante destacar que pueden ver la estructura completa siempre. Tú mismo tendrás tu propio file de anulaciones externas con las cnetworkingenciales reales que usas. Pero los valores pnetworkingeterminados son falsos que ingresas.

Sé que estás usando PHP, para Java como ejemplo, se vería más o less así:

 Properties defaultProps = loadDefaults(); Properties overrideProps = loadOverridesIfFound(); for(String name : overrideProps.keySet()) { defaultProperties.put(name,overrideProps.get(name)); } 

He encontrado que esta técnica es muy efectiva para muchos proyectos.

Simplemente podría .gitignore el file de configuration real y agregar una copy vacía con un sufijo (configDefault.php) . Esto también le proporciona una forma de asegurarse de que los usuarios realicen la configuration antes de ejecutar la aplicación.