it-roy-ru.com

установка tabwidth 4 в git show / git diff

На работе у нас есть несколько разработчиков, и у нас нет руководства по стилю кода, и некоторые разработчики делают отступ для вкладок, а некоторые - с 4 пробелами (к счастью, никто из отступов с пробелами не использует 4 пробела). В общем случае это не является (большой) проблемой, потому что в наших редакторах мы устанавливаем tabwidth=4 и все отступы кажутся правильными.

Но в git diff или git show вот что появляется:

diff --git a/mesclatabs.php b/mesclatabs.php
new file mode 100644
index 0000000..1986c91
--- /dev/null
+++ b/mesclatabs.php
@@ -0,0 +1,5 @@
+<?php
+function foo() {
+       echo "line with 1 tab\n";
+    echo "line with 4 spaces\n";
+}

Проблема заключается в git diff или git show, где каждая вкладка имеет ширину в 8 пробелов (ну, на самом деле она выглядит как вкладка, а в командной консоли (в моем случае bash) вкладка отображается как 8 пробелов. Я полагаю, что должна быть некоторая конфигурация bash чтобы изменить это, но я хотел бы знать, есть ли у git возможность выводить табуляции как 4 пробела в diff/show, так как некоторые разработчики работают с zsh вместо bash.

Есть идеи?

57
Carlos Campderrós

Я верю git config --global core.pager 'less -x1,5'

Рекомендации:

98
codemonkee

Как ответ https://stackoverflow.com/a/10584237/185034 у меня не сработало из-за моих настроек цвета, я предложил следующее решение:

TAB=$'\t' && git config --global core.pager "sed 's/$TAB/    /g' | less" && unset TAB

Это заменяет все символы табуляции на 4 пробела, а затем отображает их с меньшим. (Обходной путь TAB необходим для обхода отступления обратной косой черты оболочки)

3
adius