[GSoC Patch 0/2] add unicode support to git repo structure
K Jayatheerth <[email protected]>
| Newsgroups | org.kernel.vger.git |
|---|---|
| Message-ID | <[email protected]> |
Currently, `git repo structure` always renders its table output using plain ASCII characters (`|`, `-`, `*`), regardless of the user's locale. This series introduces Unicode box-drawing characters (`│`, `├`, `─`, `┼`, `┤`) and bullet points (`•`) when a UTF-8 locale is detected, providing a cleaner and more visually distinct hierarchical output on modern terminals while gracefully falling back to the existing ASCII formatting otherwise. Summary of changes: - Patch 1 (gettext: fall back to env-derived charset when unset): Fixes an issue where `is_utf8_locale()` would leave `charset` unset (NULL) when `git_setup_gettext()` returns early upon missing the locale directory (such as in uninstalled development builds). Because `is_encoding_utf8(NULL)` defaults to 1, `is_utf8_locale()` would mistakenly report a UTF-8 locale even under non-UTF-8 environments like `LC_ALL=C`. This patch enables the environment-derived fallback (`LC_ALL`, `LC_CTYPE`, `LANG`) whenever `charset` is unset, regardless of `NO_GETTEXT`. - Patch 2 (repo: add Unicode support for `repo structure` output): Updates `builtin/repo.c` (`stats_table_setup_structure()` and `stats_table_print_structure()`) to query `is_utf8_locale()` and emit Unicode box-drawing borders and bullets when running under a UTF-8 locale, falling back to ASCII when not in UTF-8. In `t/t1901-repo-structure.sh`, tests follow the established `t/lib-git-svn.sh` convention for discovering `GIT_TEST_UTF8_LOCALE` to define a `UTF8_LOCALE` test prerequisite, existing tests are pinned to `LC_ALL=C` to reliably test the ASCII fallback path, and new tests are added to verify the UTF-8 output rendering (including when running with a missing locale directory). K Jayatheerth (2): gettext: fall back to env-derived charset when unset repo: add Unicode support for `repo structure` output builtin/repo.c | 110 ++++++++++++++++------------- gettext.c | 32 +++++---- t/t1901-repo-structure.sh | 141 +++++++++++++++++++++++++++++++++++++- 3 files changed, 221 insertions(+), 62 deletions(-) -- 2.55.GIT