Исправить msysGit Portable $HOME

Я успешно установил и настроил msysGit Portable на своем флеш-накопителе и использовал его, чтобы вытащить и перенаправить репозитории GitHub. Тем не менее, мне, похоже, всегда приходится отказываться от поддержки SSH.

В частности, для того, чтобы SSH обнаружил мои ключевые файлы, я должен следовать этим инструкциям, чтобы запустить второй экземпляр ssh-agent и тогда ssh-add мой ключ каждый раз, когда я запускаю git - bash.bat.

Используя вывод ssh -v [email protected] для отладки, я вижу, что msysGit по умолчанию для моего каталога пользователей Windows ищет ключи. Он не может этого сделать; Мне нужно, чтобы он выглядел в своем собственном каталоге на переносном диске.

Как заставить $HOME быть собственной папкой программы?

Обновление для сломанной ссылки Vox

Инструкции из этой страницы похожи на теперь неработающую ссылку, которую я изначально разместил. Цитируется ниже. Также здесь веб-архив оригинальной статьи Vox.

Однако, если вы попробуете это и получите:

% ssh-add
Could not open a connection to your authentication agent. 

то ваша сессия не будет запущена под агентом ssh. Вы можете обойти это, перезапустив новую оболочку под агентом, выполнив:

exec ssh-agent bash 

где вы можете заменить bash на оболочку по вашему выбору. Как только вы это сделаете, вы сможете запустить ssh-add для загрузки своего ключа для этой оболочки.

Ответ 1

Команда, используемая для запуска git bash:

C:\Windows\SysWOW64\cmd.exe /c ""C:\Prog\Git\1.7.1\bin\sh.exe" --login -i"

Я просто попробовал следующее в сеансе DOS:

C:\>C:\Windows\SysWOW64\cmd.exe /c ""C:\Prog\Git\1.7.1\bin\sh.exe" --login -i"
[email protected] /c/
$ echo $HOME
/c/Users/VonC

По умолчанию $HOME $% HOMEPATH%, но если я заставляю% HOME%:

set HOME=/another/path

а затем запустите тот же сеанс bash:

C:\>C:\Windows\SysWOW64\cmd.exe /c ""C:\Prog\Git\1.7.1\bin\sh.exe" --login -i"
[email protected] /c/
$ echo $HOME
/another/path

Итак, если вы завершите вызов bash с помощью параметра script, чтобы HOME:

  • %~dp0: путь оболочки к USB-ключу
  • или %~d1\your\path: с %~d1 является буквой диска (вашего USB-ключа, если ваша обертка находится на нем)

вы должны быть в состоянии заставить HOME использовать любое значение, которое вам нужно.


Примечание (ноябрь 2011 г.): с тех пор OP dgw написал свою собственную собственную обертку:

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

Статья "Portable git для Windows: установка переменной среды $HOME для полной переносимости (включая ключи SSL и конфигурацию для использования с GitHub ) "также добавить полезную информацию.

Однако, если вы устанавливаете git на переносной диск, вы хотите, чтобы ваши настройки перемещались с установкой, что явно не будет, если они ищут их в папке, которая может отсутствовать на других компьютерах.

Итак, нам нужно сказать, что Portable git обрабатывает определенное местоположение в своей собственной папке в качестве домашней папки; таким образом мы можем скопировать всю папку git в любом месте, где захотим, и настройки будут перемещаться вместе с ней.