Skip to content

Commit 605b908

Browse files
committed
gettext: avoid initialization if the locale dir is not present
The runtime of a simple `git.exe version` call on Windows is currently dominated by the gettext setup, adding a whopping ~150ms to the ~210ms total. Given that this cost is added to each and every git.exe invocation goes through common-main's invocation of git_setup_gettext(), and given that scripts have to call git.exe dozens, if not hundreds, of times, this is a substantial performance penalty. This is particularly pointless when considering that Git for Windows ships without localization (to keep the installer's size to a bearable ~34MB): all that time setting up gettext is for naught. So let's be smart about it and skip setting up gettext if the locale directory is not even present. Signed-off-by: Johannes Schindelin <[email protected]>
1 parent d4f8d1a commit 605b908

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

gettext.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -167,11 +167,13 @@ void git_setup_gettext(void)
167167
if (!is_absolute_path(podir))
168168
podir = p = system_path(podir);
169169

170-
bindtextdomain("git", podir);
171-
setlocale(LC_MESSAGES, "");
172-
setlocale(LC_TIME, "");
173-
init_gettext_charset("git");
174-
textdomain("git");
170+
if (is_directory(podir)) {
171+
bindtextdomain("git", podir);
172+
setlocale(LC_MESSAGES, "");
173+
setlocale(LC_TIME, "");
174+
init_gettext_charset("git");
175+
textdomain("git");
176+
}
175177

176178
free(p);
177179
}

0 commit comments

Comments
 (0)