I det siste har jeg jobbet med en artikkel jeg har skrevet sammen med han jeg deler kontor med og veilederen vår. Når man jobber på et felles prosjekt på denne måten, finnes det et par verktøy som kan hjelpe deg å forbli sinnsfrisk. Om man ser bort fra de mer esoteriske tingene, som for eksempel
collaborative real-time editors, vil jeg si at de to viktigste tingene er et godt versjonskontrollsystem, og en eller flere varianter av diff.
Versjonskontroll tenkte jeg egentlig å skrive en mer solid artikkel om senere, men meget kort forklart er dette et system som lar deg loggføre endringer du gjør. Det kan være nyttig om man jobber alene på et prosjekt, da det gir deg muligheten til å enkelt gå tilbake til tidligere versjoner, og det er absolutt essensielt om man jobber flere sammen, da det er et system for å slå sammen endringer hvis to personer har redigert den samme filen samtidig. Personlig foretrekker jeg
Mercurial, men
git skal visst også være bra. Det vil si, git er det som brukes til å holde styr på linux-kjernen, som har flere millioner kodelinjer og flere tusen utviklere, så det er åpenbart bra, men jeg tror kanskje det er litt vel hardcore.
Når versjonskontroll er i boks er det lett å se når de andre på prosjektet har gjort endringer, og hvilke kommentarer de har skrevet til endringene sine, men det kan fortsatt være essensielt å se nøyaktig hva som er endret i en fil. Og her kommer diff inn i bildet. Det er kanskje litt rart å snakke om diff som et eget verktøy, da de fleste (eller alle?) versjonskontrollsystemer kommer med denne funksjonaliteten innebygd, men prinsippet er det samme som for klassisk kommandolinjediff. Det dreier seg rett og slett om et program som forteller deg hva som er forskjellen på to filer. For eksempel, sett at jeg har disse to filene:
First we take
Manhattan, sa han. Then
we take Berlin. Det hørtes jo
fint ut. Først tar vi
Kampetrikken. Så
tar vi Jarlen Kino. Så tar
vi Vestkantbadet. Og Folketrygden
First we take
Manhattan, sa han. Then
we take Hamburg. Det hørtes jo
fint ut. Først tar vi
Kampetrikken. Så
tar vi Jarlen Kino. Så tar
vi Vestkantbadet. Og Folketrygden
Fra Byen ved hoggjernets fot, av Jan Erik Vold, løftet herfra.Hvis man kjører diff på disse to filene (last ned
her for å prøve selv) vil resultatet se slik ut:
3c3
< we take Berlin. Det hørtes jo
---
> we take Hamburg. Det hørtes jo
Det dette forteller deg er essensielt at for å endre den første filen slik at den blir lik den andre filen, må du endre linje 3 som indikert. Med andre ord, den eneste forskjellen på disse to filene finnes i linje 3. En eller annen variant av diff er et meget nyttig verktøy når man laster ned en ny versjon av en fil, for eksempel en artikkel på mange sider, og lurer på nøyaktig hva som er endret.
Av og til kan det imidlertid være litt upraktisk å bruke diff. I eksempelet over var det greit, siden hver linje er nokså kort. Linje 3 blir dermed en praktisk ting å forholde seg til. I en vanlig artikkel vil derimot hvert avsnitt som regel utgjøre en egen linje i kildekoden. (En linje i den virkelige verden er en ting som er adskilt fra andre linjer med linjeskift. At noe tilfeldigvis vises fordelt over flere linjer betyr ikke nødvendigvis at det
er flere linjer.) Når to linjer består av kanskje hundre ord hver kan det være litt vanskelig å se med en gang hva forskjellen består i, spesielt hvis det er små endringer.
Heldigvis har en eller annen smarting løst dette problemet, ved å lage programmet latexdiff. Latexdiff finner diffen mellom to latex-filer, og spytter ut en ny latex-fil, som frekt indikerer med både fine farger og gjennomstreking hva som er lagt til og hva som er fjernet. Her er et eksempel fra artikkelen jeg har jobbet med i det siste:
Alt dette er skrevet på én linje i kildekoden, så med vanlig diff ville man bare fått vite at noe i denne linjen er endret. Latexdiff, derimot, forteller deg med nesten magisk eleganse hva forskjellen består i.
Fantastisk, eller hur?
-Tor Nordam
Comments