repositorio - git push example
¿Cómo manejas los datos confidenciales en un repositorio público de git? (5)
¿Cómo maneja los datos confidenciales como las claves secretas de la API, las sales de hash cuando mantiene su código en un repositorio público de git?
Obviamente, mantener los datos confidenciales en el código lo comprometerá.
Otra solución es no codificar la información secreta en el código, sino almacenarla en un archivo independiente y gitignore el archivo. Esto tiene la desventaja de que cuando alguien extrae su código por primera vez, faltará la información secreta y no se agotará. Esto puede explicarse escribiendo una rutina de "inicializar si falta" en el código, pero luego está permitiendo que el sistema git se deslice en su código, lo cual no es bueno en IMO
Y otra solución es crear un archivo de información secreta "predeterminado", enviarlo al inicio del proyecto y luego usar su propia información sin confirmarla. Pero esto puede hacer que git se queje de que tiene cambios no comprometidos cuando tira.
Entonces, ¿cuál es la forma común de manejar esto?
El archivo de información secreta "predeterminado" es una buena idea, sin embargo, no hay forma de evitar las advertencias de git, incluso si ignora el archivo. Desde la página de ayuda de github :
git no ignorará un archivo que ya se había seguido antes de agregar una regla a este archivo para ignorarlo. En tal caso, el archivo no debe ser rastreado, generalmente con
git rm --cached filename
Por lo tanto, agregar un archivo "ficticio" o "predeterminado" y luego ignorarlo no evitará advertencias. Si bien el enfoque funcionará, será un inconveniente ya que siempre tendrá que excluir manualmente el archivo confidencial de cada confirmación.
Al no rastrear el archivo, se elimina de github, lo que anula el propósito de tener el archivo en primer lugar.
Quizás la sugerencia de submódulo funcione.
Intente usar .gitattributes para la ruta con el filtro de cifrado / descifrado configurado:
*secure.yml filter=crypt
Y en .git / config agregue la configuración para el filtro de criptografía:
[filter "crypt"]
clean = openssl enc ...
smudge = openssl enc -d ...
required
La mejor solución sería un git submodule
privado y un repositorio público de git.
Vea esta pregunta para más información; una buena cita para usted:
Cuando excluye o ignora, solo está evitando que los archivos se agreguen a su repositorio. ninguno de los archivos de "archivos confidenciales" está ni siquiera en el repositorio, solo en su directorio de trabajo.
Podría decirse que no debería codificar estas propiedades en su fuente, ya que un administrador querrá la opción de cambiarlas en un sistema determinado. Si estas propiedades se encuentran en un archivo de propiedades (por ejemplo, en su directorio de inicio), el problema se resuelve.
Para los usuarios que pueden tener problemas, puede registrar un archivo predeterminado que pueden copiar en su carpeta de inicio y modificar. Si los mensajes de error y README están claros sobre el tema de que falta este archivo en particular, esta configuración funcionará bastante bien.
Si alguien necesita para su proyecto de Android, existe la forma más sencilla que encuentro:
paso 1: crear: res / values / secrets.xml con:
<!-- Inside of `res/values/secrets.xml` -->
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="parse_application_id">xxxxxx</string>
<string name="parse_client_secret">yyyyyy</string>
<string name="google_maps_api_key">zzzzzz</string>
</resources>
paso 2: utilízalo en código o archivo xml
getString(R.string.parse_application_id),
getString(R.string.parse_client_secret)
o
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="@string/google_maps_api_key"/>
Paso 3: agrega esta línea en el archivo .gitignore
**/*/res/values/secrets.xml
aquí está el article completo