Jos et muista muita Subversion-komentoja, muista svn help.
Projektin Subversion-kanta on osoitteessa:
Jotta voit käyttää Subversionia, pitää laitoksen polkuun lisätä Subversionin hakemisto. Lisää seuraava rivi kotihakemistossasi olevaan .bashrc-tiedostoon:
Varmista vielä, että .profile-nimisessä tiedostossa on seuraavanlainen rivi, eikä sitä ole kommentoitu (eli ei risuaitaa rivin alussa):
Kun haluat aloittaa projektin parissa työskentelyn uudella koneella, saat työkopion koneellesi seuraavalla komennolla:
Jossa osoite on siis yllä mainittu Subversion-kannan osoite. Checkout tarvitsee tehdä siis vain kerran per kone! Tämän jälkeen työkopio muistaa itse, mistä Subversion-kannasta se on (.svn-nimiset hakemistot sisältävät Subversioniin liittyvää tietoa, ja kaikki tämännimisen hakemiston sisältävät hakemistot tulkitaan Subversion-kannan työkopioiksi).
Tärkein mantra Subversionin kanssa työskennellessä on update - työtä - commit. Eli aina kun aloitat työskentelyn projektin parissa, päivitä työkopiosi kannasta kirjoittamalla seuraava komento työkopion juuressa:
Sovittiin, että kannassa pyritään aina pitämään toimivat versiot kaikesta, joten kun olet lopettelemassa työskentelyä ja sinulla on mielestäsi toimiva versio kasassa, voit lähettää muutoksesi kantaan kirjoittamalla (taas työkopion juuressa):
Kaikki muutokset työkopion tiedostoihin tulisi tehdä Subversionin komennoilla eikä Unixin komennoilla. Esim. sen sijaan että kirjoittaisit cp tiedosto1 tiedosto2, kirjoita svn cp tiedosto1 tiedosto2. Seuraavia komentoja tulisi siis käyttää Subversionin kautta:
Lisäksi tiedostot tulisi lisätä Subversioniin komennolla svn add, jotta ne menevät kantaan. Eli ensin tiedostot oikeaan paikkaan työkopiossa, sitten lisätään ne.
Näiden komentojen kanssa tulisi huomioida, että Subversion ei suostu siirtämään tiedostoja joissa on paikallisia muutoksia (eli työkopiossa on muutoksia joita ei ole lähetetty kantaan). Tämä johtuu siitä, että komento svn mv vain poistaa vanhan tiedoston kannasta ja lisää uuden sinne, joten muutokset menisivät hukkaan. Eli ensin commit, sitten siirto.
Kaikki komennot suoritetaan oletuksena nykyiseen hakemistoon, ja useimmat komennot ottavat viimeisenä parametrinaan tiedoston tai hakemiston. Jos parametri on hakemisto, komento suoritetaan kaikille sen hakemiston tiedostoille ja alihakemistoille rekursiivisesti (poikkeuksena revert, kts. kuvaus). Useimmat komennot ottavat myös revision-parametrin, jolla voit määritellä minkä version tietoja haluat katsoa (voit myös esim. päivittää vanhempaan versioon antamalla update-komennolle revision-parametrin. Tämän ja monen muun parametrin käyttö selviää komentamalla svn help komento.
Muutama hyödyllinen komento vielä:
Loput kysymykset selvinnevät Version Control With Subversion-kirjasta, joka löytyy kokonaan netistä.
Normaalisti Subversion osaa automaattisesti yhdistää monen ihmisen jopa samaan tiedostoon tekemät muutokset, mutta jos samaa kohtaa tiedostossa on editoinut useampi ihminen, syntyy konflikti. Konflikti tulee update-vaiheessa (C-kirjain rivin alussa), kun olet tehnyt työkopioon muutoksia jotka ovat ristiriidassa kannassa olevan version kanssa, eikä committia voi tehdä ennen kuin konflikti on selvitetty. Kantaan ei siis koskaan päädy konfliktissa olevia tiedostoja. Konfliktit näet myös status-komennolla.
Kun konflikti syntyy, Subversion luo tiedoston rinnalle kolme uutta tiedostoa: tiedosto.mine ja kaksi tiedosto.r## -nimistä, jossa ## on versio. "mine" on oma versiosi, siis se johon olit tehnyt muutokset. Kaksi versiolla varustettua tiedostoa ovat kannasta nyt tuleva tiedosto joka on ristiriidassa muutoksien kanssa (suurempi numero) ja edellinen, ristiriidaton versio (pienempi numero). Lisäksi tiedostossa itsessään on merkitty ristiriitaiset kohdat.
Konfliktin ratkaisemiseksi joko kopioi jokin kolmesta ylimääräisestä tiedostosta varsinaisen tiedoston päälle (jos haluat säilyttää jonkun niistä sellaisenaan), tai editoi varsinaista tiedostoa ja editoi ristiriitaiset kohdat käsin kuntoon. Sen jälkeen käytä komentoa resolved, jolla kerrot Subversionille, että olet ratkaissut konfliktin.