¿Dónde está documentada la bandera de configuration '-c' para git?

Así que cuando utilizo SourceTree para enviar algunos commits a un repository remoto, noté que estaba insertando algunos indicadores no típicos (al less para mí) antes del command push . Aquí hay una muestra de lo que SourceTree realmente ejecuta:

 git -c diff.mnemonicprefix=false -c core.quotepath=false -c cnetworkingential.helper=sourcetree push -v --tags ...rest_of_the_command_here... 

Entonces, antes de que git realmente ejecute git push , está incluyendo estos -c indicadores.

Buscar lo que estas banderas están haciendo no fue muy complicado.

  • -c diff.mnemonicprefix=false – " Si está configurado, 'git diff' usa un par de prefijos que es diferente del estándar" a / "y" b / ", dependiendo de lo que se esté comparando. "
  • -c core.quotepath=false – " Los commands que -c core.quotepath=false salida a las routes (ej. ls-files, diff), cuando no se les da la opción -z, citan caracteres" inusuales "en la ruta al encerrar la ruta en un par de comillas dobles y con barras diagonales inversas del mismo modo que se citan las cadenas en el código fuente C. Si esta variable se establece en falso, los bytes superiores a 0x80 no se entregan, sino que se imprimen de la misma manera. Tenga en count que los comillas dobles, barras invertidas y de control siempre se citan sin -z independientemente de la configuration de esta variable " .
  • -c cnetworkingential.helper=sourcetree – " El nombre de un ayudante de cnetworkingencial externo y todas las opciones asociadas. Si el nombre del asistente no es una ruta absoluta, entonces se antepone la cnetworkingencial de git de cadena. La cadena resultante es ejecutada por el shell ( así que, por ejemplo, establecer esto en foo –option = bar ejecutará git cnetworkingential-foo –option = bar a través del shell. Consulte el manual de ayudantes específicos para ver ejemplos de su uso. "

OK, no es gran cosa.

Sin embargo , todos esos enlaces y descripciones son para commands seprate git. Entonces normalmente correría

 git config diff.mnemonicprefix false 

si desea establecer la configuration diff.mnemonicprefix .

Puedo ver que esto -c está haciendo exactamente eso, command por command, pero lo que no puedo encontrar, ¿dónde está documentado este atajo -c ? Creo que estaría en la sección de configuration , pero no veo el command -c allí.

Oops, lo encontré. Está en la documentation simple y antigua de git , aquí – http://git-scm.com/docs/git

-c <name>=<value> :

Pase un parámetro de configuration al command. El valor proporcionado anulará los valores de los files de configuration. El <nombre> se espera en el mismo formatting que el listdo por git config (subkeys separadas por puntos).

Tenga en count que se permite omitir el = en git -c foo.bar ... y establece foo.bar en el valor verdadero boolean (al igual que lo haría la [foo]bar en un file de configuration). Incluyendo los iguales pero con un valor vacío (como git -c foo.bar= ... ) establece foo.bar en la cadena vacía.

Lo que no está documentado es que git -c minúscula el nombre de la variable:

 vonc@bvonc MINGW64 ~ $ git version git version 2.12.0.windows.1 vonc@bvonc MINGW64 ~ $ git -c VAR=c config -l|grep var var=c 

Eso puede ser un problema en el sistema operativo donde importa la variable (consulte también el caso de la url a continuación)

Esto se solucionará en Git 2.13 (Q2 2017)

Ver commit 1274a15 y commit ee98df3 (23 de febrero de 2017) por Junio ​​C Hamano ( gitster ) .
(Fusionado por Junio ​​C Hamano – gitster – en commit 2f54451 , 10 mar 2017)

config

El análisis de asignaciones únicas de variables de configuration que provienen históricamente de la línea de command fue bastante flojo y permitió que pasara cualquier cosa.

También descartó todo en el nombre de la variable, incluso un nombre de tres niveles <section>.<subsection>.<variable> en el que la pieza debe ser tratada de manera que distinga entre mayúsculas y minúsculas .

Un ejemplo de tres niveles <section>.<subsection>.<variable> nombre donde importa el caso, sin importar el sistema operativo al establecer una url:

 vonc@bvonc MINGW64 ~ $ git -c url."https://myserver/GitLab".insteadOf=git@myserver.org/GitLab config -l|grep -i Gitlab url.https://myserver.org/gitlab.insteadof=git@myserver.org/GitLab 

Si su url del server de repo de Git privado no está totalmente en minúscula … ese command no funcionaría.
Si bien el esquema de una url puede ser insensible a las mayúsculas y minúsculas , así como el dominio , el rest de la URL (aquí la parte /GitLab ) puede ser sensible a mayúsculas y minúsculas .