pythonプログラムでインデントにタブを使用しますが、代わりにスペースを使用する人々と(gitを使用して)コラボレーションしたいと思います。
Gitがプッシュ/フェッチ時にスペースとタブ(たとえば、4スペース= 1タブ)を自動的に変換する方法はありますか? (CR/LF変換に類似)
完全なソリューションは次のとおりです。
リポジトリにファイルを追加します.git/info/attributes
を含む:
*.py filter=tabspace
Linux/Unix
次のコマンドを実行します。
git config --global filter.tabspace.smudge 'unexpand --tabs=4 --first-only'
git config --global filter.tabspace.clean 'expand --tabs=4 --initial'
OS X
まず、brewでcoreutilsをインストールします。
brew install coreutils
次のコマンドを実行します。
git config --global filter.tabspace.smudge 'gunexpand --tabs=4 --first-only'
git config --global filter.tabspace.clean 'gexpand --tabs=4 --initial'
すべてのシステム
これで、プロジェクトのすべてのファイルをチェックアウトできます。あなたはそれをすることができます:
git checkout HEAD -- **
すべてのpythonファイルには、スペースではなくタブが追加されます。
編集:強制チェックアウトコマンドを変更しました。もちろん、最初に作業をコミットする必要があります。
はい、可能性のある解決策の1つは、 git属性フィルタードライバー ( GitPro book も参照)を使用して、汚れ/クリーンメカニズムを定義することです。
その方法:
このフィルタードライバー(ここでは 'tabspace
'という名前)を.git/info/attributes
(Gitリポジトリ内のすべてのファイルに適用されるフィルター用)で、次の内容で宣言できます。
*.py filter=tabspace
次のコマンドを実行します。
# local config for the current repo
git config filter.tabspace.smudge 'script_to_make_tabs'
git config filter.tabspace.clean 'script_to_make_spaces'
このような汚れ/クリーンな命令セットの具体的な動作例については、 Olivier の answer を参照してください。
~/.gitconfig
[filter "tabspace"]
smudge = unexpand --tabs=4 --first-only
clean = expand --tabs=4 --initial
[filter "tabspace2"]
smudge = unexpand --tabs=2 --first-only
clean = expand --tabs=2 --initial
次に、2つのファイルがあります:attributes
*.js filter=tabspace
*.html filter=tabspace
*.css filter=tabspace
*.json filter=tabspace
およびattributes2
*.js filter=tabspace2
*.html filter=tabspace2
*.css filter=tabspace2
*.json filter=tabspace2
mkdir project
cd project
git init
cp ~/path/to/attributes .git/info/
そうすれば、最終的にgithubで作業をプッシュしたときに、すべてのブラウザーのデフォルトの動作である8 space tabs
を使用してコードビューで愚かに見えることはありません。
mkdir project
cd project
git init
cp ~/path/to/attributes2 .git/info/attributes
git remote add Origin [email protected]:some/repo.git
git pull Origin branch
そうすれば、2 space indented
プロジェクトの通常のタブで作業できます。
もちろん、4 space to 2 space
から変換するための同様のソリューションを書くことができます。これは、私が公開したプロジェクトに貢献したい場合で、開発中に2つのスペースを使用する傾向があります。
Windowsを使用している場合は、 @ Olivier Verdier's ソリューションを機能させるための追加手順がいくつかあります。