2012-05-14 2 views
51

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

Но в 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 мест (ну, на самом деле выглядит как вкладки и оболочки (баш в моем случае) показывает вкладку как 8 пробелов. Я полагаю, что для изменения этого параметра должна быть какая-то конфигурация bash, но я хотел бы знать, есть ли у git возможность выводить вкладки как 4 пробелов в diff/show, как некоторые разработчики работа с zsh вместо bash.

Любые идеи?

+3

В идеальном мире разработчики будут использовать пробелы, и у вас не будет таких глупых проблем. – sashang

+3

Я полностью не согласен. Почему вы представляете что-то с 4 символами, если вы можете представить его с помощью 8? –

ответ

82

Я считаю git config --global core.pager 'less -x1,5'

Ссылка: git-scm chp7-1

+2

Аргумент less должен быть '-x5', потому что символы +/- унифицированного diff не влияют на местоположение табу-стопа, но они * делают * нажимают все пробелы на один символ справа. Вкладка-стоп 5 выравнивает все правильно. –

+0

Да, это работает, установив '-x5', как сказал CodeGnome. Большое спасибо –

+0

urgh, он работал только на первом уровне отступа, на втором, третьем, ... он не выравнивается из-за начального + в diff. Я уйду на '-x4', так как установка его выше смещает его на один символ больше для каждого уровня отступов (а также не добавленных/удаленных строк более согласован). –

2

В ответ https://stackoverflow.com/a/10584237/1850340 не работает для меня, потому что мои настройки цвета я придумал следующее решение:

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

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