Escolar Documentos
Profissional Documentos
Cultura Documentos
Tell me more
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?
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