Git hook para verificar la presencia del código

Tengo conocimiento limitado en git para entender la documentation sobre git-hooks . Quería saber si hay una manera de agregar un git-hook u otro constructo de modo que pueda verificar si algún código está presente / comentado en uno de los files. Mi flujo de trabajo es que tengo un file de configuration globalConfig.js que contiene dos sets de configuraciones de development y production . Cuando desarrollo, elimino el comentario de la configuration de development y comente la configuration de production , pero cuando confirmo cualquier código a mi repository, quiero asegurarme de que la configuration de production esté comentada y se comente la configuration de development .

Extracto del file globalConfig.js

Desarrollo

  // Production config - Always uncomment it before commiting // const firebaseConfig = { // apiKey: "prod", // authDomain: "prod", // databaseURL: "prod", // storageBucket: "prod", // messagingSenderId: "prod" // }; // Dev config - Always comment out before commiting const firebaseConfig = { apiKey: "dev", authDomain: "dev", databaseURL: "dev", storageBucket: "dev", messagingSenderId: "dev" }; 

Producción

  // Production config - Always uncomment it before commiting const firebaseConfig = { apiKey: "prod", authDomain: "prod", databaseURL: "prod", storageBucket: "prod", messagingSenderId: "prod" }; // Dev config - Always comment out before commiting // const firebaseConfig = { // apiKey: "dev", // authDomain: "dev", // databaseURL: "dev", // storageBucket: "dev", // messagingSenderId: "dev" //}; 

¿Es posible lograrlo a través de git-hook o alguna otra construcción git?

El siguiente enlace precompromiso debería ayudarlo a comenzar. Si un file tiene el development la palabra en él, entonces debe ser un comentario, de lo contrario, la confirmación no está permitida.

Pasos:

  1. Crea .git/hooks/pre-commit con el siguiente contenido:
 git diff --cached --name-status | while read file; do if egrep "development" $file ; then echo "ERROR: Disallowed development configuration in file: ${file}" exit 1 fi done || exit $? 

Tenga en count que la expresión egrep es muy simple atm, pero debe poder modificarla de acuerdo con sus requisitos (es decir, el contenido exacto de globalConfig.js ) O bien, puede actualizar sus preguntas con fragments de globalConfig.js 🙂

  1. Cambiar permissions

chmod 755 .git/hooks/pre-commit

  1. Y luego intente globalConfig.js file globalConfig.js no globalConfig.js . Esto es lo que mostró mi testing:
 ☻ cat globalConfig.js SomeOtherFeature/abc 0d174e2 ✗ //Configuration var Production = new String("Production Configuration"); var development = new String("development Configuration"); $ git add globalConfig.js $ git commit -m "Commit should not be allowed" Checking if globalConfig.js is valid var development = new String("development Configuration"); ERROR: Disallowed development configuration in file: globalConfig.js