Мерзавец может автоматически переключиться между пробелами и вкладками?

Я использую вкладки для добавления отступа в моих программах Python, но я хотел бы сотрудничать (использование мерзавца) с людьми, которые используют пробелы вместо этого.

Существует ли способ для мерзавца автоматически преобразовать между пробелами, и вкладки (скажите, 4 пробелов = 1 вкладка) на продвижении/выборке? (подобный преобразованию CR/LF)

192
задан hazzik 8 March 2012 в 04:20
поделиться

2 ответа

Вот полное решение:

В свой репозиторий добавьте файл .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

Сначала установите coreutils с помощью brew:

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 теперь будут иметь табуляции вместо пробелов.

Редактировать : изменена команда принудительной проверки. Конечно, сначала вы должны совершить свою работу.

190
ответ дан 23 November 2019 в 05:31
поделиться

Да, одним из возможных решений является использование драйвера фильтра атрибутов git (см. Также книгу GitPro ) для определения механизма размытия / очистки.

alt text

Таким образом:

  • каждый раз, когда вы проверяете некоторые файлы вашего репо, пробелы могут быть преобразованы во вкладки,
  • но когда вы регистрируетесь (и отправляете и публикуете), те же самые файлы сохраняются, используя только пробелы.

Вы можете объявить этот драйвер фильтра (названный здесь « 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'

См. Оливье ответ для получения конкретного рабочего примера такого набора инструкций smudge / clean.

134
ответ дан 23 November 2019 в 05:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: