remove - git tag push
Repare la ubicaciĆ³n de $ HOME de msysGit Portable (2)
He instalado y configurado con éxito msysGit Portable en mi unidad flash, y lo he usado para extraer y mover repositorios GitHub. Sin embargo, parece que siempre tengo que suspender el soporte de SSH.
Específicamente, para que SSH encuentre mis archivos clave, debo seguir estas instrucciones para comenzar una segunda instancia de ssh-agent
y luego ssh-add
my key cada vez que ejecuto git-bash.bat.
Usando la salida de ssh -v [email protected]
para depurar veo que msysGit se establece de manera predeterminada en mi directorio de usuario de Windows para buscar claves. No puede hacer eso; Necesito que busque en su propio directorio en la unidad portátil.
¿Cómo puedo forzar que $ HOME sea la propia carpeta del programa?
Actualización de enlace Vox roto
Las instrucciones de esta página son similares al enlace ahora roto que originalmente publiqué. Citado a continuación. También aquí está el webarchive del artículo original de Vox .
Sin embargo, si prueba esto y obtiene:
% ssh-add Could not open a connection to your authentication agent.
entonces su sesión no se ejecuta bajo el agente ssh. Puede solucionar esto reiniciando un nuevo shell bajo el agente ejecutando:
exec ssh-agent bash
donde puedes reemplazar bash con el caparazón que elijas. Una vez que hagas esto, deberías poder ejecutar ssh-add para cargar tu clave para ese shell.
Establecer el directorio de inicio
La solución con un contenedor git-bash-portable.bat
abre otra ventana de Windows CMD que se queda en segundo plano.
Otra solución más nativa es ajustar /etc/profile
y configurar el HOME var allí. Simplemente agregue las siguientes líneas al final de /etc/profile
, myuser
beeing your virtual username:
# end of /etc/profile
export HOME="/home/myuser"
cd
Esto establece el directorio HOME y los cds adecuados en él. A continuación, el mecanismo de inicio, como cargar todos los archivos de /etc/profile.d
funciona correctamente y acaba de iniciar git-bash.exe
con un doble clic.
Por supuesto, debe crear su directorio de inicio para que esto funcione. Comience git-bash y créelo:
mkdir -p /home/myuser
Iniciando o reconectando al agente
En cuanto al agente, por lo general tiene que volver a cargarse con cada shell de git-bash abierto. Una solución para obtener un agente independiente que abarque todas las ventanas de git-bash es incluir el siguiente pequeño script ~/.mgssh
en el inicio. Almacena el agente env vars en un archivo agent.env
en el directorio .ssh
. Cualquier shell nuevo lee el archivo, comprueba si el agente todavía se está ejecutando y se conecta a él. Si no se está ejecutando, inicia el agente y vuelve a escribir el archivo agent.env
. Asegúrese de que su directorio .ssh
exista.
# cat ~/.mgssh
agentfile=~/.ssh/agent.env
agent_load_env()
{
test -f "$agentfile" && . "$agentfile" >| /dev/null;
}
agent_start()
{
(umask 077; ssh-agent >| "$agentfile")
. "$agentfile" >| /dev/null;
}
agent_load_env
# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)
if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
agent_start
fi
# uncomment this, if you want to add a key on agent startup
#if [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
# ssh-add
#fi
unset agentfile
Ahora fuente el script .mgssh
en su .bashrc
:
# cat .bashrc
. ~/.mgssh
# ... more .bashrc content
Encontré esto en GitHub:
https://help.github.com/articles/working-with-ssh-key-passphrases/#platform-windows
Asesinando al agente antes de quitar el stick
Por lo general, antes de quitar el lápiz usualmente le pides a Windows que expulse el stick, haciendo clic con el botón derecho en el explorador o usando el pequeño ícono de la bandeja del sistema. Esto no funcionará, si su agente todavía está funcionando. Asegúrate de matar al agente antes de cerrar el último caparazón al eliminar el stick:
$ ssh-agent -k
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 8472 killed;
Observación: Usualmente usaría eval $(ssh-agent -k)
para desarmar los archivos env también, pero cuando hace esto justo antes de cerrar el shell es irrelevante. La secuencia de comandos de inicio anterior .mgssh
se encarga de limpiar el archivo ~/.ssh/agent.env
para que no tenga que hacerse tampoco.
El comando usado para lanzar git bash es:
C:/Windows/SysWOW64/cmd.exe /c ""C:/Prog/Git/1.7.1/bin/sh.exe" --login -i"
Acabo de probar lo siguiente en una sesión de DOS:
C:/>C:/Windows/SysWOW64/cmd.exe /c ""C:/Prog/Git/1.7.1/bin/sh.exe" --login -i"
VonC@XXX /c/
$ echo $HOME
/c/Users/VonC
De forma predeterminada, $ HOME $% HOMEPATH%, pero si forzo% HOME%:
set HOME=/another/path
y luego lanzar la misma sesión bash:
C:/>C:/Windows/SysWOW64/cmd.exe /c ""C:/Prog/Git/1.7.1/bin/sh.exe" --login -i"
VonC@XXX /c/
$ echo $HOME
/another/path
Entonces, si ajusta la llamada bash mediante un script, establezca HOME en:
-
%~dp0
: la ruta de la envoltura en su llave USB - o
%~d1/your/path
: con%~d1
como la letra de la unidad (de su llave usb si su envoltorio está en ella)
, deberías poder forzar a HOME a cualquier valor que necesites.
Nota (noviembre de 2011): desde entonces, el ha escrito su propia envoltura :
git-bash-portable.bat
:
@echo off
rem Copyright (C): 2010 Voyagerfan5761
rem http://technobabbl.es/
set USERPROFILE=%~dp0
set HOMEDRIVE=%~d0
set HOMEPATH=%~p0
set HOME=%~dp0
set HISTFILE=%USERPROFILE%.bash_history
rem set BASHRC=%USERPROFILE%.bashrc
git-bash.bat
El artículo " Portable Git para Windows: establecer la variable de entorno $HOME
para permitir la portabilidad completa (incluidas las claves SSL y la configuración para usar con GitHub) " también agrega información útil.
Sin embargo, si instala Git en una unidad portátil, querrá que su configuración viaje con la instalación, lo que obviamente no ocurrirá si la busca en una carpeta que puede no existir en otras computadoras.
Entonces, lo que tenemos que hacer es decirle a Portable Git que trate una ubicación específica dentro de su propia carpeta como la carpeta de inicio; de esa manera podemos copiar toda la carpeta Git en cualquier lugar que deseemos y la configuración viajará con ella.