Subversion inneholder mange valg for å modifisere oppførselen under kjøring, og dette kan kontrolleres av brukeren. Mange av disse valgene er av typen som en bruker ønsker å bruke ved alle Subversionoperasjoner. Så, istedenfor å tvinge brukere til å huske kommandolinjeargumenter for å spesifisere disse valgene, og å bruke dem for hver eneste operasjon som utføres, bruker Subversion konfigurasjonsfiler som er lagt for seg selv i et eget konfigurasjonsområde.
Subversions konfigurasjonsområde er et to-lags hierarki med valgnavn og deres verdier. Vanligvis koker dette ned til en spesiell katalog som inneholder konfigurasjonsfiler (første lag) som er rene tekstfiler i standard INI-format (med “seksjoner” som er det andre laget). Disse filene kan enkelt redigeres med favoritt-tekstbehandleren din (som for eksempel Emacs eller vi), og inneholder direktiver som leses av klienten for å anslå hvilken av de valgfrie oppførslene brukeren foretrekker.
Den første gangen kommandolinjeklienten
svn kjøres, lages et eget
konfigurasjonsområde for brukeren.
På Unix-lignende systemer opptrer dette området som en katalog
kalt .subversion i brukerens hjemmekatalog.
På Win32-systemer oppretter Subversion en katalog kalt
Subversion, vanligvis i Application
Data-området til brukerens profilkatalog (som
forresten er en skjult katalog).
På denne plattformen varierer imidlertid den eksakte
plasseringen fra system til system, og bestemmes av
registryen.[42]
Vi vil referere til brukerkonfigurasjonsområdet ved å bruke
navnet som brukes under Unix,
.subversion.
I tillegg til konfigurasjonsområdet som brukes på
brukernivå, kjenner også Subversion til eksistensen av et
konfigurasjonsområde som gjelder for hele systemet på maskinen.
Dette gir systemadministratorer muligheten til å opprette
standardinnstillinger for alle brukerne på en gitt maskin.
Legg merke til at det felles konfigurasjonsområdet på maskinen
ikke alene bestemmer standardoppførselen – oppsettet i konfigurasjonsområdet for
brukeren overstyrer de som er i området som er felles for alle
brukerne, og kommandolinjeargumenter som gis til
svn-programmet har det siste ordet hva
oppførsel angår.
På Unix-lignende plattformer forventes det at
konfigurasjonsområdet som er felles for alle brukerne er i
katalogen /etc/subversion; på MS
Windows-maskiner letes det etter en
Subversion-katalog i det felles Application Data-området
(og igjen, som spesifisert i Windowsregistryen).
Ulikt med det brukerbaserte tilfellet, vil ikke
svn-klienten prøve å opprette et nytt
maskinkonfigurasjonsområde.
Konfigurasjonsområdet for hver bruker inneholder for tiden
tre filer – to konfigurasjonsfiler (config
og servers) og en
README.txt-fil som beskriver INI-formatet.
På tidspunktet de ble laget, inneholder filene standardverdier
for alle valgene som Subversion støtter.
For det meste er de kommentert ut og gruppert sammen med
beskrivelser om hvordan verdiene påvirker oppførselen til
Subversion.
For å forandre en viss oppførsel, trenger du bare å forandre
verdien til et valg med en vanlig teksteditor.
Hvis du en eller annen gang du vil ha tilbake
standardinnstillingene, kan du fjerne (eller skifte navn på)
katalogen med konfigurasjonsfilene og deretter kjøre noen
uskyldige svn-kommandoer som for eksempel
svn --version som oppretter en ny
konfigurasjonskatalog som inneholder
standardinnstillingene.
Brukerkonfigurasjonsområdet inneholder også et lager med
autentiseringsdata.
auth-katalogen inneholder et sett med
underkataloger som inneholder deler av lagret informasjon som
brukes av Subversions forskjellige autentiseringsmetoder.
Denne katalogen er laget på en måte som gjør at kun den ene
brukeren har tillatelse til å lese innholdet.
I tillegg til det vanlige INI-baserte konfigurasjonsområdet, kan Subversionklienter som kjører på MS Windows-plattformer også bruke registryen til å lagre konfigurasjonsdataene. Valgnavnene og deres verdier er de samme som i INI-filene. “fil/seksjon”-hierarkiet blir også tatt vare på, selv om det noteres på en litt annen måte – i dette skjemaet er filer og seksjoner kun nivåer i nøkkeltreet i registryen.
Subversion ser etter konfigurasjonsverdier for hele systemet
under nøkkelen
HKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion.
For eksempel, valget global-ignores som er i
miscellany-seksjonen i
config-fila finnes i
HKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion\Config\Miscellany\global-ignores.
Konfigurasjonsverdier for hver enkelt bruker bør lagres under
HKEY_CURRENT_USER\Software\Tigris.org\Subversion.
Registry-based configuration options are parsed before their file-based counterparts, so are overridden by values found in the configuration files. Med andre ord er dette rekkefølgen konfigurasjonen blir prioritert på et MS Windows-system:
Valg på kommandolinja
Brukerbaserte INI-filer
Brukerbaserte verdier i registryen
INI-filer som gjelder for hele systemet
Registry-verdier for hele systemet
I tillegg støtter ikke Windows-registryen at noe kan
“kommenteres ut”.
Subversion vil imidlertid ignorere valg der navnet begynner med
et hash-tegn
(#),
Dette lar deg kommentere bort et Subversionvalg uten å slette
hele nøkkelen fra registryen, noe som selvfølgelig gjør det
lettere å hente tilbake dette valget.
Kommandolinjeklienten svn vil aldri prøve
å skrive til Windowsregistryen, og vil ikke prøve å lage et område der.
Du kan lage nøklene du trenger ved å bruke
REGEDIT-programmet.
Alternativt kan du lage en .reg-fil og
deretter dobbeltklikke på denne fila i Utforskeren, noe som vil
flette dataene inn i registryen.
Eksempel 7.1. Eksempel på registryposter i ei
.reg-fil.
REGEDIT4 [HKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion\Servers\groups] [HKEY_LOCAL_MACHINE\Software\Tigris.org\Subversion\Servers\global] "#http-proxy-host"="" "#http-proxy-port"="" "#http-proxy-username"="" "#http-proxy-password"="" "#http-proxy-exceptions"="" "#http-timeout"="0" "#http-compression"="yes" "#neon-debug-mask"="" "#ssl-authority-files"="" "#ssl-trust-default-ca"="" "#ssl-client-cert-file"="" "#ssl-client-cert-password"="" [HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\auth] "#store-passwords"="yes" "#store-auth-creds"="yes" [HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\helpers] "#editor-cmd"="notepad" "#diff-cmd"="" "#diff3-cmd"="" "#diff3-has-program-arg"="" [HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\tunnels] [HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\miscellany] "#global-ignores"="*.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store" "#log-encoding"="" "#use-commit-times"="" "#no-unlock"="" "#enable-auto-props"="" [HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\auto-props]
Det foregående eksemplet viser innholdet av ei
.reg-fil som inneholder noen av de mest
brukte konfigurasjonsvalgene og deres standardverdier.
Legg merke til tilstedeværelsen av både valg som gjelder for hele systemet
(for valg relatert til mellomservere i nettverket og
innstillinger for hver enkelt bruker (tekstbehandlingsprogrammer
og lagring av passord, blant annet).
Legg også merke til at alle valgene er kommentert ut.
Du trenger bare å fjerne hash-tegnet (#) fra
begynnelsen av valgnavnene og sette inn de verdiene du
vil.
### TODO: Rework and move this section to the Reference ###
I denne seksjonen vil vi diskutere de spesifikke konfigurasjonsvalgene som brukes av Subversion under kjøring.
servers-fila inneholder valg for
konfigurering av Subversion og som er relatert til
nettverkslag.
Det er to spesielle seksjonsnavn i denne fila –
groups og global.
groups-seksjonen er hovedsaklig en tabell
med kryssreferanser.
Nøklene i denne seksjonen er navnene til andre seksjoner i
fila; verdiene deres er globs
– tekstbaserte nøkkelord som kan inneholde
jokertegn — som blir sammenlignet med servernavnene til maskinen som det sendes
Subversionforespørsler til.
[groups] beanie-babies = *.red-bean.com collabnet = svn.collab.net [beanie-babies] … [collabnet] …
Når Subversion brukes over nettverket, forsøker den å
matche navnet til serveren som den prøver å nå med et
gruppenavn under groups-seksjonen.
Hvis dette stemmer, ser Subversion etter en seksjon i
servers-fila som stemmer med navnet i den
samsvarende gruppens navn.
Fra denne seksjonen leser den det faktiske
nettverksoppsettet.
global-seksjonen inneholder
innstillingene som er ment for alle serverne som ikke
samsvarer med en av søkestrengene i
groups-seksjonen.
Valgene som er tilgjengelig i denne seksjonen er nøyaktig de
samme som de som er gyldig for de andre serverseksjonene i
fila (selvfølgelig unntatt den spesielle
groups-seksjonen), og er som følger:
http-proxy-hostDette spesifiserer servernavnet til mellomserveren som de HTTP-baserte Subversionforespørslene som du foretar må gå gjennom. Standardverdien er en tom verdi, noe som betyr at Subversion ikke vil prøve å rute HTTP-forespørsler gjennom en mellomserver og vil istedenfor prøve å kontakte målmaskinen direkte.
http-proxy-portDette spesifiserer hvilket portnummer som skal brukes på mellomserveren. Standardverdien er en tom verdi.
http-proxy-usernameSpesifiserer brukernavnet som oppgis til mellomserveren. Standardverdien er tom.
http-proxy-passwordSpesifiserer passordet som oppgis til mellomserveren. Standardverdien er tom.
http-timeoutDette spesifiserer antall sekunder det ventes på
respons fra serveren.
Hvis du opplever problemer med en sen
nettvorksforbindelse som fører til at
Subversionoperasjoner blir avbrutt, bør du øke verdien
for dette valget.
Standardverdien er 0, som ber det
underliggende HTTP-biblioteket, Neon, til å bruke
standardverdien for tidsavbrudd.
http-compressionDette spesifiserer om Subversion skal prøve å
komprimere nettverksforespørsler som blir gjort til
servere som er klargjort for DAV.
Srandardverdien er yes (selv om
komprimering bare vil utføres hvis denne muligheten er
kompilert inn i nettverkslaget).
Sett denne til no for å unngå
komprimering, for eksempel når nettverkstrafikken skal
analyseres under debugging.
neon-debug-maskDette er en heltallsmaske som det underliggende
HTTP-biblioteket, Neon, bruker for å velge hvilke
debuggingsmeldinger som skal vises.
Standardverdien er 0, som vil
forhindre visning av alle debuggingsdata.
For mer informasjon om hvordan Subversion gjør bruk av
Neon, se Kapittel 8, Developer Information.
ssl-authority-filesDette er en semikolon-separert liste over stier til filer som inneholder sertifikater fra sertifikatutstedere som aksepteres av Subversionklienten under aksessering av depotet over HTTPS.
ssl-trust-default-caSett denne variabelen til yes
hvis du vil at Subversion skal automatisk stole på
settet med standard sertifikatutstedere som leveres med
OpenSSL.
ssl-client-cert-fileHvis en server (eller et sett av servere) krever et SSL-klientsertifikat, vil du normalt bli spurt etter en sti til sertifikatet ditt. Ved å sette denne variabelen til den samme stien, vil Subversion være i stand til å finne klientsertifikatet automatisk uten å spørre. Det finnes ingen standard plass der sertifikatene blir lagret på disken; Subversion vil hente det fra enhver sti som du spesifiserer.
ssl-client-cert-passwordHvis fila med SSL-klientsertifikatet er kryptert med
et passord, vil Subversion be deg om passordet hver gang
sertifikatet brukes.
Hvis du synes dette er irriterende (og synes det er
greit at passordet lagres i
servers-fila), kan du sette denne
variabelen til passordet for for sertifikatet.
Etter dette blir du ikke bedt om å skrive det flere
ganger.
config-fila inneholder resten av de
kjørevalgene som for øyeblikket er tilgjengelig i Subversion
og ikke er relatert til nettverk.
Det er bare noen få valg som er i bruk nå, men de er gruppert
i seksjoner med tanke på framtidige utvidelser.
auth-seksjonen inneholder innstillinger
relatert til Subversions autentisering og autorisasjon i
depotet.
Den inneholder:
store-passwordsDette ber Subversion om å lagre, eller ikke lagre,
passord som blir skrevet av brukeren som respons til
autentiseringskrav fra servere.
Standardverdien er yes.
Sett dette til no for å forhindre
lagring av passord på disken.
Du kan overstyre dette valget for en enkeltstående
svn-kjøring ved å bruke
kommanolinjevalget --no-auth-cache
sammen med de delkommandoene som støtter det.
For mer informasjon, se “Lagring av klientlegitimasjon”.
store-auth-credsDenne valget er det samme som
store-passwords, unntatt at det slår
av/på disklagring av all
autentiseringsinformasjon:
Brukernavn, passord, serversertifikater og alle andre
typer lagringsbar legitimasjon.
helpers-seksjonen kontrollerer hvilke
eksterne programmer Subversion bruker for å utføre oppgavene
sine.
Gyldige valig i denne seksjonen er:
editor-cmdDette spesifiserer hvilket program Subversion vil
kjøre når brukeren skal skrive inn en loggmelding under
en innleggingsoperasjon, som for eksempel ved bruk av
svn commit uten valgene
--message (-m) og
--file (-F).
Dette programmet brukes også sammen med kommandoen
svn propedit – en midlertidig fil
blir fylt med den nåværende verdien til egenskapen
brukeren vil redigere, og redigeringen skjer i
tekstbehandleren (se “Egenskaper”).
Standardverdien til dette valget er tom.
Prioriteringsrekkefølgen som brukes for å avgjøre
hvilken kommando for tekstbehandleren som skal brukes,
er:
Kommandolinjevalget
--editor-cmd
Miljøvariabelen
SVN_EDITOR
Konfigurasjonsvalget
editor-cmd
Miljøvariabelen VISUAL
Miljøvariabelen EDITOR
Muligens en standardverdi som er bygget inn i Subversion (ikke lagt inn i de offisielle versjonene)
Verdien til alle disse valgene eller variablene er
(i motsetning til diff-cmd)
begynnelsen av en kommandolinje som kjøres av skallet.
Subversion legger til et mellomrom og stien til den
midlertidige fila som skal redigeres.
Denne midlertidige fila redigeres med tekstbehandleren
som returnerer en avslutningskode med verdien 0 for å
indikere at operasjonen var vellykket.
diff-cmdDette spesifiserer den absolutte stien til et diff-program (viser forskjeller mellom filer) som blir brukt når Subversion lager “diff”-data (som når svn diff-kommandoen brukes). Vanligvis bruker Subversion et internt diff-bibliotek, men ved å sette dette valget brukes et eksternt program. Se “Using External Differencing Tools” for flere detaljer om bruk av sånne programmer.
diff3-cmdHer spesifiseres den absolutte stien til et treveis diff-program. Subversion bruker dette programmet til å flette forandringer gjort av brukeren sammen med de som mottas fra depotet. Vanligvis bruker Subversion et internt diff-bibliotek, men ved å sette dette valget brukes et eksternt program. Se “Using External Differencing Tools” for flere detaljer om bruk av sånne programmer.
diff3-has-program-argDette flagget bør settes til true
hvis programmet spesifisert i
diff3-cmd-valget aksepterer et
--diff-program-parameter på
kommandolinja.
tunnels-seksjonen lar deg definere nye
tunnelskjemaer for bruk sammen med svnserve
og klienttilkoblinger med svn://.
For flere detaljer, se “Autentisering og autorisasjon via SSH”.
miscellany-seksjonen er der alt som
ikke hører hjemme andre steder ender opp.
I denne seksjonen finner du:
global-ignoresVed kjøring av svn
status-kommandoen lister Subversion
uversjonerte filer og kataloger sammen med de
versjonerte og merker dem med et
?-tegn (se “svn status”).
Noen ganger kan det være plagsomt å se uinteressante,
uversjonerte elementer – for eksempel objektfiler som
ligger igjen etter at et program er kompilert – i denne
visningen.
Valget global-ignores er en liste med
blanktegn-separerte strenger som
beskriver navn på filer og kataloger som Subversion ikke
skal vise unntatt hvis de er versjonert.
Standardverdien er *.o *.lo *.la #*# .*.rej
*.rej .*~ *~ .#* .DS_Store.
I likhet med svn status ignorerer
svn add- og svn
import-kommandoen filer som samsvarer med
listen når de tråler en katalog.
Du kan overstyre denne oppførselen for en enkelt kjøring
av alle disse kommandoene ved å spesifisere filnavnet
eller ved å bruke kommandolinjevalget
--no-ignore.
For informasjon om mer finkontroll av ignorerte elementer, se “Ignoring Unversioned Items”.
enable-auto-propsDette ber Subversion om å automatisk sette
egenskaper på nye filer som legges til eller importeres.
Standardverdien er no, så sett denne
til yes for å slå på autoegenskaper.
Seksjonen auto-props i denne fila
spesifiserer hvilke egenskaper som skal settes på hvilke
filer.
log-encodingDenne variabelen setter standardtegnsettet for
loggmeldinger ved innlegging.
Det er en permanent form av
--encoding-valget (se “svn Switches”).
Subversiondepotet lagrer loggmeldinger i UTF-8, og går
ut i fra at loggmeldingene dine er skrevet med
operativsystemets lokale tegnsett.
Du bør spesifisere en annen koding hvis loggmeldingene
dine skrives med et annet tegnsett.
use-commit-timesNormalt har filene i arbeidskopien din fildatoer som viser forrige gang de ble rørt av en prosess, enten det er tekstbehandleren din eller av en eller annen delkommando i svn. Det er vanligvis praktisk for folk som utvikler programvare, fordi byggesystemer ofte ser på fildatoer som en måte å bestemme hvilke filer som trenger en ny kompilering.
I andre situasjoner, derimot, er det greit å la
filene i arbeidskopien ha fildatoen satt til tidspunktet
de sist ble forandret i depotet.
Kommandoen svn export setter alltid
disse “tidspunktene for siste innlegging”
på trær som den produserer.
Ved å sette denne konfigurasjonsvariabelen til
yes, vil kommandoene svn
checkout, svn update,
svn switch og svn
revert også sette fildatoen på filer som
berøres til forrige gangen de ble lagt inn i
depotet.
Seksjonen auto-props kontrollerer
Subversionklientens mulighet til å automatisk sette egenskaper
på filer når de legges til eller importeres.
Den inneholder et vilkårlig antall nøkkel/verdi-par på
formatet MØNSTER =
EGENSKAPSNAVN=EGENSKAPSVERDI der
MØNSTER er en filnavnsøkestreng som passer
med et sett av filnavn og resten av linja er egenskapen og
dens verdi.
Flere samsvar på en fil vil resultere i flere
egenskapsforandringer for denne fila; imidlertid er det ingen
garanti at autoegenskaper vil bli lagt til i den rekkefølgen
som de listes i konfigurasjonsfila.
Du kan derfor ikke la en regel “overstyre” en
annen.
Du kan finne flere eksempler på bruk av autoegenskaper i
config-fila.
Til sist, ikke glem å sette
enable-auto-props til
yes i
miscellany-seksjonen hvis du vil at
autoegenskaper skal brukes.
[42] Miljøvariabelen APPDATA peker til
Application Data-området,
så du kan alltids henvise til denne katalogen som
%APPDATA%\Subversion.