git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] remote: align columns on -v

From
Kir Kolyshkin <kolyshkin@gmail.com>
Date
Feb 9, 2023, 01:12 UTC
Message-ID
<20230209011201.1974721-1-kolyshkin@gmail.com>
In-Reply-To
<20230207235238.1850757-1-kolyshkin@gmail.com>

Currently, git remote -v produces a misaligned output when some remote names are shorter and some are longer than a tab step. For example:

giuseppe https://github.com/giuseppe/runc (fetch) giuseppe https://github.com/giuseppe/runc (push) kir git@github.com:kolyshkin/runc.git (fetch) kir git@github.com:kolyshkin/runc.git (push) lifubang https://github.com/lifubang/runc (fetch) lifubang https://github.com/lifubang/runc (push) marquiz https://github.com/marquiz/runc (fetch) marquiz https://github.com/marquiz/runc (push)

Let's find the maximum width of remote and use it for alignment. With this change in place, the output looks like this now:

giuseppe https://github.com/giuseppe/runc (fetch) giuseppe https://github.com/giuseppe/runc (push) kir git@github.com:kolyshkin/runc.git (fetch) kir git@github.com:kolyshkin/runc.git (push) lifubang https://github.com/lifubang/runc (fetch) lifubang https://github.com/lifubang/runc (push) marquiz https://github.com/marquiz/runc (fetch) marquiz https://github.com/marquiz/runc (push)

[v2: use utf8_strwidth and padding, fix description]
Reported-by: Roman Dodin <dodin.roman@gmail.com>
Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
---
 builtin/remote.c | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/builtin/remote.c b/builtin/remote.c
index 729f6f3643..654472a87c 100644
--- a/builtin/remote.c
+++ b/builtin/remote.c
@@ -13,6 +13,7 @@
 #include "strvec.h"
 #include "commit-reach.h"
 #include "progress.h"
+#include "utf8.h"
 
 static const char * const builtin_remote_usage[] = {
 	"git remote [-v | --verbose]",
@@ -1245,14 +1246,26 @@ static int show_all(void)
 	result = for_each_remote(get_one_entry, &list);
 
 	if (!result) {
-		int i;
+		int i, width = 7;
+
+		if (verbose) {
+			for (i = 0; i < list.nr; i++) {
+				int w = utf8_strwidth((list.items + i)->string);
+				if (w > width)
+					width = w;
+			}
+		}
 
 		string_list_sort(&list);
 		for (i = 0; i < list.nr; i++) {
 			struct string_list_item *item = list.items + i;
-			if (verbose)
-				printf("%s\t%s\n", item->string,
+			if (verbose) {
+				int padding = width - utf8_strwidth(item->string);
+				if (padding < 0)
+					padding = 0;
+				printf("%*s%s %s\n", padding, "", item->string,
 					item->util ? (const char *)item->util : "");
+			}
 			else {
 				if (i && !strcmp((item - 1)->string, item->string))
 					continue;
-- 
2.39.0
Previous: Kirill Kolyshkin
Message 7 of 7 in “remote: align columns on -v”
  1. remote: align columns on -vKir Kolyshkin, Feb 7, 2023
  2. Torsten BögershausenFeb 8, 2023
  3. Junio C HamanoFeb 8, 2023
  4. Kirill KolyshkinFeb 9, 2023
  5. Junio C HamanoFeb 8, 2023
  6. Kirill KolyshkinFeb 9, 2023
  7. remote: align columns on -vKir Kolyshkin, Feb 9, 2023

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.