Binære filer og konverteringer

Generelt sett behandler Subversion binære filer mer elegant enn CVS. Fordi CVS bruker RCS, kan den bare lagre hele kopier av binære filer som forandres. Subversion, derimot, behandler forskjeller mellom filer ved hjelp av en binærdata-basert algoritme, uansett om de inneholder tekst eller binære data. Dette betyr at alle filer er lagret differensielt (pakket) i depotet.

CVS-brukere må merke binære filer med flagget -kb, for å forhindre data å bli rotet til (på grunn av nøkkelordutvidelser og oversettelse av linjeslutt). Dette glemmer de noen ganger.

Subversion tar den mer paranoide ruten – til å begynne med utfører den ingen form for nøkkelordutvidelser hvis du ikke ber den spesielt om å gjøre det (Se “Keyword Substitution” og “End-of-Line Character Sequences” for flere detaljer). Standard oppførsel for Subversion er å behandle alle fildata som rene strenger av bytes, og filer blir alltid lagret i depotet i en uoversatt tilstand.

For det andre har Subversion et internt begrep om ei fil er “tekst” eller “binære” data, men dette begrepet er bare bevart i arbeidskopien. Under en svn update vil Subversion utføre kontekstbaserte flettinger på tekstfiler som inneholder lokale endringer, men vil ikke forsøke dette for binære filer.

For å avgjøre hvorvidt en kontekstbasert fletting er mulig, leser Subversion svn:mime-type-egenskapen. Hvis fila ikke har noen svn:mime-type-egenskap, eller den har en mime-type som indikerer tekst (for eksempel text/*), går Subversion ut i fra at det er tekst. Ellers går Subversion ut i fra at fila er binær. Subversion hjelper også brukere ved å kjøre en algoritme som sjekker om ei fil er binær for kommandoene svn import og svn add. Disse kommandoene gjetter godt og setter (muligens) en binær svn:mime-type-egenskap på fila som blir lagt til. (Hvis Subversion gjetter feil, kan brukeren alltids fjerne eller redigere egenskapen for hånd.)