From 8a4c2eb0a392547823af5b9b432e766bb0e9f563 Mon Sep 17 00:00:00 2001 From: Johannes Schindelin Date: Tue, 29 Sep 2015 14:09:00 +0000 Subject: [PATCH] git-wrapper: append $HOME/bin to the PATH `$HOME/bin/` is quite convenient a place to put user-specific Git helpers, such as credential or remote helpers. When run in Git Bash, it is therefore already appended to the PATH; Let's do the equivalent when run in Git CMD: when `git.exe` is called, Git is told to look also for scripts and programs in `$HOME/bin` (this does not modify Git CMD's `PATH`, of course). This fixes https://github.com/git-for-windows/git/issues/429 Signed-off-by: Johannes Schindelin --- compat/win32/git-wrapper.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/compat/win32/git-wrapper.c b/compat/win32/git-wrapper.c index 588604b8813c94..7cb9cf51b821e7 100644 --- a/compat/win32/git-wrapper.c +++ b/compat/win32/git-wrapper.c @@ -88,7 +88,7 @@ static void setup_environment(LPWSTR top_level_path, int full_path) /* extend the PATH */ len = GetEnvironmentVariable(L"PATH", NULL, 0); - len = sizeof(WCHAR) * (len + 2 * MAX_PATH); + len = sizeof(WCHAR) * (len + 3 * MAX_PATH); path2 = (LPWSTR)malloc(len); wcscpy(path2, top_level_path); if (!full_path) @@ -97,9 +97,16 @@ static void setup_environment(LPWSTR top_level_path, int full_path) PathAppend(path2, msystem_bin); if (_waccess(path2, 0) != -1) { /* We are in an MSys2-based setup */ + int len2 = GetEnvironmentVariable(L"HOME", NULL, 0); + wcscat(path2, L";"); wcscat(path2, top_level_path); PathAppend(path2, L"usr\\bin;"); + if (len2 + 6 < MAX_PATH) { + GetEnvironmentVariable(L"HOME", + path2 + wcslen(path2), len2); + PathAppend(path2, L"bin;"); + } } else { /* Fall back to MSys1 paths */