Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

setting tabwidth to 4 in git show / git diff

At work we are several developers and don't have a code style guide, and some developers indent with tabs, and some others with 4 spaces (luckily noone of the indent with spaces people uses different than 4 spaces). In general this is no (big) problem because in our editors we set tabwidth=4 and all the indentation seems correct.

But in git diff or git show that's what appears:

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"; +} 

The problem is git diff or git show where each tabs appears as wide as 8 spaces (well, in reality appears as a tab, and the shell (bash in my case) is showing the tab as 8 spaces. I suppose there must be some bash config to change this, but I'd like to know if git has an option to output tabs as 4 spaces in diff / show, as some developers work with zsh instead of bash.

Any ideas?

like image 567
Carlos Campderrós Avatar asked May 14 '12 09:05

Carlos Campderrós


People also ask

What does M in git diff mean?

^M represents carriage return. This diff means something removed a Unicode BOM from the beginning of the line and added a CR at the end.

How do I change the indent size in github?

In the left sidebar, click Appearance. Under "Tab size preference", select the drop-down menu and choose your preference.


2 Answers

I believe git config --global core.pager 'less -x1,5'

References:

  • Original: (No longer valid) git-scm chp7-1
  • Newer:
    • git-config#git-config-corepager
    • Customizing Git
like image 199
codemonkee Avatar answered Oct 14 '22 08:10

codemonkee


As the answer https://stackoverflow.com/a/10584237/1850340 did not work for me because of my color settings I came up with following solution:

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

This replaces all tab characters with 4 spaces before displaying it with less. (The TAB workaround is needed to circumvent the shells backslash escape)

like image 33
adius Avatar answered Oct 14 '22 10:10

adius