Código que no quieras compartir
¿Te ha pasado en alguna ocasión que no quieres compartir modificaciones de código? Te cuento mi caso. En el proyecto donde colaboro actualmente usamos el puerto 5000 para desplegar la aplicación, pero un software de Intel instalado en mi equipo usa por defecto dicho puerto y, claro, al desplegar el proyecto en mi máquina recibo el siguiente mensaje:
Unhandled exception. System.IO.IOException: Failed to bind to address http://127.0.0.1:5000: address already in use.
La solución más sencilla pasa por actualizar el puerto donde despliego la aplicación en mi máquina, y para esto debo hacer una modificación en un archivo nombrado como launchSettings.json pero, como el resto de colaboradores seguirá usando el puerto 5000 no quiero compartir dicha modificación del puerto de despliegue, únicamente la usaré yo en mi equipo local.
Conseguir esto pasa por estar atento a excluir dicho archivo de todas las subidas de código que realizo, lo cual es muy tedioso dado que soy propenso a usar el siguiente comando antes de hacer una confirmación en git cuando estoy satisfecho con mi código.
git add .
Añadir una sentencia a mi configuración de git para ignorar el archivo launchSettings.json tampoco sería una solución ideal, pues debería generar una confirmación para que git deje de rastrearlo y, si algún colaborador quisiera en el futuro hacer alguna modificación en este archivo de configuración, no podría compartirla. Finalmente, la solución que mejor se adapta a esta circunstacia es pedirle a git que asuma que dicho archivo no tiene cambios.
Con el siguiente comando podemos configurar archivos que están siendo rastreados, y no que queremos dejen de estarlo, para que git asuma que no han sido cambiados:
git update-index --assume-unchanged src/project.api/properties/launchSettings.json
Puedes listar los archivos ignorados así:
git ls-files -v | grep '^h'
Y, por último, para dejar de asumir que dicho archivo no tiene cambios, usa el siguiente comando:
git update-index --no-assume-unchanged src/project.api/properties/launchSettings.json