Filtr git smudge/clean

Przegląd

Filtr git smudge/clean automatycznie formatuje pliki przy commicie (clean) i opcjonalnie przywraca oryginalne zawijanie przy checkout (smudge). Dzięki temu semantyczne podziały wierszy są przezroczyste dla współpracowników, którzy nie używają snappera.

Konfiguracja

Skonfiguruj filtr w lokalnej konfiguracji git:

git config filter.snapper.clean "snapper --format org"
git config filter.snapper.smudge cat

Filtr smudge używa cat (przepuszczanie), co oznacza, że pobrane pliki zachowują semantyczne podziały wierszy. Jeśli chcesz przywrócić tradycyjne zawijanie przy checkout, zastąp cat poleceniem zawijającym.

Aktywacja przez .gitattributes

Dodaj do pliku .gitattributes w swoim repozytorium:

*.org filter=snapper
*.tex filter=snapper
*.md  filter=snapper

Zacommituj .gitattributes, aby udostępnić go współpracownikom. Filtr aktywuje się tylko u osób, które skonfigurowały go lokalnie.

Filtry według formatu

Jeśli potrzebujesz różnych ustawień dla poszczególnych formatów:

git config filter.snapper-org.clean "snapper --format org"
git config filter.snapper-org.smudge cat

git config filter.snapper-tex.clean "snapper --format latex"
git config filter.snapper-tex.smudge cat
*.org filter=snapper-org
*.tex filter=snapper-tex

Weryfikacja działania filtra

Po skonfigurowaniu dodaj plik do indeksu i sprawdź diff:

git diff --cached paper.org

Wersja w indeksie powinna pokazywać formatowanie jedno-zdanie-na-linię, nawet jeśli kopia robocza używa tradycyjnego zawijania.