Anda di halaman 1dari 3

Stack Overflow is a question and answ er site for professional and enthusiast programmers.

It's 100% free, no registration required.

Tell me more

Fix msysGit Portable $HOME location

I have successfully installed and configured msysGit Portable on my flash drive, and have used it to pull and push GitHub repos. However, I seem to always have to kludge the SSH support. Specifically, in order for SSH to find my key files, I have to follow these instructions to start a second instance of sshagent and then sshadd my key every time I run git-bash.bat. Using the output of ssh v git@github.com to debug I see that msysGit defaults to my Windows user directory to look for keys. It can't do that; I need it to look in its own directory on the portable drive. How can I force $HOME to be the program's own folder?

Update for broken Vox link


Instructions from this page are similar to the now-broken link I originally posted. Quoted below. Also here's the webarchive of original Vox article. However, if you try this and get: % sshadd Could not open a connection to your authentication agent. then your session is not running under the ssh-agent. You can get around this by restarting a new shell under the agent by running: exec sshagent bash where you can replace bash with the shell of your choice. Once you do this, you should be able to run ssh-add to load your key for that shell.
git ssh msy sgit portable-applications home-directory

edited Jun 25 '12 at 21:19 CharlesB 21.3k 5 50 77

asked Aug 11 '10 at 1:56 dgw 343 2 14

As a byproduct of a solution to this problem, I'm hoping that all the other files that end up scattered through the user directory of whatever PC I'm using will be properly located as well. .bash_history, .gitk, etc. should travel with me, not be left behind every time I switch machines. dgw Aug 11 '10 at 1:58

1 Answer
The command used to launch git bash is: C:\Windows\SysWOW64\cmd.exe /c ""C:\Prog\Git\1.7.1\bin\sh.exe" login i" I just tried the following in a DOS session: 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

By default, $HOME$%HOMEPATH%, but if I force %HOME%: set HOME=/another/path and then launch the same bash session: 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 So if you wrap the bash call by a script setting the HOME to: %~dp0 : the path of the wrapper on your USB key or %~d1\your\path: with %~d1 being the drive letter (of your usb key if your wrapper is on it) , you should be able to force HOME to whatever value you need.

Note (November 2011): since then, the OP dgw has written his own wrapper: gitbashportable.bat : @echo off rem Copyright (C): 2010 Voyagerfan5761 rem http://technobabbl.es/ set set set set set rem USERPROFILE=%~dp0 HOMEDRIVE=%~d0 HOMEPATH=%~p0 HOME=%~dp0 HISTFILE=%USERPROFILE%.bash_history set BASHRC=%USERPROFILE%.bashrc

gitbash.bat The article "Portable Git for Windows: setting the $HOME environment variable to allow complete portability (including SSL keys and configuration for use with GitHub)" also add useful information. However, if you install Git on a portable drive, you'll want your settings to travel with the installation which obviously they won't if it is looking for them in a folder which may not exist on other computers. So, what we need to do is tell Portable Git to treat a specific location within its own folder as the home folder; that way we can copy the whole Git folder anywhere we like and the settings will travel with it. edited Nov 23 '11 at 8:42 answered Aug 11 '10 at 4:13 VonC 329k 72 711 846

Thank you very much. I'll try this out as soon as I can (on the road right now, but I'll have time at some point) and will accept your answer once I verify that it'll work. (I'd accept now, but it seems odd to accept an answer before verifying its correctness.) dgw Aug 13 '10 at 4:25 @Voyager: no problem, take your time ;) I have had answer accepted after a long (very long) time before :) See the comments of meta.stackoverflow.com/questions/36318/ VonC Aug 13 '10 at 5:52 Great thread. :) I've just tested my wrapper and it totally worked like a charm. Only detail left is whether I can get the value of %~dp0 without the trailing slashes; any ideas? If not, that's fine; my setup is still working great. dgw Aug 14 '10 at 1:47 @Voyager: if you use a fixed path (always the same) in your USB, you ould use just %d1 and build your path as you see fit. If not, you need to remove the last char, with DOS-based character substitution. See dostips.com/DtTipsStringManipulation.php. set str=%str:1% should do it. VonC Aug 14 '10 at 7:21 Any ideas why this isn't the default behavior for the portable installer? It's extremely frustrating to figure this out, and I'm pretty sure I'm going to mess it up and require my user to have to mess with this on every computer he uses (ie, he won't use it as a result of this behavior). mmr Nov 13 '11 at 6:15 show 3 more comments

Not the answer you're looking for? Browse other questions tagged git ssh msysgit

portable-applications

home-directory or ask your own question.

Anda mungkin juga menyukai