Konfigurasjonsområdet for bruk under kjøring

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.

Oppbygningen av konfigurasjonsområdet

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.

Konfigurasjon og Windows-registryen

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:

  1. Valg på kommandolinja

  2. Brukerbaserte INI-filer

  3. Brukerbaserte verdier i registryen

  4. INI-filer som gjelder for hele systemet

  5. 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.

Konfigurasjonsvalg

### 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.

Servere

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-host

Dette 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-port

Dette spesifiserer hvilket portnummer som skal brukes på mellomserveren. Standardverdien er en tom verdi.

http-proxy-username

Spesifiserer brukernavnet som oppgis til mellomserveren. Standardverdien er tom.

http-proxy-password

Spesifiserer passordet som oppgis til mellomserveren. Standardverdien er tom.

http-timeout

Dette 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-compression

Dette 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-mask

Dette 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-files

Dette 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-ca

Sett denne variabelen til yes hvis du vil at Subversion skal automatisk stole på settet med standard sertifikatutstedere som leveres med OpenSSL.

ssl-client-cert-file

Hvis 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-password

Hvis 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.

Konfigurasjon

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-passwords

Dette 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-creds

Denne 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-cmd

Dette 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:

  1. Kommandolinjevalget --editor-cmd

  2. Miljøvariabelen SVN_EDITOR

  3. Konfigurasjonsvalget editor-cmd

  4. Miljøvariabelen VISUAL

  5. Miljøvariabelen EDITOR

  6. 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-cmd

Dette 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-cmd

Her 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-arg

Dette 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-ignores

Ved 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-props

Dette 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-encoding

Denne 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-times

Normalt 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.