sig - ¿Es posible incluir un archivo en su.gitconfig
github sin in (4)
Me gustaría incluir un archivo en mi .gitconfig que tenga mi configuración de github, ¿es esto posible?
¿Puedo hacer algo como esto?
[core]
include = /path/to/file
Actualización 2012:
Vea la answer :
Incluye
Puede incluir un archivo de configuración de otro configurando la variable
include.path
especial al nombre del archivo que se incluirá.
El archivo incluido se expande inmediatamente, como si su contenido se hubiera encontrado en la ubicación de la directiva de inclusión.
Si el valor de la variableinclude.path
es una ruta relativa, se considera que la ruta es relativa al archivo de configuración en el que se encontró la directiva de inclusión.
El valor deinclude.path
está sujeto a la expansión de tilde:~/
se expande al valor de$HOME
, y~user/
al directorio de inicio del usuario especificado.
No lo creo.
Prefiero poner esa configuración en el archivo ~/.gitconfig
Archivo de configuración específico del usuario. También llamado archivo de configuración "global".
De esa manera, completa el archivo específico del proyecto .gitconfig, sin que se publique cuando se envíe a GitHub. Vea también esta respuesta SO para más información sobre el archivo de configuración global.
Git tiene 3 archivos de configuración .
bjeanes añade en los comentarios:
Parece que a todos se les escapó el punto de esta pregunta.
David obviamente desea subir un repositorio de todos sus archivos de puntos (gemrc
,gemrc
, etc.) INCLUYENDO su.gitconfig
para que pueda tener todos sus ajustes en todas sus máquinas.
Una forma de insertar partes de un archivo.gitconfig
al incluir e ignorar las entradas privadas es lo que él (y yo, para el caso) busca.
Una forma posible sería utilizar un controlador de filtro de borrado / limpieza para descifrar / cifrar un archivo con información confidencial privada (consulte este hilo ), para completar un archivo local como ~ / .gitconfig con las partes descifradas que son relevantes para ese archivo. expediente.
De esa manera, puede tener un repositorio Git con todos sus archivos de puntos, más un archivo con información cifrada destinada a ser descifrado y agregado a dichos archivos de puntos.
En .gitattributes
(o .git/info/a..
) use:
myPrivateInfosFile filter=gpg diff=gpg
En su archivo .config repo:
[filter "gpg"]
smudge = gpg -d -q --batch --no-tty
clean = gpg -ea -q --batch --no-tty -r C920A124
[diff "gpg"]
textconv = decrypt
(una solución basada en GPG significa, por supuesto, que ha comunicado sus claves privadas / públicas por otro medio en la computadora de destino donde desea restaurar todos sus archivos de puntos mediante la clonación de este repositorio especial)
En realidad, en su caso, la secuencia de comandos de borrado debe completarse, ya que, después de descifrar ese archivo, debe continuar y agregar partes relevantes a su archivo global ~/.gitconfig
(a menos que sobrescriba el archivo de configuración global con otra ubicación ) u otra archivos de puntos para esa materia.
https://kerneltrap.org/mailarchive/git/2008/3/13/1153274/thread (los inconvenientes de gpg se discuten más en este hilo ) (esto es diferente a tener un repositorio Git incrustado completo, como se discute aquí )
Creo que puedes lograr esto usando la herramienta hub de defunkt . Este es un contenedor para el comando git que, entre otras cosas, le permite tener las variables de entorno GITHUB_USER
y GITHUB_TOKEN
. Lo que anulará la configuración en el archivo .gitconfig
local.
Luego, para que sea perfecto, el usuario al que apuntaste con alias git=hub
en su configuración ZSH . Debería poder luego obtener un archivo local donde establezca sus variables de entorno y empuje su repositorio al mundo público con toda su información privada intacta.
** NOTA para los usuarios de Homebrew en OSX, puede instalar la herramienta a través de brew install hub
.
Git (1.7.10+) ahora supports esta sintaxis en .gitconfig
:
[include]
path = /path/to/file
Vea here para una descripción detallada del cambio de git y sus casos de borde.
Por cierto, un par de sutilezas que vale la pena señalar:
La expansión de variables de entorno, por ejemplo,
$HOME
, no es compatible. (Expansión de~
apareció en Git 1.7.10.2.)Si se especifica una ruta relativa, entonces es relativa al archivo .gitconfig que tiene la declaración
[include]
. Esto funciona correctamente incluso a través de las~/.gitconfig
encadenadas, por ejemplo,~/.gitconfig
puede tener:[include] path = subdir/gitconfig
y
subdir/gitconfig
puede tener:[include] path = nested_subdir/gitconfig
... lo que hará que se
subdir/nested_subdir/gitconfig
.Si git no puede encontrar el archivo de destino, ignora silenciosamente el error. Esto parece ser por diseño.
Puedes cargarlo desde la línea de comandos:
$ git config --local include.path "/path/to/.gitconfig"
Utilice "$PWD"/.gitconfig
en "$PWD"/.gitconfig
lugar, si desea cargar el archivo desde el directorio actual.
Después de ejecutar el comando anterior, las siguientes líneas se agregan a su archivo .git/config
:
[include]
path = /path/to/.gitconfig