Palvelinpään komentojonot

Toimintokomento (engl. hook script) on ohjelma, joka käynnistyy jonkin arkistotapahtuman (esim. uuden version luonti tai versioimattoman ominaisuuden muokkaus) takia. Toimintokomento saa parametreinaan tiedot arkistotapahtumasta, sen kohteesta sekä tekijästä. Toimintokomennon tuloksista tai paluuarvosta riippuen komento voi jatkaa tapahtumaa, keskeyttää sen tai viivästyttää sitä jollain tavoin. Lue Subversion-kirjan kappaleesta Hook Scripts yksityiskohtaisempaa tietoa tuetuista toimintokomentotyypeistä.

Toimintokomennot suorittaa palvelin, jolla arkisto sijaitsee. TortoiseSVN sallii myös asiakaspään toimentokomentojen määrittelyn. Ne suoritetaan paikallisesti joidenkin tapahtumien yhteydessä. Katso lisätietoja luvusta ”Asiakaspään komentojonot”.

Esimerkkejä toimintokomennoista löytyy arkiston hooks -hakemistosta. Nämä esimerkit on tarkoitettu Unix/Linux -palvelimille, ja niitä on muutettava, mikäli palvelimesi on Windows-pohjainen. Toimintokomento voi olla komentojono tai ohjelma. Seuraava esimerkki näyttää komentojonon, jota voitaisiin käyttää toteuttamaan pre-revprop-change -toimintokomento.

rem Only allow log messages to be changed.
if "%4" == "svn:log" exit 0
echo Property '%4' cannot be changed >&2
exit 1

Huomaa, että kaikki komennon stdout-kahvaan tehty tulostus katoaa. Mikäli haluat virheilmoituksen ilmestyvän Toimitus peruttu -ikkunaan, se on kirjoitettava stderr-kahvaan. Komentojonossa tämän voi tehdä lausekkeella >&2.

Komentojonojen ohittaminen

Mikäli komentojono estää toimituksen arkistoon, ei paljoa ole tehtävissä. Voit kuitenkin rakentaa komentojonoon ohitusmekanismin käyttämällä taikasanatekniikkaa: jos komentojono päättää perua toiminnon, se etsii ensin lokiviestistä erityistä tekstiä (esim. jokin tietty sana tai tiedostonimi etuliitteen kera). Mikäli taikasana löytyy, toimituksen annetaan jatkua. Jos taikasanaa ei löydy, toimitus estetään ja annetaan virheilmoitus (esim. Et sanonut taikasanaa. :-)