Código de alojamiento específico en proyectos: ¿presionar también a Github?

Imagine este escenario común: pirateé un proyecto genial que quiero compartir con el mundo. Entonces: lo puse en Github, y lo traje de Github en mi propio website para que la gente pueda ver una demostración. Esto también hace que la actualización sea fácil: solo presiona desde mi casilla local a Github, busca en mi server.

Me gustaría hacer un seguimiento de los visitantes, así que agrego al proyecto Google Analytics y tal vez algunas otras cosas específicas del sitio (como un encabezado global para todas las páginas de mi sitio). Sin embargo, todo el mundo que revisa mi proyecto de Github obtiene todas esas cosas también.

Hay algunas soluciones para prevenir eso. Podría hacer una 'twig de implementación' específica para mi website, pero eso es engorroso. Podría hacer algún tipo de cambio en mi código ( if ip === myip showStats() ), pero eso es feo.

Otra opción podría ser usar githooks, pero no tengo ninguna experiencia con eso.

¿Cualquier otra sugerencia? ¿Las personas incluso se molestan cuando obtienen códigos específicos de implementación en sus cajas?

De manera similar a la sugerencia de Breun, (por lo tanto, tu pregunta será doblemente respondida) Despliego mis proyectos de Python con un file settings.py que define la configuration que se necesita en la máquina de producción. (debug = False, configuration de database adecuada y routes de files …)

Al final del file, trato de importar eventsettings.py de esta manera:

 try: from projectnaam import developmentsettings except: pass 

El file no existe en el control de versiones, por lo que esto fallará y pasará silenciosamente al server. En mi máquina de desarrollo, creo manualmente el file y anulo la configuration específica para que coincida con mis necesidades de desarrollo. (cosas como sqlite en lugar de postgres)

Esto se puede extender a una estrategia de implementación más sofisticada que involucra a Fabric, Buildout, Capistrano y Chef. Todo esto se vuelve más importante cuando se trabaja en equipos (distribuidos).

Mi flujo de desarrollo actual ahora es como: código de edición, $ git commit -m "comment", $ git push, $ fab deploy master production (<- esto saca 'master' del origen en el server)

Cree un file de configuration para la configuration específica de la implementación. Por ejemplo, podría tener un conf / defaults.conf para cualquier configuration pnetworkingeterminada y permitir que los usuarios pongan las anulaciones específicas de la implementación local en conf / local.conf.

Y agregue su file settings.php al .gitignore, de lo contrario, puede cargarlo.

Compartir el código de Google Analytics (api) con el mundo no es una buena idea porque tus statistics se arruinarán si alguien usa tu código sin cambiarlo.