usar tag remove practices from create crear como best git ssh msysgit portable-applications home-directory

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.