Uwielbiam Subversion. Proste do ustawienia, szybkie, dużo fajowych narzędzi dla rozmaitych systemów operacyjnych. Niestety, nawet dobre narzędzie potrafi być zgwałcone przez nieodpowiednie używanie. Mogłem ignorować ludzi dodających binarne pliki (jeden z moich branchów ma binarkę Quake 3, nie pytajcie) ale to, co otrzymałem ostatnio jako poprawkę załamało mnie.

Niektóre edytory mają ciekawe podejście do białych znaków. Dodają entery, zamieniają tabulacje na spacje, zamieniają ostatni znak tabulacji na tabulator plus dwie spacje. Cuda, po prostu, cuda. Wystarczy, że ktoś doda (hm, ciekawe jak tę notkę wypozycjonuje słowo ‘doda‘ ;-) taką zamianę i cała procedura budowania patcha idzie do piachu. Diff z pakietu Subversion nie potrafi ignorować zmian białych znaków. To powoduje, że w wyniku porównania zaznaczone są absolutnie wszystkie linie. Każda, w której zmienił się enter i spacja. Kłopotliwe.

Mógłbym wymusić standaryzacje edytorów, ale moje pokłady charyzmy nie starczą by przekonać ludzi, że Vim jest ich edytorem.

Popatrzyłem w pomoc SVN-a:

--diff-cmd arg           : use ARG as diff command
-x [--extensions] arg    : Default: '-u'. When Subversion is invoking an
external diff program, ARG is simply passed along
to the program. But when Subversion is using its
default internal diff implementation, or when
Subversion is displaying blame annotations, ARG
could be any of the following:

Wspaniale. Przetestowałem to na swoim projekcie i uzyskałem wreszcie poprawne wyniki, dzięki którym mogłem przeanalizować zmiany naniesione przez panią programolog z pokoju obok.

Teraz wystarczy dodać tylko odpowiedni alias do pliku z konfiguracją powłoki i cieszyć się poprawnie sformatowanym diffem.

alias svndiff='svn diff --diff-cmd diff -x -wb '

Tags µGeek

Podobało się? dodaj kanał RSS do swojego czytnika.

7 Responses to “Diff z pakietu Subversion i białe znaki”

  1. yanoo Says:

    doda, doda, zrób mi loda

    teraz to już masz pierwszą stronę gugla gwarantowaną ;)

    a ten Quake 3… ciekawe :D

  2. Emil Oppeln-Bronikowski Says:

    @Yanoo: Strona ISP miała dział download. Ktoś zrobił svn add * i jakoś tak.

  3. piotr potera Says:

    ISP…

  4. zen Says:

    Ja trzymam tgzety ze zrodlami (m.in. php) w svn. wygodniej przy budowaniu pakietow.

  5. CoSTa Says:

    A ja w SVN trzymam dokumenty wszelkiego rodzaju. Świetnie sprawdza się drań do backupów :).

  6. Emil Oppeln-Bronikowski Says:

    @CoSTa wręcz genialnie. Też wszystkie firmowe trzymam. No i jak zapomnę czegoś, zawsze można czekałtnąć. :-)

  7. r. Says:

    Proszę się nie nabijać z lokalnych AjEsPi :P

Leave a Reply